Φόρμες HTML

Οι φόρμες χρησιμεύουν στην php κυρίως για την εισαγωγή δεδομένων και στοιχείων που μπορεί ένας χρήστης να πληκτρολογήσει ή να επιλέξει. Τα στοιχεία αυτά θα αποσταλούν ύστερα σε ένα αρχείο php το οποίο θα τα διαχειριστεί ανάλογα.

Για να δημιουργηθεί μια φόρμα θα πρέπει να χρησιμοποιηθεί η ετικέτα «form» η οποία θα πρέπει να έχει τις ιδιότητες «action» και «method».

Η «action» λειτουργεί ως δείκτης και μας λέει σε ποιο αρχείο php στον εξυπηρετητή θα αποσταλούν τα στοιχεία . πχ.

action="useregister.php"

Η «method» καθορίζει τον τρόπο με τον οποίο θα αποστέλλονται τα δεδομένα, πχ:

method="post"
method="get"

Για να αποσταλούν τα στοιχεία θα πρέπει ο χρήστης να κάνει κλικ στο κουμπί submit.

<form action="formtest.php" method="post">
 Όνομα: <input type="text" name="userfname" />
 Επώνυμο: <input type="text" name="userlname" />
 <input type="submit" value="Αποστολή" />
</form>
Το όνομα σας είναι <?php echo $_POST['userfname']; ?>
<br />
Το επώνυμο σας είναι <?php echo $_POST['userlname']; ?>

Τόσο το αρχείο form.html όσο και το αρχείο test.php τα τοποθετούμε στο ίδιο directory στον server μας.

Αν πληκτρολογήσουμε «Κωνσταντίνος» στο πεδίο του ονόματος και «Παπαδόπουλος» στο πεδίο του επωνύμου, και ύστερα πιέσουμε το κουμπί «Αποστολή» θα εμφανιστεί το εξής αποτέλεσμα:

$_GET και $_POST

Όπως προσέξατε και στο προηγούμενο παράδειγμα για να μπορέσουμε να χρησιμοποιήσουμε τα στοιχεία που εισάγαμε στην φόρμα έπρεπε να κάνουμε χρήση των μεταβλητών «$_POST» στο αρχείο php όπου επεξεργαζόμασταν τα δεδομένα αυτά.

Η «$_GET» χρησιμοποιείται όταν τα στοιχεία αποστέλλονται με την μέθοδο «get» και

  • Τα στοιχεία παραμένουν στο ιστορικό του φυλλομετρητή (browser) γιατί είναι μέρος του url,
  • Μπορούν να αποθηκευτούν ως σελιδοδείκτης,
  • Δεν είναι ασφαλές για την μεταφορά κωδικών ή ευαίσθητων δεδομένων,
  • Υπάρχει όριο 7607 μέγιστο πλήθος χαρακτήρων,
  • Παράδειγμα: test.php?userfname=κώστας.

Η «$_POST» χρησιμοποιείται όταν τα στοιχεία αποστέλλονται με την μέθοδο «post», και

  • Τα στοιχεία δεν αποθηκεύονται στο ιστορικό του φυλλομετρητή browser,
  • Δεν μπορούν να αποθηκευτούν ως σελιδοδείκτες,
  • Χρησιμοποιείται για την αποστολή κωδικών και ευαίσθητων δεδομένων,
  • Υπάρχει όριο 8mb μέγιστο μέγεθος για το κάθε POST αίτημα,
  • Παράδειγμα: test.php.

Τέλος υπάρχει και η μεταβλητή «$_REQUEST» η οποία χρησιμοποιείται και για τις δύο περιπτώσεις ανεξάρτητα ποια μέθοδος έχει χρησιμοποιηθεί, αντικαθιστώντας τις $_GET, $_POST και $_COOKIE

Cookies

Τα cookies είναι μικρά αρχεία τα οποία αποθηκεύονται τοπικά στον υπολογιστή του χρήστη και περιέχει συνήθως δεδομένα σχετικά με την ταυτότητα του και το προφίλ του.

Έχοντας αποθηκευμένα αυτά τα αρχεία είναι δυνατό ένας χρήστης να αναγνωρίζεται από μια διαδικτυακή εφαρμογή χωρίς να χρειάζεται ο ίδιος να εισέλθει σε αυτήν με το όνομα του και τον κωδικό του.

Τα cookies μπορούν επίσης να χρησιμοποιηθούν για να καταγράψουν την δραστηριότητα ενός χρήστη, όπως για παράδειγμα αν έχει πάρει μέρος σε διαδικτυακές ψηφοφορίες, προσωπικές ρυθμίσεις π.χ. χρωματικά θέματα… και άλλα.

Συνάρτηση setcookie()

Μας επιτρέπει να δημιουργήσουμε ένα cookie στο μηχάνημα του χρήστη. Παίρνει 6 παραμέτρους:

setcookie(όνομα, τιμή, λήξη, διαδρομή, domain, ασφάλεια);
  1. Όνομα: Το όνομα του cookie.
  2. Τιμή: Τα δεδομένα του.
  3. Λήξη: Ημερομηνία λήξης του.
  4. Διαδρομή: Η διαδρομή για το οποίο το cookie είναι έγκυρο. Συνήθως αφήνεται κενό και η προκαθορισμένη τιμή είναι το path του εγγράφου που δημιούργησε το cookie. Πχ «/login».
  5. Domain: Το domain name για το οποίο το cookie είναι έγκυρο. Συνήθως αφήνεται κενό και προεπιλεγμένα διαλέγεται το domain name του εγγράφου που το δημιούργησε. Πχ «www.google.com».
  6. Ασφάλεια: true ή false για να υποδείξει ότι το cookie χρησιμοποιείται σε ασφαλείς συνδέσεις όπως SSL. Το προκαθορισμένο είναι false.
