ΘΗΨ2 HTML Forms & PHP Scripts
Forms Γενικά οι φόρμεσ είναι ςτοιχεία που χρθςιμοποιοφμε για να επικοινωνεί ο επιςκζπτθσ τθσ ιςτοςελίδασ με τον εξυπθρετθτι (Server). Συνικωσ ςε αυτιν περιλαμβάνονται διαφόρων τφπων πεδία ειςαγωγισ ςτοιχείων, βοθκθτικό κείμενο και πλικτρα ελζγχου
Forms Γενικι μορφι ετικζτασ form ςτθν Html5: <form> First name:<br> <input type="text" name="firstname"><br> Last name:<br> <input type="text" name="lastname"><br> <input type="radio" name="gender" value="male" checked> Male <br> <input type="radio" name="gender" value="female"> Female<br> </form>
Διάφοροι τφποι πεδίων ςτοιχείου input
Διάφοροι τφποι πεδίων ςτοιχείου input
Διάφοροι τφποι πεδίων ςτοιχείου input
Στοιχείο Select <select name="cars" size="4" multiple>
Στοιχείo List
Στοιχείο Button
Άςκθςθ 1 Να δθμιουργιςετε ζνα αρχείο html το οποίο να εμφανίηει τθν φόρμα ειςαγωγισ ςτοιχείων του διπλανοφ ςχιματοσ.
Άςκθςθ 2 Να δθμιουργιςετε ζνα αρχείο html το οποίο να εμφανίηει τθν φόρμα ειςαγωγισ ςτοιχείων του διπλανοφ ςχιματοσ.
Forms Παράμετροι Action και Target : <form action="/action_page.php" target="_blank"> action: Ορίηει τθν ενζργεια που πρζπει να εκτελεςτεί όταν υποβλθκεί το ζντυπο. Στο παράδειγμα, τα δεδομζνα φόρμασ αποςτζλλονται ςε μια ςελίδα του διακομιςτι που ονομάηεται "/action_page.php". Αυτι θ ςελίδα περιζχει ζνα ςενάριο πλευράσ διακομιςτι που χειρίηεται τα δεδομζνα φόρμασ: Target: Κακορίηει εάν το αποτζλεςμα που κα υποβλθκεί κα ανοίξει ςε μια νζα καρτζλα προγράμματοσ περιιγθςθσ, ζνα πλαίςιο ι ςτο τρζχον παράκυρο. Η προεπιλεγμζνθ τιμι είναι "_self". Άλλεσ επιλογζσ : "_blank", "_parent", "_top"
Forms Παράμετροσ Method: <form action="/action_page.php" method="get"> <form action="/action_page.php" method="post"> Method : Κακορίηει τθ μζκοδο HTTP (GET ι POST) που κα χρθςιμοποιθκεί κατά τθν υποβολι των δεδομζνων φόρμασ. Η προεπιλεγμζνθ μζκοδοσ κατά τθν υποβολι δεδομζνων φόρμασ είναι GET. Ωςτόςο, όταν χρθςιμοποιείται το GET, τα δεδομζνα τθσ φόρμασ που κα υποβλθκοφν κα είναι ορατά ςτο πεδίο διεφκυνςθσ ςελίδασ
Forms Σθμειϊςεισ για τθ GET: Προςκζτει δεδομζνα φόρμασ ςτθ διεφκυνςθ URL ςε ηεφγθ ονόματοσ / τιμισ. Το μικοσ μιασ διεφκυνςθσ URL είναι περιοριςμζνο (περίπου 3000 χαρακτιρεσ) Ποτζ μθν χρθςιμοποιείτε το GET για τθν αποςτολι ευαίςκθτων δεδομζνων! (κα είναι ορατό ςτθ διεφκυνςθ URL) Χριςιμο για υποβολζσ φόρμασ όπου ζνασ χριςτθσ κζλει να κάνει ςελιδοδείκτθ του αποτελζςματοσ Η GET είναι καλφτερο για μθ αςφαλι δεδομζνα, όπωσ οι ςυμβολοςειρζσ ερωτιςεων ςτο Google
Forms Σθμειϊςεισ για τθ POST: Χρθςιμοποιείτε τθν POST, εάν τα δεδομζνα τθσ φόρμασ περιζχουν ευαίςκθτεσ ι προςωπικζσ πλθροφορίεσ. Η μζκοδοσ POST δεν εμφανίηει τα δεδομζνα φόρμασ που υποβλικθκαν ςτο πεδίο διεφκυνςθσ ςελίδασ. Η POST δεν ζχει περιοριςμοφσ μεγζκουσ και μπορεί να χρθςιμοποιθκεί για τθν αποςτολι μεγάλων ποςοτιτων δεδομζνων. Οι υποβολζσ φορμϊν με POST δεν μποροφν να επιςθμανκοφν με ςελιδοδείκτθ
Forms Παράμετροσ name: <form action="/action_page.php" method="post"> <input type="text" value= Aristos"><br> <input type="text" name="lastname" value= Pashias"><br> name: Κάκε πεδίο ειςαγωγισ πρζπει να ζχει ζνα χαρακτθριςτικό όνομα που πρζπει να υποβλθκεί. Εάν το χαρακτθριςτικό όνομα παραλείπεται, τα δεδομζνα αυτοφ του πεδίου ειςαγωγισ δεν κα αποςταλοφν κακόλου. Αυτό το παράδειγμα κα υποβάλει μόνο το πεδίο ειςαγωγισ lastname":
Client site html form Index.html <html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name"><br> E-mail: <input type="text" name="email"><br> <input type="submit"> </form> </body> </html>
Server site PHP Scripting code. welcome.php (Post) <html> <body> Welcome <?php echo $_POST["name"];?><br> Your email address is: <?php echo $_POST["email"];?> </body> </html>
Server site PHP Scripting code. welcome.php (Get) <html> <body> Welcome <?php echo $_GET["name"];?><br> Your email address is: <?php echo $_GET["email"];?> </body> </html>
Παράδειγμα με GET. welcome.php (Get) <form action="examp2.php" method="get"> <div><label for="firstname">first name: <input type="text" name="firstname id="firstname"/> </label> </div> <div><input type="submit" value="submit"/></div> </form> <html> <body> <?php $thename = $_GET['firstname']; echo "Καληςπέρα, "; echo $thename;?> </body> </html>
Post Vs Get Τόζν ε GET όζν θαη ε POST δεκηνπξγνύλ έλαλ πίλαθα ν νπνίνο πεξηέρεη δεύγε θιεηδηώλ / ηηκώλ (key/value), όπνπ keys είλαη ηα νλόκαηα ηωλ ζηνηρείωλ ειέγρνπ θαη value είλαη ηα δεδνκέλα εηζόδνπ από ην ρξήζηε. (Array (key0 => value0, key1 => value1,... key10 => value10 ). Ο Τόζν ε GET όζν θαη ε POST αληηκεηωπίδνληαη ωο superglobals πίλαθεο κεηαβιεηώλ κε νλόκαηα $_GET θαη $_POST, πνπ ζεκαίλεη όηη είλαη πάληα πξνζβάζηκα από νπνηαδήπνηε ιεηηνπξγία, ηάμε ή αξρείν ρωξίο λα ρξεηάδεηαη λα θάλεηε θάηη ηδηαίηεξν. Τν $ _GET είλαη έλαο πίλαθαο κεηαβιεηώλ πνπ κεηαθέξνληαη ζην ηξέρνλ ζελάξην κέζω ηωλ παξακέηξωλ δηεύζπλζεο URL. Τν $ _POST είλαη έλαο πίλαθαο κεηαβιεηώλ πνπ κεηαθέξνληαη ζην ηξέρνλ ζελάξην κέζω ηεο κεζόδνπ POST HTTP.
Post Vs Get GET κπνξνύλ λα απνζεθεπηνύλ πξνζωξηλά παξακέλνπλ ζην ηζηνξηθό ηνπ πξνγξάκκαηνο πεξηήγεζεο κπνξνύλ λα επηζεκαλζνύλ κε ζειηδνδείθηε δελ ζα πξέπεη πνηέ λα ρξεζηκνπνηνύληαη γηα κεηαθνξά επαίζζεηωλ δεδνκέλωλ έρνπλ πεξηνξηζκνύο κήθνπο POST Δελ απνζεθεύνληαη πξνζωξηλά Δελ παξακέλνπλ ζην ηζηνξηθό ηνπ πξνγξάκκαηνο πεξηήγεζεο Δελ κπνξνύλ λα επηζεκαλζνύλ κε ζειηδνδείθηε Μπνξνύλ λα ρξεζηκνπνηνύληαη γηα κεηαθνξά επαίζζεηωλ δεδνκέλωλ Δελ έρνπλ πεξηνξηζκνύο κήθνπο
Άςκθςθ 3 Να γράψετε ζνα αρχείο html με το οποίο να εμφανίηετε τθν φόρμα τθσ εικόνασ 1 και να το ςυνδζςετε με ζνα δεφτερο αρχείο PHP, το οποίο να διαβάηει τα πεδία που πλθκτρολογικθκαν ςτθ φόρμα και να εμφανίηει το ανάλογο μινυμα όπωσ φαίνεται ςτθν εικόνα 2. Να χρθςιμοποιιςετε τθν μζκοδο POST Εικόνα 1 Εικόνα 2
Άςκθςθ 4 Να γράψετε ζνα αρχείο html με το οποίο να εμφανίηετε τθν φόρμα τθσ εικόνασ 1 και να το ςυνδζςετε με ζνα δεφτερο αρχείο PHP, το οποίο να διαβάηει τα πεδία που πλθκτρολογικθκαν ςτθ φόρμα και να εμφανίηει το ανάλογο μινυμα όπωσ φαίνεται ςτθν εικόνα 2. Να χρθςιμοποιιςετε τθν μζκοδο GET Εικόνα 1 Εικόνα 2
Άςκθςθ 5 Να γράψετε ζνα αρχείο html με το οποίο να εμφανίηετε τθν φόρμα τθσ εικόνασ 1 και να το ςυνδζςετε με ζνα δεφτερο αρχείο PHP, το οποίο να διαβάηει τα πεδία που πλθκτρολογικθκαν ςτθ φόρμα και να εμφανίηει το ανάλογο μινυμα όπωσ φαίνεται ςτθν εικόνα 2. Να χρθςιμοποιιςετε τθν μζκοδο POST Εικόνα 1 Εικόνα 2
Άςκθςθ 5 Να γράψετε ζνα αρχείο html με το οποίο να εμφανίηετε τθν φόρμα τθσ εικόνασ 1 και να το ςυνδζςετε με ζνα δεφτερο αρχείο PHP, το οποίο να διαβάηει τα πεδία που πλθκτρολογικθκαν ςτθ φόρμα και να εμφανίηει το ανάλογο μινυμα όπωσ φαίνεται ςτθν εικόνα 2. Να χρθςιμοποιιςετε τθν μζκοδο GET Εικόνα 1 Εικόνα 2
Ζλεγχοσ ςτοιχείων φόρμασ Συνάρτθςθ empty(): Ελζγχει αν θ μεταβλθτι ζχει ωσ τιμι ( empty string, 0, NULL ι False). Επιςτρζφει FALSE αν θ μεταβλθτι ζχει non-empty ι non-zero τιμι. Συνάρτθςθ isset(): Ελζγχει αν θ μεταβλθτι ζχει πάρει τιμι, θ οποία μπορεί να είναι ακόμθ και False, 0 ι Empty string, αλλά όχι NULL. Επιςτρζφει TRUE αν θ μεταβλθτι υπάρχει και FALSE ςε οποιαδιποτε άλλθ περίπτωςθ. Συνάρτθςθ unset(): μπορείτε να ελευκερϊςετε μια μεταβλθτι $_POST από τθν τιμι που ζχει πάρει.
Έλεγχος στοιχείων φόρμας - Παράδειγμα <?php $var = 0; //$var = $_GET[ myage'] if (empty($var)) { echo $var is either 0, empty, or not set at all ; } //Επιςτρέφει true αφού η $var είναι 0 if (isset($var)) { echo $var is set even though it is empty ; } // Επιςτρέφει true αφού η $var υπάρχει unset ($_POST[ variable_name ]);?>
Επικφρωςθ ςτοιχείων φόρμασ Μεταβίβαςθ όλων των μεταβλθτϊν μζςω τθσ λειτουργίασ htmlspecialchars () τθσ PHP ϊςτε αν ζνασ χριςτθσ προςπακιςει να υποβάλει ζνα script ςε ζνα πεδίο κειμζνου πχ: <script> location.href ('http://www.hacked.com') </ script> να μθν εκτελεςτεί, επειδι κα αποκθκευτεί ωσ : & lt; script & gt; location.href ('http://www.hacked.com') & lt; / script & gt; Διαγραφι των περιττϊν χαρακτιρων από τα δεδομζνα ειςόδου του χριςτθ με τθ ςυνάρτθςθ PHP trim () Αφαίρεςθ των backslash (\) από τα δεδομζνα ειςόδου του χριςτθ με τθ λειτουργία PHP stripslashes ()
Επικφρωςθ ςτοιχείων φόρμασ - Παράδειγμα <?php // define variables and set to empty values $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_post["name"]); $email = test_input($_post["email"]); $website = test_input($_post["website"]); $comment = test_input($_post["comment"]); $gender = test_input($_post["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }?>