PHP και οι HTML φόρμες
Η γλώσσα PHP (Hypertext Preprocessor) είναι μια γλώσσα προγραμματισμού που επιτρέπει στους web developers να δημιουργήσουν δυναμικές ιστοσελίδες, δηλαδή σελίδες με περιεχόμενο που αλληλεπιδρά με βάσεις δεδομένων. Η γλώσσα PHP χρησιμοποιείται κατά κύριο λόγο για την ανάπτυξη εφαρμογών λογισμικού web-based.
Στο άρθρο αυτό θα δούμε πως συσχετίζεται η γλώσσα PHP με μια ιστοσελίδα που περιέχει φόρμα (form) φτιαγμένη σε HTML (φόρμα: ένα έγγραφο που περιέχει συνήθως άσπρα πεδία, ώστε ο χρήστης να μπορεί να γεμίσει τα δεδομένα ή/και ο χρήστης να μπορεί να επιλέξει κάποια δεδομένα).
PHP και δυναμικές ιστοσελίδες
Οι server-side scripting γλώσσες, όπως είναι η PHP, σχετικά με την αλληλεπίδραση τους με τον χρήστη (user interaction), λειτουργεί ως εξής: ο χρήστης στέλνει αίτηση (request) στον server και ο server απαντάει (response) με την δημιουργία -σε πραγματικό χρόνο-, μιας δυναμικής ιστοσελίδας (μοντέλο client – server), όπως φαίνεται στην παρακάτω εικόνα:
Σημαντικό στην αλληλεπίδραση με τον χρήστη στην PHP είναι να καταλάβουμε τον τρόπο αποστολής πληροφοριών μαζί με την αίτηση του χρήστη για μια νέα ιστοσελίδα (web page). Ο απλούστερος τρόπος αποστολής πληροφορίας μαζί κατά την αίτηση, είναι με χρήση μιας URL query συμβολοσειράς (URL ερωτήματος).
Πολλές φορές σε ένα URL, θα έχετε προσέξει το path μιας ιστοσελίδας να συνοδεύεται στο τέλος με τον χαρακτήρα ? και κάποια συμβολοσειρά π.χ. hello.php?name=Constantin
. Στο παράδειγμα αυτό και μετά τον χαρακτήρα ?, βλέπουμε μια μεταβλητή και την τιμή της. Η μεταβλητή ονομάζεται name και η τιμή της είναι Constantin. Για παράδειγμα, στον φυλλομετρητή firefox θα φαινόταν κάπως έτσι:
Ας ρίξουμε μια ματιά στο αρχείο hello.php που καλέσαμε με το παραπάνω παράδειγμα:
<?php // έναρξη κώδικα php echo("Γεια σου αγαπημένε μου φίλε, $name!"); ?> <!-- λήξη κώδικα php -->
Η εκτέλεση του κώδικα θα είχε την εξής εκτύπωση:
Γεια σου αγαπημένε μου φίλε, Constantin!
Θα μπορούσαμε να στείλουμε και περισσότερες από μια μεταβλητές και τιμές σε ένα query (ερώτημα) χωρισμένες με τον χαρακτήρα & π.χ. hello2.php?name=Κωνσταντίνος&city=Αθήνα&area=κέντρο.
Σε αυτό το παράδειγμα, στο αρχείο hello2.php που καλέσαμε θα μπορούσε να είναι γραμμένος ο εξής κώδικας:
<?php // έναρξη κώδικα php echo("Γεια σου αγαπημένε μου φίλε, $name! που ζεις στην πόλη $city στην περιοχή $area."); ?> <!-- λήξη κώδικα php -->
Η εκτέλεση του κώδικα θα είχε την εξής εκτύπωση:
Γεια σου αγαπημένε μου φίλε, Κωνσταντίνος! που ζεις στην πόλη Αθήνα στην περιοχή κέντρο.
PHP και οι HTML φόρμες – Προετοιμασία φόρμας
Για να μπορεί ο χρήστης να καταχωρήσει μια τιμή, θα πρέπει να χρησιμοποιήσουμε μια φόρμα – ας δούμε τον παρακάτω κώδικα σε HTML που δημιουργεί μια φόρμα με πεδία για να συμπληρώσει ο χρήστης:
<form action="hello3.php" method="GET"> <!-- έναρξη φόρμας --> Όνομα: <input name="firstname" type="text" /> <!-- μεταβλητή firstname --> Πόλη: <input name="city" type="text" /> <!-- μεταβλητή city --> Περιοχή: <input name="area" type="text" /> <!-- μεταβλητή area --> <input type="submit" value="αποστολή" /> </form> <!-- λήξη φόρμας -->
Η εκτέλεση του παραπάνω κώδικα θα φαινόταν σε μια ιστοσελίδα ως εξής:
Παρατηρήστε ότι σε κάθε πεδίο κειμένου της φόρμας με την παράμετρο NAME, έχουμε συνδέσει την τιμή που θα πάρει το εκάστοτε πεδίο με ένα όνομα μεταβλητής (για παράδειγμα με την εντολή <input name="city" type="text" />
όποια τιμή καταχωρήσει ο χρήστης σε αυτό το πεδίο, θα είναι η τιμή της μεταβλητής city.)
PHP και οι HTML φόρμες – παραλαβή των στοιχείων της φόρμας
Όταν επιλέξουμε το κουμπί αποστολής στην προηγούμενη φόρμα, ο φυλλομετρητής θα καλέσει προς εκτέλεση το αρχείο hello3.php και θα προσθέσει αυτόματα τις μεταβλητές και τις τιμές τους στο query string κατά την κλήση του.
Η κλήση του αρχείου hello3.php φαίνεται στην εξής εντόλη του προηγούμενου κώδικα: action="hello3.php" method="GET"
. Η τιμή GET, όπως την χρησιμοποιήσαμε, θα εμφανίσει τις μεταβλητές και τις τιμές τους στο query string στο URL του φυλλομετρητή.
Τέλος, εφόσον πλέον γνωρίζουμε τον τρόπο να στέλνουμε σε μια σελίδα .php τα ονόματα των μεταβλητών και τις τιμές τους από μια φόρμα, μπορούμε να δημιουργήσουμε κώδικα PHP που κάνει κάτι με αυτές. Για παράδειγμα το αρχείο hello3.php, θα μπορούσε να περιέχει τον εξής κώδικα:
<?php // έναρξη κώδικα php echo("Τα στοιχεία που συμπληρώσατε στην φόρμα είναι: $name, $city, $area"); ?> <!-- λήξη κώδικα php -->
Η εκτέλεση του κώδικα θα είχε την εξής εκτύπωση:
Τα στοιχεία που συμπληρώσατε στην φόρμα είναι: Γιώργος, Λονδίνο, Bloomsburry
PHP και οι HTML φόρμες – GET ή POST
Τι θα συνέβαινε αν είχαμε μια ετικέτα <textarea> στη φόρμα για να μπορεί ο χρήστης να καταχωρήσει μια μεγάλη ποσότητα κειμένου; θα φαινόταν στο query string στο URL του φυλλομετρητή; Ένα τέτοιο URL που περιέχει πολλές παραγράφους κειμένου στο query string του, θα ξεπερνάει κατά πολύ το μέγιστο μήκος του URL στους σημερινούς φυλλομετρητές, συνεπώς αυτό δεν είναι εφικτό.
Η εναλλακτική λύση είναι στείλουμε τις συνοδευτικές πληροφορίες αόρατα, στο παρασκήνιο. Ο κώδικας για κάτι τέτοιο θα είναι ακριβώς ο ίδιος, αλλά αντί να θέσουμε την ιδιότητα METHOD της φόρμας ίση με GET, την ορίζουμε ίση με POST. Δηλαδή:
<form action="hello3.php" method="POST"> <!-- αποστολή πληροφοριών στο παρασκήνιο με την μέθοδο POST --> Όνομα: <input name="firstname" type="text" /> <!-- μεταβλητή firstname --> Πόλη: <input name="city" type="text" /> <!-- μεταβλητή city --> Περιοχή: <input name="area" type="text" /> <!-- μεταβλητή area --> <input type="submit" value="αποστολή" /> </form> <!-- λήξη φόρμας -->
Αυτή η φόρμα είναι λειτουργικά ισοδύναμη με την προηγούμενη όπως είδαμε, απλά οι συνοδευτικές πληροφορίες της αποστολής δεν φαίνονται πουθενά. Το ίδιο κάνουμε όταν θέλουμε να συμπεριλάβουμε όχι μόνο πολλές πληροφορίες, αλλά και ευαίσθητες ή προσωπικές πληροφορίες όπως για παράδειγμα κωδικούς εισόδου (passwords), τραπεζικά στοιχεία κ.α.