<?php
 setcookie("name","kostas",time()+3600);
 echo "ok";
?>

Στις ιδιότητες του ιστότοπου από τις ρυθμίσεις του firefox, μπορούμε να δούμε πως, δημιουργήθηκε ένα cookie με όνομα «name» και τιμή «kostas» το οποίο θα έληγε 3600 δευτερόλεπτα από την στιγμή της δημιουργίας του.

Μεταβλητή $_COOKIE

Τα cookies λειτουργούν ως καταχωρητές μεταβλητών, έτσι ώστε να μπορούμε αργότερα να έχουμε πρόσβαση σε δεδομένα που αποθηκέυσαμε σε αυτά. Ο τρόπος με τον οποίο γίνεται στην php είναι μέσω των μεταβλητών «$_COOKIE» όπως τις «$_GET» και «$_POST» που είδαμε παραπάνω.

<?php
 echo $_COOKIE["name"];
?>

Αν το cookie (με όνομα) «name» υπάρχει τοπικά στο μηχάνημα του χρήστη τότε επιστρέφεται η τιμή του, που στην προκειμένη είναι «kostas».

Αν θέλουμε να διαβάσουμε ΟΛΑ τα cookies που υπάρχουν στο εν λόγο μηχάνημα τότε χρησιμοποιούμε σκέτη την «$_COOKIE» η οποία επιστρέφει έναν πίνακα με όλα τα αποτελέσματα. Πχ:

<?php
 print_r($_COOKIE);
?>

Συνάρτηση isset()

Καλό είναι για προγραμματιστικούς λόγους να ελέγχεται πριν την χρήση του ένα cookie για την ύπαρξη του με την συνάρτηση isset(). Η συγκεκριμένη συνάρτηση ελέγχει αν υπάρχει η μεταβλητή και επιστρέφει True, σε διαφορετική περίπτωση επιστρέφει False. Πχ:

<?php
 if(isset($_COOKIE['name'])){
  echo "Καλωσόρισες ".$_COOKIE['name']."!";
 }else{
  echo "Καλοσόρισες επισκέπτη!";
 }
?>
Εδώ να σημειώσουμε οτι η isset μπορεί να χρησιμοποιηθεί για οποιοδήποτε μεταβητή και όχι μόνο τις ειδικές μεταβλητές $_COOKIE κ.τ.λ.

Sessions

Αν στην php κάποιος μεταφερθεί από την σελίδα Α στην σελίδα Β, οι μεταβλητές της Α δεν θα είναι προσπελάσιμες από την Β. Γι’ αυτό τον λόγο τα sessions χρησιμοποιούνται ώστε να υπάρχουν global μεταβλητές στις οποίες θα έχουν πρόσβαση όλες οι σελίδες.

Η διαφορά των sessions απο των cookies βρίσκεται στο ότι τα sessions διατηρούνται στην πλευρά του εξυπηρετητή ενώ τα cookies στην πλευρά του πελάτη, αυτό σημαίνει οτι τα sessions ειναι πιο ασφαλή σε σύγκριση με τα cookies τα οποια μπορούν να αλλάξουν απο κακόβουλους χρήστες.

Για να χρησιμοποιηθούν τα sessions θα πρέπει ο υπολογιστής του χρήστη να δέχεται cookies καθώς επίσης και όλα τα αρχεία php που χρησιμοποιούν session μεταβλητές θα πρέπει να αρχίζουν με την εντολή session start().

session_start() και $_SESSION

Ένα session ξεκινά με την εντολή session_start() η οποία σηματοδοτεί και την έναρξη του. Η συγκεκριμένη εντολή δημιουργεί ένα cookie στο μηχάνημα του επισκέπτη με όνομα PHPSESSID και μια τυχαία αλφαριθμητικά τιμή της μορφής: mqqee34fjsdfhhe342d.

Για να αποκτήσουμε πρόσβαση σε αυτή την τιμή χρησιμοποιούμε την εντολή session_id(). Με την global μεταβλητή «$_SESSION» μπορούμε να δημιουργήσουμε δικό μας session με όνομα και τιμή ή να χρησιμοποιήσουμε το ίδιο το id που μας προσφέρει η php.

<?php
 session_start();
 $_SESSION['visitorid']=session_id();
 
 if(isset($_SESSION['visitorid']) && $_SESSION['visitorid']===session_id()){
  echo "Καλωσόρισες";
 }else{
  echo "Δεν υπάρχει session";
 }
?>

unset και session_destroy()

Η unset() αναλαμβάνει να διαγράψει μια μεταβλητή είτε αυτή πρόκειται να ειναι κάποιο ειδικό session ή cookie, ή ακόμη και μια απλή μεταβλητή.

<?php
 session_start();
 unset($_SESSION['visitorid']);
?>

Η session_destroy() διαγράφει όλα τα αποθηκευμένα δεδομένα από τον υπολογιστή του χρήστη σχετικά με το session.

<?php
 session_start();
 session_destroy();
?>