...
Ensimmäiseksi tarkistamme onko käyttäjän lähettämää dataa olemassa. Se tehdään selvittämällä onko tietoihin liitetty aikaisemmin mainitsemani action-kenttä. Jos sitä ei suoriteta, tapahtuu virhe lähetetyn datan puuttuessa.
Code Block |
---|
// Check if there's post data if (isset($_POST['action'])){ ... } |
Edellisen ehtolausekkeen sisältä löytyy varsinainen käyttäjän lähettämän tiedon käsittely.
Toiminto valitaan selvittämällä action-kentän arvo, jonka PHP on tallentanut post-datan sisältävään $_POST-muuttujaan.
Ensimmäiseksi käsittelemme tapauksen, jossa käyttäjä haluaa lisätä uuden viestin tietokantaan. Viestin erikoismerkit muunnetaan HTML-muotoon htmlspecialchars-funktiolla, jotta käyttäjän ei olisi mahdollista liittää omaa koodia sivuille viestien välityksellä.
PHP:n DBO-kirjaston prepare-metodi huolehtii siitä, ettei käyttäjän ole mahdollista syöttää palveluun omia SQL-komentoja.
Code Block |
---|
// Choose the correct action based on the value of the $_POST['action'] if ($_POST['action'] == 'new_message') { // Add a message to the database // prepare query // save it with htmlspecialchars in order to stop clever javascripting and HTML-tags ;) $query = $mysql_conn->prepare("INSERT INTO peukku_viestit (message) VALUES ('" . htmlspecialchars($_POST['message']) . "')"); // run query $query->execute(); //remove post data by redirecting to ourselves header( 'Location: index.php' ) ; } |
Peukku ylös:
Code Block |
---|
else if ($_POST['action'] == 'peukuta') { // Update +rating to the database // prepare query $query = $mysql_conn->prepare("UPDATE peukku_viestit SET rating = rating + 1 WHERE id = '" . $_POST['id'] . "'"); // run query $query->execute(); //remove post data by redirecting to ourselves header( 'Location: index.php' ) ; } |
Peukku alas:
Code Block |
---|
else if ($_POST['action'] == 'peukuta_nega') { // Update -rating to the database // prepare query $query = $mysql_conn->prepare("UPDATE peukku_viestit SET rating = rating - 1 WHERE id = '" . $_POST['id'] . "'"); // run query $query->execute(); //remove post data by redirecting to ourselves header( 'Location: index.php' ) ; } } |