...
Code Block |
---|
//connect to database
try
{
$mysql_conn = new PDO ("mysql:host=localhost;dbname=koala", "vompatti", "opossumi");
}catch (PDOException $e){
die("Virhe: " . $e->getMessage());
}
// error handling
$mysql_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// encoding
$mysql_conn->exec("SET NAMES utf8");
|
...
Code Block |
---|
//create table if doesn't exist try { $mysql_conn->exec("CREATE TABLE IF NOT EXISTS peukku_viestit ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message VARCHAR(500), parent INT DEFAULT -1, rating INT DEFAULT 0, user_id INT, submit_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); }catch (PDOException $e){ die("Virhe: " . $e->getMessage()); } |
...
Code Block |
---|
// create session cookie session_start(); if (!isset($_SESSION['session']) || !isset($_SESSION['token'])) { // this variable is to make sure we get post from correct form // we will add it to every form as a hidden field $_SESSION['token'] = uniqid(md5(microtime()), true); // this is for making it harder to hijack one's session cookie // save ip and user agent which created the session $_SESSION['session'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); } |
2.2.2 Lähetetyn tiedon käsittely
...
Käsiteltyämme tiedot varmistamme, että käyttäjä ei voi lähettää tietoja uudestaan käyttämällä selaimen edellinen-toimintoa. Käytämme header-funktiota: header( 'Location: index.php')
. Koska muokkaamme suoraan sivun HTTP-otsaketta (HTTP header), tulee tämä tehdä ennen kuin yhtään HTML-koodia on tulostettu tiedostoon tai siitä seuraa virhe.
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' ) ; } } |
2.2.3 Sisällön muodostaminen
...
Code Block |
---|
// process results from query one row at a time $i=1; while ($rivi = $kysely->fetch(PDO::FETCH_ASSOC)) { echo "<hr/>" . $i . ". <br />Rating: " . $rivi["rating"] . " <br />Time: " . $rivi["submit_time"] . " <p>Message:<br />" . $rivi["message"] ."</p>"; $i++; } |
2.3 HTML ja CSS
Ensimmäinen vaihe html- koodauksessa oli luoda käyttöliittymäsuunnitelman (rautalangan) pohjalta elementit html- sivulle.
Tämän jälkeen luotiin css- tiedosto, jolla saatiin elementit suunnitelman mukaisesti paikoilleen ja selkeytettiin käyttöliittymää väreillä ja reunaviivoilla.
Html- pohjan ollessa valmis lisättiin php- toiminnallisuudet; uuden toiveen lisääminen, toiveiden plus / negatiivinen peukutus sekä toiveiden järjestäminen pisteytyksen mukaan.
Toiminnallisuuksien lisäämisen jälkeen niitä testattiin ja hienosäädettiin, jonka jälkeen voitiin aloittaa käyttöliittymän ja ulkoasun hiominen.