Φόρμες HTML. Μέθοδοι αποστολής δεδομένων στον διακομιστή με χρήση φόρμας. Η απλούστερη μορφή αποστολής δεδομένων μέσω email με χρήση HTML και PHP

Μία από τις πιο δημοφιλείς λειτουργίες στον ιστότοπο είναι η αίτηση ή η φόρμα παραγγελίας, τα δεδομένα από την οποία αποστέλλονται μέσω email στον ιδιοκτήτη του ιστότοπου. Κατά κανόνα, τέτοιες φόρμες είναι απλές και αποτελούνται από δύο ή τρία πεδία για την εισαγωγή δεδομένων. Πώς να δημιουργήσετε μια τέτοια φόρμα παραγγελίας; Αυτό απαιτεί τη χρήση γλώσσας σήμανσης HTML και γλώσσας προγραμματισμού PHP.

Η ίδια η γλώσσα σήμανσης HTML είναι απλή, απλά πρέπει να καταλάβετε πώς και πού να τοποθετήσετε ορισμένες ετικέτες. Με τη γλώσσα προγραμματισμού PHP, τα πράγματα είναι λίγο πιο περίπλοκα.

Για έναν προγραμματιστή, η δημιουργία μιας τέτοιας φόρμας δεν είναι δύσκολη, αλλά για έναν σχεδιαστή διάταξης HTML, ορισμένες ενέργειες μπορεί να φαίνονται δύσκολες.

Δημιουργήστε μια φόρμα υποβολής δεδομένων σε html

Η πρώτη γραμμή θα είναι η εξής

Αυτό είναι ένα πολύ σημαντικό στοιχείο της φόρμας. Σε αυτό υποδεικνύουμε πώς θα μεταφερθούν τα δεδομένα και σε ποιο αρχείο. Σε αυτήν την περίπτωση, όλα μεταφέρονται χρησιμοποιώντας τη μέθοδο POST στο αρχείο send.php. Το πρόγραμμα σε αυτό το αρχείο πρέπει αναλόγως να λάβει τα δεδομένα, θα περιέχονται στον πίνακα αναρτήσεων και θα τα στείλει στην καθορισμένη διεύθυνση email.

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

Ο τύπος της φόρμας είναι κείμενο, δηλαδή ο χρήστης θα μπορεί να εισάγει ή να αντιγράψει κείμενο εδώ από το πληκτρολόγιο. Η παράμετρος name περιέχει το όνομα της φόρμας. Σε αυτήν την περίπτωση, με αυτό το όνομα θα μεταδοθούν όλα όσα ο χρήστης εισήγαγε σε αυτό το πεδίο. Η παράμετρος κράτησης θέσης καθορίζει τι θα γραφεί σε αυτό το πεδίο ως επεξήγηση.

Επόμενη γραμμή:

Εδώ, σχεδόν όλα είναι ίδια, αλλά το όνομα του πεδίου είναι email και η εξήγηση είναι ότι ο χρήστης εισάγει τη διεύθυνση email του σε αυτή τη φόρμα.

Η επόμενη γραμμή θα είναι το κουμπί "αποστολή":

Και η τελευταία γραμμή στη φόρμα θα είναι η ετικέτα

Τώρα ας τα βάλουμε όλα μαζί.





Τώρα ας κάνουμε τα πεδία στη μορφή υποχρεωτικά. Έχουμε τον παρακάτω κωδικό:





Δημιουργήστε ένα αρχείο που δέχεται δεδομένα από τη φόρμα HTML

Αυτό θα είναι ένα αρχείο που ονομάζεται send.php

Στο αρχείο, στο πρώτο στάδιο, πρέπει να αποδεχτείτε δεδομένα από τον πίνακα αναρτήσεων. Για να γίνει αυτό, δημιουργούμε δύο μεταβλητές:

$fio = $_POST["fio"];
$email = $_POST["email"];

Τα ονόματα των μεταβλητών στην PHP προηγούνται από ένα σύμβολο $ και ένα ερωτηματικό τοποθετείται στο τέλος κάθε γραμμής. Το $_POST είναι ένας πίνακας στον οποίο αποστέλλονται δεδομένα από τη φόρμα. Στη φόρμα html, η μέθοδος αποστολής καθορίζεται ως μέθοδος = "post". Έτσι, δύο μεταβλητές από τη φόρμα html γίνονται δεκτές. Για να προστατεύσετε τον ιστότοπό σας, πρέπει να περάσετε αυτές τις μεταβλητές μέσα από πολλά φίλτρα - συναρτήσεις php.

Η πρώτη συνάρτηση θα μετατρέψει όλους τους χαρακτήρες που ο χρήστης θα προσπαθήσει να προσθέσει στη φόρμα:

Σε αυτή την περίπτωση, δεν δημιουργούνται νέες μεταβλητές στην php, αλλά χρησιμοποιούνται οι υπάρχουσες. Αυτό που θα κάνει το φίλτρο είναι να μεταμορφώσει τον χαρακτήρα "<" в "<". Также он поступить с другими символами, встречающимися в html коде.

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

$fio = urldcode($fio);
$email = urldcode($email);

Με την τρίτη συνάρτηση θα αφαιρέσουμε κενά από την αρχή και το τέλος της γραμμής, εάν υπάρχουν:

$fio = trim($fio);
$email = trim($email);

Υπάρχουν και άλλες λειτουργίες που σας επιτρέπουν να φιλτράρετε μεταβλητές php. Η χρήση τους εξαρτάται από το πόσο ανησυχείτε ότι ένας εισβολέας θα προσπαθήσει να προσθέσει κώδικα προγράμματος σε αυτήν τη φόρμα υποβολής email html.

Επικύρωση δεδομένων που μεταφέρονται από φόρμα HTML σε αρχείο PHP

Για να ελέγξετε εάν αυτός ο κωδικός λειτουργεί και εάν μεταφέρονται δεδομένα, μπορείτε απλώς να τον εμφανίσετε στην οθόνη χρησιμοποιώντας τη λειτουργία echo:

ηχώ $fio;
ηχώ "
";
ηχώ $fio;

Η δεύτερη γραμμή εδώ χρειάζεται για να διαχωρίσει την έξοδο των μεταβλητών php σε διαφορετικές γραμμές.

Αποστολή ληφθέντων δεδομένων από μια φόρμα HTML σε email με χρήση PHP

Για να στείλετε δεδομένα μέσω email, πρέπει να χρησιμοποιήσετε τη λειτουργία αλληλογραφίας στην PHP.

mail("σε ποια διεύθυνση να σταλεί", "θέμα της επιστολής", "Μήνυμα (σώμα της επιστολής)", "Από: από ποιο email αποστέλλεται η επιστολή \r\n");

Για παράδειγμα, πρέπει να στείλετε δεδομένα στο email του κατόχου ή του διαχειριστή του ιστότοπου [email προστατευμένο].

Το θέμα της επιστολής πρέπει να είναι σαφές και το μήνυμα της επιστολής πρέπει να περιέχει αυτό που ο χρήστης καθόρισε στη φόρμα HTML.

ταχυδρομείο(" [email προστατευμένο]", "Application from the site", "Full name:".$fio.". E-mail: ".$email ,"From: [email προστατευμένο]\r\n");

Είναι απαραίτητο να προσθέσετε μια συνθήκη που θα ελέγχει εάν η φόρμα στάλθηκε με χρήση PHP στην καθορισμένη διεύθυνση email.

αν (ταχυδρομείο(" [email προστατευμένο]", "Παραγγελία από τον ιστότοπο", "Ονοματεπώνυμο:".$fio.". E-mail: ".$email ,"From: [email προστατευμένο]\r\n"))
{
echo "το μήνυμα εστάλη με επιτυχία"?
) άλλο (
}

Έτσι, ο κώδικας προγράμματος του αρχείου send.php, που θα στέλνει δεδομένα φόρμας HTML στο email, θα μοιάζει με αυτό:

$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldcode($fio);
$email = urldcode($email);
$fio = trim($fio);
$email = trim($email);
//echo $fio;
//ηχώ "
";
//echo $email;
αν (ταχυδρομείο(" [email προστατευμένο]", "Application from the site", "Full name:".$fio.". E-mail: ".$email ,"From: [email προστατευμένο]\r\n"))
( echo "το μήνυμα εστάλη με επιτυχία"?
) άλλο (
echo "Παρουσιάστηκαν σφάλματα κατά την αποστολή του μηνύματος"
}?>

Τρεις γραμμές για να ελέγξετε εάν τα δεδομένα μεταφέρονται στο αρχείο σχολιάζονται. Εάν είναι απαραίτητο, μπορούν να αφαιρεθούν, καθώς χρειάζονταν μόνο για τον εντοπισμό σφαλμάτων.

Τοποθετούμε τον κώδικα HTML και PHP για την υποβολή της φόρμας σε ένα αρχείο

Στα σχόλια αυτού του άρθρου, πολλοί άνθρωποι ρωτούν πώς να βεβαιωθείτε ότι τόσο η φόρμα HTML όσο και ο κώδικας PHP για την αποστολή δεδομένων σε email βρίσκονται σε ένα αρχείο και όχι σε δύο.

Για να υλοποιήσετε αυτήν την εργασία, πρέπει να τοποθετήσετε τον κώδικα HTML της φόρμας στο αρχείο send.php και να προσθέσετε μια συνθήκη που θα ελέγχει την παρουσία μεταβλητών στον πίνακα POST (αυτός ο πίνακας αποστέλλεται από τη φόρμα). Δηλαδή, εάν οι μεταβλητές στον πίνακα δεν υπάρχουν, τότε πρέπει να δείξετε στον χρήστη τη φόρμα. Διαφορετικά, θα πρέπει να λάβετε δεδομένα από τη συστοιχία και να τα στείλετε στον παραλήπτη.

Ας δούμε πώς να αλλάξετε τον κώδικα PHP στο αρχείο send.php:



Έντυπο αίτησης από τον ιστότοπο


//ελέγξτε εάν υπάρχουν μεταβλητές στον πίνακα POST
if(!isset($_POST["fio"]) και !isset($_POST["email"]))(
?>





) άλλο (
//εμφάνιση της φόρμας
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldcode($fio);
$email = urldcode($email);
$fio = trim($fio);
$email = περικοπή ($email);
αν (ταχυδρομείο(" [email προστατευμένο]", "Application from the site", "Full name:".$fio.". E-mail: ".$email ,"From: [email προστατευμένο]\r\n"))(
echo "Το μήνυμα εστάλη με επιτυχία"
) άλλο (
echo "Παρουσιάστηκαν σφάλματα κατά την αποστολή του μηνύματος"
}
}
?>



Ελέγχουμε την ύπαρξη μεταβλητής στον πίνακα POST με τη συνάρτηση isset() PHP. Ένα θαυμαστικό πριν από αυτή τη συνάρτηση σε μια συνθήκη σημαίνει άρνηση. Δηλαδή, αν η μεταβλητή δεν υπάρχει, τότε πρέπει να δείξουμε τη μορφή μας. Αν δεν είχα βάλει το θαυμαστικό, η συνθήκη θα σήμαινε κυριολεκτικά «αν υπάρχει, τότε δείξε τη φόρμα». Και αυτό είναι λάθος στην περίπτωσή μας. Φυσικά, μπορείτε να το μετονομάσετε σε index.php. Εάν μετονομάσετε το αρχείο, μην ξεχάσετε να μετονομάσετε το όνομα του αρχείου στη γραμμή

. Η φόρμα πρέπει να συνδέεται με την ίδια σελίδα, για παράδειγμα index.php. Πρόσθεσα τον τίτλο της σελίδας στον κώδικα.

Συνήθη σφάλματα που εμφανίζονται κατά την υποβολή μιας φόρμας PHP από έναν ιστότοπο

Το πρώτο, ίσως το πιο δημοφιλές λάθος, είναι όταν βλέπετε μια κενή λευκή σελίδα χωρίς μηνύματα. Αυτό σημαίνει ότι κάνατε σφάλμα στον κώδικα της σελίδας. Πρέπει να ενεργοποιήσετε την εμφάνιση όλων των σφαλμάτων στην PHP και στη συνέχεια θα δείτε πού έγινε το σφάλμα. Προσθήκη στον κώδικα:

ini_set("display_errors","On");
error_reporting("E_ALL");

Το αρχείο send.php πρέπει να εκτελείται μόνο στον διακομιστή, διαφορετικά ο κώδικας απλά δεν θα λειτουργήσει. Συνιστάται να μην πρόκειται για τοπικό διακομιστή, καθώς δεν είναι πάντα ρυθμισμένος για αποστολή δεδομένων σε εξωτερικό διακομιστή αλληλογραφίας. Εάν εκτελείτε τον κώδικα όχι στον διακομιστή, τότε ο κώδικας PHP θα εμφανιστεί απευθείας στη σελίδα.

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

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

αν (ταχυδρομείο(" [email προστατευμένο]", "Παραγγελία από τον ιστότοπο", "Ονοματεπώνυμο:".$fio.". E-mail: ".$email ,"From: [email προστατευμένο]\r\n"))

Αντί [email προστατευμένο] πρέπει να υπάρχει μια διεύθυνση email στην οποία θα πρέπει να σταλεί η επιστολή, αλλά αντ' αυτού[email προστατευμένο] πρέπει να είναι υπάρχον email για αυτόν τον ιστότοπο. Για παράδειγμα, για έναν ιστότοπο αυτό θα είναι . Μόνο σε αυτή την περίπτωση θα σταλεί επιστολή με τα στοιχεία από τη φόρμα.

Η χρήση των μεθόδων GET και POST στην PHP είναι δύσκολο να υπερεκτιμηθεί, καθώς αυτές οι μέθοδοι βρίσκονται σχεδόν σε κάθε ιστότοπο. Πριν μελετήσετε το υλικό που περιγράφεται παρακάτω, σας συμβουλεύω να εξοικειωθείτε με την ετικέτα html . Ας δούμε αναλυτικά καθεμία από αυτές τις μεθόδους.

Μέθοδος GET

Η μέθοδος GET χρησιμοποιεί μια συμβολοσειρά URL για τη μεταφορά δεδομένων. Μπορεί να έχετε παρατηρήσει μεγάλες και ασαφείς διευθύνσεις URL. Για παράδειγμα: function.php?login=Alex&email=dezyakin. Σε αυτήν την περίπτωση, τα δεδομένα υποβάλλονται σε επεξεργασία στο function.php. Μετά το ερωτηματικό "?" υπάρχει μια λίστα με περασμένες παραμέτρους (οι παράμετροι διαχωρίζονται με "&") με τιμές: στην παράμετρο σύνδεσης εκχωρείται η τιμή Alex και στη μεταβλητή email εκχωρείται η τιμή dezyakin. Τα δεδομένα θα αποθηκευτούν στον υπερσφαιρικό πίνακα $_GET. Ένα παράδειγμα χρήσης της μεθόδου GET παρουσιάζεται παρακάτω:

Σύνδεση: ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ: Χρησιμοποιώντας τον υπερσφαιρικό πίνακα $_GET, εμφανίζουμε τις αποδεκτές τιμές:*/ ηχώ "
login = ". $_GET["login"] ; echo "
email = ". $_GET["email"] ; ?>

Παρατηρήστε πώς διαβάζουμε τιμές από τον υπερσφαιρικό πίνακα $_GET: $_GET["variable_name"]. Στο παράδειγμά μας, τα ονόματα των μεταβλητών δηλώθηκαν με τη μορφή (όνομα=σύνδεση και όνομα=email).

Συμβουλή:
Πριν επεξεργαστείτε τις λαμβανόμενες τιμές, σας συμβουλεύω να ελέγξετε την ύπαρξή τους μέσω συναρτήσεων isset(variable_name)ή κενό(όνομα_μεταβλητής)- αυτές οι συναρτήσεις συζητήθηκαν στο προηγούμενο μάθημα 2: μεταβλητές στην PHP. Για παράδειγμα:

έλεγχος ύπαρξης χρησιμοποιώντας το isset: if isset ($_GET["login"] ) ( χειριστές για το χειρισμό της σύνδεσης ... } //ή ελέγξτε την ύπαρξη χρησιμοποιώντας κενό:αν είναι κενό ($_GET["email"] ) ( χειριστές για την επεξεργασία email ... } ?>

Στη φόρμα, μπορείτε να καθορίσετε το όνομα του αρχείου που θα επεξεργαστεί τις μεταφερόμενες τιμές. Αυτό γίνεται χρησιμοποιώντας το χαρακτηριστικό action της φόρμας, στο οποίο μπορεί να εκχωρηθεί η διεύθυνση αυτού του αρχείου. Από προεπιλογή, αυτό το αρχείο εκχωρείται στο τρέχον αρχείο (δηλαδή, υποβάλλεται σε επεξεργασία στο αρχείο όπου βρίσκεται η φόρμα). Ακολουθεί ένα παράδειγμα στο οποίο τα δεδομένα από μια φόρμα μεταφέρονται στο αρχείο srcipt.php για επεξεργασία:

Σύνδεση: ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ:

Το αρχείο script.php πρέπει να περιέχει κάποιο είδος προγράμματος χειρισμού πληροφοριών, διαφορετικά οι πληροφορίες θα περάσουν κενές.

Η μέθοδος GET έχει πολλά μειονεκτήματα:

  • Ο χρήστης βλέπει τις τιμές των παραμέτρων που έχουν περάσει.
  • Ο χρήστης μπορεί εύκολα να πλαστογραφήσει τις περασμένες παραμέτρους.
  • Αβολική μετάδοση δυαδικών πληροφοριών (πρέπει να την κωδικοποιήσετε σε μορφή κειμένου).
  • Ο όγκος των μεταφερόμενων δεδομένων είναι περιορισμένος - 8 KB.

Λόγω των παραπάνω μειονεκτημάτων, η μέθοδος GET χρησιμοποιείται μόνο σε περιπτώσεις που χρειάζεται να μεταφερθεί μικρός όγκος δεδομένων και τα δεδομένα αυτά δεν ταξινομούνται με κανέναν τρόπο.

Μέθοδος POST

Η μέθοδος POST διαφέρει από το GET στο ότι τα δεδομένα μεταφέρονται σε ιδιωτική μορφή. Υπάρχει ένας υπερσφαιρικός πίνακας $_POST από τον οποίο τα δεδομένα μπορούν να διαβαστούν ως εξής: $_POST["variable_name"]. Για παράδειγμα:

Σύνδεση: "> Email: ">
Χρησιμοποιώντας τον υπερσφαιρικό πίνακα $_POST, εμφανίζουμε τις αποδεκτές τιμές:*/ ηχώ "
login = ". $_POST["login"] ; echo "
email = ". $_POST["email"] ; ?>

Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα φαίνεται στο παρακάτω σχήμα:

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

Σημείωση:
1) Ο όγκος των τιμών που μεταφέρονται με τη μέθοδο POST περιορίζεται από προεπιλογή και είναι ίσος με 8 MB. Για να αυξήσετε αυτήν την τιμή, πρέπει να αλλάξετε την οδηγία post_max_size στο php.ini.

2) Σε προηγούμενες εκδόσεις της PHP, αντί για τα σύντομα ονόματα υπερσφαιρικού πίνακα $_GET και $_POST, χρησιμοποιήθηκαν μεγαλύτερα ονόματα: $HTTP_GET_VARS και $HTTP_POST_VARS . Από προεπιλογή είναι απενεργοποιημένα στην PHP 5, αλλά μπορείτε να τα ενεργοποιήσετε στο αρχείο διαμόρφωσης php.ini χρησιμοποιώντας την παράμετρο register_long_arrays. Στην έκδοση php 6 αυτά τα μεγάλα ονόματα δεν θα είναι διαθέσιμα.

3) Πριν επεξεργαστείτε μεταβλητές από $_POST, σας συμβουλεύω να ελέγξετε τις μεταβλητές για την παρουσία τους, όπως ακριβώς έγινε με τη μέθοδο GET.

Φόρμες HTML. Πίνακες $_POST και $_GET

Φόρμες HTML. Μέθοδοι αποστολής δεδομένων στον διακομιστή

Πιθανότατα έχετε ήδη συναντήσει φόρμες HTML:

Εισάγετε το όνομά σας:

Αποθηκεύοντας αυτόν τον κώδικα σε ένα αρχείο HTML και προβάλλοντάς τον χρησιμοποιώντας το αγαπημένο σας πρόγραμμα περιήγησης, θα δείτε μια γνωστή φόρμα HTML:

Εισάγετε το όνομά σας:

Ετικέτα

, έχοντας μια ζευγοποιημένη ετικέτα τέλους
, στην πραγματικότητα ορίζει τη φόρμα. Τα χαρακτηριστικά του είναι και τα δύο προαιρετικά:

  • ενέργεια - καθορίζει τη διεύθυνση URL (πλήρη ή σχετική) στην οποία θα σταλεί η φόρμα. Εάν αυτό το χαρακτηριστικό δεν έχει καθοριστεί, τα περισσότερα προγράμματα περιήγησης (ακριβέστερα, όλα τα προγράμματα περιήγησης που είναι γνωστά σε εμένα) στέλνουν τη φόρμα στο τρέχον έγγραφο, δηλαδή "στο ίδιο". Αυτή είναι μια βολική συντομογραφία, αλλά σύμφωνα με το πρότυπο HTML, απαιτείται το χαρακτηριστικό action.
  • μέθοδος - τρόπος υποβολής της φόρμας. Υπάρχουν δύο από αυτούς.
    • GET - αποστολή δεδομένων φόρμας στη γραμμή διευθύνσεων.
      Μπορεί να έχετε παρατηρήσει σε διάφορους ιστότοπους την παρουσία ενός "?" στο τέλος της διεύθυνσης URL. και τα ακόλουθα δεδομένα στην παράμετρο μορφής=τιμή. Εδώ η "παράμετρος" αντιστοιχεί στην τιμή του χαρακτηριστικού name των στοιχείων της φόρμας (δείτε παρακάτω σχετικά με την ετικέτα ), και το "value" είναι το περιεχόμενο του χαρακτηριστικού value (για παράδειγμα, περιέχει την εισαγωγή του χρήστη στο πεδίο κειμένου της ίδιας ετικέτας ).
      Για παράδειγμα, δοκιμάστε να αναζητήσετε κάτι στο Yandex και δώστε προσοχή στη γραμμή διευθύνσεων του προγράμματος περιήγησης. Αυτή είναι η μέθοδος GET.
    • POST - τα δεδομένα της φόρμας αποστέλλονται στο σώμα της αίτησης. Εάν δεν είναι απολύτως σαφές (ή εντελώς ασαφές) τι είναι αυτό, μην ανησυχείτε, θα επιστρέψουμε σε αυτό το ζήτημα σύντομα.
    Εάν το χαρακτηριστικό της μεθόδου δεν έχει καθοριστεί, υποτίθεται ότι το GET.

Ετικέτα - καθορίζει ένα στοιχείο φόρμας που ορίζεται από το χαρακτηριστικό type:

  • Η τιμή "text" καθορίζει ένα πεδίο εισαγωγής κειμένου μιας γραμμής
  • Η τιμή "υποβολή" καθορίζει ένα κουμπί που, όταν πατηθεί, στέλνει τη φόρμα στον διακομιστή

Είναι δυνατές και άλλες τιμές (και - δεν είναι η μόνη ετικέτα που καθορίζει ένα στοιχείο φόρμας).

Τι συμβαίνει λοιπόν όταν κάνουμε κλικ στο "OK";

  1. Το πρόγραμμα περιήγησης εξετάζει τα στοιχεία που περιλαμβάνονται στη φόρμα και κατασκευάζει δεδομένα φόρμας από τα χαρακτηριστικά ονόματος και τιμής τους. Ας πούμε ότι έχει εισαχθεί το όνομα Vasya. Σε αυτήν την περίπτωση, τα δεδομένα της φόρμας είναι name=Vasya&okbutton=OK
  2. Το πρόγραμμα περιήγησης δημιουργεί μια σύνδεση με τον διακομιστή, στέλνει στον διακομιστή ένα αίτημα για το έγγραφο που καθορίζεται στο χαρακτηριστικό action της ετικέτας
    , χρησιμοποιώντας τη μέθοδο αποστολής δεδομένων που καθορίζεται στο χαρακτηριστικό μέθοδος (σε αυτήν την περίπτωση - GET), μεταβιβάζοντας τα δεδομένα φόρμας στο αίτημα.
  3. Ο διακομιστής αναλύει το αίτημα που έλαβε, δημιουργεί μια απάντηση, τη στέλνει στο πρόγραμμα περιήγησης και κλείνει τη σύνδεση
  4. Το πρόγραμμα περιήγησης εμφανίζει το έγγραφο που ελήφθη από τον διακομιστή

Η μη αυτόματη αποστολή του ίδιου αιτήματος (με χρήση telnet) μοιάζει με αυτό (υποθέτοντας ότι το όνομα τομέα του ιστότοπου είναι www.example.com):

Telnet www.example.com 80 GET /cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK HTTP/1.0\r\n Κεντρικός υπολογιστής: www.example.com\r\n \r\n

Όπως πιθανότατα έχετε ήδη μαντέψει, κάνοντας κλικ στο κουμπί υποβολή σε μια φόρμα με μέθοδο υποβολής "GET" είναι το ίδιο με την πληκτρολόγηση της αντίστοιχης διεύθυνσης URL (με ερωτηματικό και δεδομένα φόρμας στο τέλος) στη γραμμή διευθύνσεων του προγράμματος περιήγησης:

Http://www.example.com/cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK

Στην πραγματικότητα, η μέθοδος GET χρησιμοποιείται κάθε φορά που ζητάτε ένα έγγραφο από τον διακομιστή εισάγοντας απλώς τη διεύθυνση URL του ή κάνοντας κλικ σε έναν σύνδεσμο. Χρησιμοποιώντας , η διεύθυνση URL απλώς επισυνάπτεται με ένα ερωτηματικό και δεδομένα φόρμας.

Ίσως όλες αυτές οι τεχνικές λεπτομέρειες και οι ασκήσεις με το telnet να σας φαίνονται απίστευτα βαρετές και ακόμη και περιττές ("τι σχέση έχει η PHP με αυτό;"). Αλλά μάταια. :) Αυτά είναι τα βασικά στοιχεία της εργασίας με το πρωτόκολλο HTTP, τα οποία κάθε προγραμματιστής Ιστού πρέπει να γνωρίζει από κοντά, και αυτό δεν είναι θεωρητική γνώση - όλα αυτά θα είναι χρήσιμα στην πράξη.

Τώρα ας αντικαταστήσουμε την πρώτη γραμμή της φόρμας μας με την εξής:

Καθορίσαμε τη μέθοδο αποστολής ως "POST". Σε αυτήν την περίπτωση, τα δεδομένα αποστέλλονται στον διακομιστή με ελαφρώς διαφορετικό τρόπο:

Telnet www.example.com 80 POST /cgi-bin/form_handler.cgi HTTP/1.0\r\n Κεντρικός υπολογιστής: www.example.com\r\n Τύπος περιεχομένου: εφαρμογή/x-www-form-urlencoded\r\ n Μήκος περιεχομένου: 41263\r\n \r\n όνομα=Vasya&okbutton=OK

Όταν χρησιμοποιείτε τη μέθοδο POST, τα δεδομένα της φόρμας αποστέλλονται μετά από "δύο Εισαγωγές" - στο σώμα της αίτησης. Όλα τα παραπάνω είναι στην πραγματικότητα η κεφαλίδα αιτήματος (και όταν χρησιμοποιήσαμε τη μέθοδο GET, τα δεδομένα της φόρμας στάλθηκαν στην κεφαλίδα). Για να γνωρίζει ο διακομιστής σε ποιο byte θα σταματήσει να διαβάζει το σώμα του αιτήματος, η κεφαλίδα περιέχει τη γραμμή Content-Length. ότι τα δεδομένα της φόρμας θα μεταδοθούν με τη μορφή parameter1=value1¶meter2=value2... , και οι τιμές μεταδίδονται με τη μορφή urlencode - δηλαδή ακριβώς το ίδιο με τη μέθοδο GET, αλλά στο σώμα του αίτημα - η κεφαλίδα περιεχομένου ενημερώνει τον διακομιστή -Τύπος: application/x-www-form-urlencoded .

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

Όταν χρησιμοποιείτε τη μέθοδο POST, δεν είναι δυνατή η υποβολή της φόρμας απλώς "ακολουθώντας έναν σύνδεσμο", όπως συνέβη με το GET .

Όταν χρησιμοποιείτε μια φόρμα POST, στο χαρακτηριστικό της δράσης μπορείτε να καθορίσετε μετά το ερωτηματικό τις παραμέτρους της φόρμας GET. Έτσι, η μέθοδος POST περιλαμβάνει τη μέθοδο GET.

Πίνακες $_GET και $_POST

Έτσι, οι φόρμες είναι ο κύριος τρόπος ανταλλαγής δεδομένων μεταξύ ενός διακομιστή ιστού και ενός προγράμματος περιήγησης, δηλαδή παρέχουν αλληλεπίδραση με τον χρήστη - στην πραγματικότητα, τι είναι ο προγραμματισμός Ιστού.

Ας δούμε ένα απλό παράδειγμα:



if ($_SERVER [ "REQUEST_METHOD" ] == "POST" ) (
ηχώ "

Γειά σου, " . $_POST [ "όνομα" ] ."

!" ;
}
?>
">
Εισάγετε το όνομά σας:






Η φόρμα που εμφανίζεται στις γραμμές 8-12 περιέχει δύο στοιχεία: όνομα και κουμπί ok. Το χαρακτηριστικό μέθοδος καθορίζει τη μέθοδο υποβολής φόρμας POST, ενώ το χαρακτηριστικό action καθορίζει τη διεύθυνση URL στην οποία αποστέλλεται η φόρμα και συμπληρώνεται με την τιμή της μεταβλητής διακομιστή PHP_SELF - τη διεύθυνση του σεναρίου που εκτελείται αυτήν τη στιγμή.

- συντομευμένη φόρμα για .

Ας υποθέσουμε ότι πληκτρολογήσαμε την τιμή Vasya στο πεδίο ονόματος και κάνουμε κλικ στο κουμπί OK. Σε αυτήν την περίπτωση, το πρόγραμμα περιήγησης στέλνει ένα αίτημα POST στον διακομιστή. Σώμα αιτήματος: name=Vasya&okbutton=OK . Η PHP συμπληρώνει αυτόματα τον πίνακα $_POST:

$_POST ["name" ] = "Vasya"
$_POST ["okbutton" ] = "OK"

Στην πραγματικότητα, η τιμή "Vasya" αποστέλλεται από το πρόγραμμα περιήγησης σε μορφή urlencode. για την κωδικοποίηση των Windows-1251, αυτή η τιμή μοιάζει με %C2%E0%F1%FF . Όμως, δεδομένου ότι η PHP χειρίζεται αυτόματα την απαραίτητη αποκωδικοποίηση, μπορούμε να "ξεχάσουμε" αυτήν τη δυνατότητα - μέχρι να αντιμετωπίσουμε τα αιτήματα HTTP χειροκίνητα.

Δεδομένου ότι το σώμα του αιτήματος καθορίζει μόνο ονόματα και τιμές, αλλά όχι τύπους στοιχείων φόρμας, η PHP δεν έχει ιδέα εάν το $_POST["όνομα"] ταιριάζει με μια συμβολοσειρά εισόδου, ένα κουμπί ή ένα πλαίσιο λίστας. Αλλά εμείς, γενικά, δεν χρειαζόμαστε καθόλου αυτές τις πληροφορίες. :)

Επειδή δεν χρειάζεται να γνωρίζουμε τι λέει το κουμπί υποβολής, μπορούμε να αφαιρέσουμε το χαρακτηριστικό name στη γραμμή 11, συντομεύοντας την περιγραφή του κουμπιού σε . Σε αυτήν την περίπτωση, το πρόγραμμα περιήγησης θα στείλει ένα αίτημα POST name=Vasya.

Και τώρα το ίδιο πράγμα, αλλά για τη φόρμα GET:



if (isset($_GET [ "όνομα" ])) (
ηχώ "

Γειά σου, " . $_GET [ "όνομα" ] ."

!" ;
}
?>
">
Εισάγετε το όνομά σας:







Στη γραμμή 8 θα μπορούσε κανείς να γράψει το ίδιο εύκολα

: Η GET είναι η προεπιλεγμένη μέθοδος. Αυτή τη φορά το πρόγραμμα περιήγησης στέλνει ένα αίτημα GET, το οποίο ισοδυναμεί με την εισαγωγή της διεύθυνσης στη γραμμή διευθύνσεων: http://site-address/script-name.php?name=Vasya.

Η PHP κάνει το ίδιο με τις φόρμες GET όπως και με το POST, με τη διαφορά ότι ο πίνακας $_GET είναι συμπληρωμένος.

Η βασική διαφορά βρίσκεται στη γραμμή 4. Εφόσον η απλή εισαγωγή της διεύθυνσης στη γραμμή του προγράμματος περιήγησης είναι αίτημα GET, ο έλεγχος εάν ($_SERVER["REQUEST_METHOD"] == "GET") δεν έχει νόημα. Επομένως, καταφεύγουμε στην κατασκευή isset(), η οποία επιστρέφει true εάν η μεταβλητή έχει οριστεί (δηλαδή, της έχει εκχωρηθεί μια τιμή) και false εάν η μεταβλητή δεν έχει οριστεί. Εάν η φόρμα έχει συμπληρωθεί - όπως ήδη καταλάβατε, η PHP εκχωρεί αυτόματα στο $_GET["name"] την κατάλληλη τιμή.

Η μέθοδος επαλήθευσης που χρησιμοποιεί isset() είναι καθολική και θα μπορούσε επίσης να χρησιμοποιηθεί για μια φόρμα POST. Επιπλέον, είναι προτιμότερο γιατί σας επιτρέπει να μάθετε ποια πεδία φόρμας συμπληρώνονται.

Ένα λίγο πιο σύνθετο παράδειγμα.




echo "Παρακαλώ εισάγετε ένα όνομα!
" ;
< 1900 || $_POST [ "year" ] > 2004 ) {
ηχώ
"
;
) άλλο (

" ;

ηχώ "Σε σένα". $ηλικία. "χρόνια
" ;
}
ηχώ "


" ;
}
?>
">
Εισάγετε το όνομά σας:


Εισαγάγετε το έτος γέννησής σας:







Δεν χρησιμοποιούνται νέες τεχνικές εδώ. Ανακαλύψτε το, εκτελέστε τον κώδικα, δοκιμάστε να τροποποιήσετε...

Ας αλλάξουμε το τελευταίο παράδειγμα, ώστε ο χρήστης να μην χρειάζεται να συμπληρώσει ξανά τα πεδία. Για να το κάνετε αυτό, συμπληρώστε τα χαρακτηριστικά τιμής των στοιχείων της φόρμας με τις τιμές που μόλις εισαγάγαμε.



$name = isset($_POST [ "όνομα" ]) ? $_POST [ "όνομα" ] : "" ;
$year = isset($_POST [ "έτος" ]) ? $_POST [ "έτος" ] : "" ;

Εάν (isset($_POST [ "όνομα" ], $_POST [ "έτος" ])) (
if ($_POST [ "όνομα" ] == "" ) (
echo "Παρακαλώ εισάγετε ένα όνομα!
" ;
) αλλιώς εάν ($_POST [ "έτος" ]< 1900 || $_POST [ "year" ] > 2004 ) {
ηχώ "Παρακαλώ προσδιορίστε το έτος γέννησης! Έγκυρο εύρος τιμών: 1900..2004
"
;
) άλλο (
ηχώ "Γεια σου", . $_POST [ "όνομα" ] . "!
" ;
$age = 2004 - $_POST [ "έτος" ];
ηχώ "Σε σένα". $ηλικία. "χρόνια
" ;
}
ηχώ "


" ;
}
?>
">
Εισάγετε το όνομά σας:


Εισαγάγετε το έτος γέννησής σας:







Οι γραμμές 4 και 5 μπορεί να είναι κάπως μπερδεμένες: Όλα είναι πολύ απλά: η γραμμή 4 θα μπορούσε να γραφτεί ως εξής:

if (isset($_POST [ "όνομα" ]))
$name = $_POST ["όνομα" ];
αλλού
$name = " " ;

Μπορεί να προκύψει το ερώτημα - γιατί να μην πετάξετε τις γραμμές 4-5 και να γράψετε:

Εισάγετε το όνομά σας: ">

Εισαγάγετε το έτος γέννησής σας: ">

Το θέμα είναι ότι εάν αυτές οι μεταβλητές POST δεν έχουν καθοριστεί - και αυτό θα συμβεί αν η φόρμα δεν έχει ακόμη συμπληρωθεί - η PHP θα εκδώσει προειδοποιήσεις σχετικά με τη χρήση μη αρχικοποιημένων μεταβλητών (και, πολύ λογικά: ένα τέτοιο μήνυμα σας επιτρέπει να βρείτε γρήγορα δυσεύρετα τυπογραφικά λάθη σε ονόματα μεταβλητών και επίσης προειδοποιεί για πιθανές «τρύπες» στον ιστότοπο). Μπορείτε, φυσικά, να βάλετε τον κωδικό isset απευθείας στη φόρμα, αλλά θα είναι πολύ περίπλοκο.

Το έπιασα; Τώρα προσπαθήστε να βρείτε το σφάλμα στον συγκεκριμένο κώδικα. Λοιπόν, όχι ακριβώς ένα λάθος, αλλά ένα ελάττωμα.

htmlspecialchars()

Δεν το βρήκατε; Θα σου δώσω μια υπόδειξη. Εισαγάγετε, για παράδειγμα, στο πεδίο "όνομα" ένα διπλό εισαγωγικό και λίγο κείμενο, για παράδειγμα, "Va" Στείλτε τη φόρμα και ρίξτε μια ματιά στον πηγαίο κώδικα της σελίδας που προκύπτει Η τέταρτη γραμμή θα έχει κάτι σαν:

Εισάγετε το όνομά σας:

Δηλαδή τίποτα καλό. Τι θα γινόταν αν ένας πονηρός χρήστης εισήγαγε κώδικα JavaScript;

Για να λύσετε αυτό το πρόβλημα, πρέπει να χρησιμοποιήσετε τη συνάρτηση htmlspecialchars(), η οποία θα αντικαταστήσει τους ειδικούς χαρακτήρες με την αναπαράστασή τους HTML (για παράδειγμα, ένα εισαγωγικό με "):



$name = isset($_POST [ "όνομα" ]) ? htmlspecialchars ($_POST [ "όνομα" ]) : "" ;
$year = isset($_POST [ "έτος" ]) ? htmlspecialchars ($_POST [ "έτος" ]) : "" ;

Εάν (isset($_POST [ "όνομα" ], $_POST [ "έτος" ])) (
if ($_POST [ "όνομα" ] == "" ) (
echo "Παρακαλώ εισάγετε ένα όνομα!
" ;
) αλλιώς εάν ($_POST [ "έτος" ]< 1900 || $_POST [ "year" ] > 2004 ) {
ηχώ "Παρακαλώ προσδιορίστε το έτος γέννησης! Έγκυρο εύρος τιμών: 1900..2004
"
;
) άλλο (
ηχώ "Γεια σου", . $όνομα . "!
" ;
$age = 2004 - $_POST [ "έτος" ];
ηχώ "Σε σένα". $ηλικία. "χρόνια
" ;
}
ηχώ "


" ;
}
?>
">
Εισάγετε το όνομά σας:


Εισαγάγετε το έτος γέννησής σας:







Επαναλάβετε το πείραμα και βεβαιωθείτε ότι ο κώδικας HTML είναι πλέον σωστός.

Θυμηθείτε - η συνάρτηση htmlspecialchars() πρέπει να χρησιμοποιείται κάθε φορά που εμφανίζει τα περιεχόμενα μιας μεταβλητής που μπορεί να περιέχει ειδικούς χαρακτήρες HTML.

phpinfo()

Η συνάρτηση phpinfo() είναι μια από τις πιο σημαντικές στην PHP. Εμφανίζει πληροφορίες σχετικά με τις ρυθμίσεις PHP, τις τιμές των διαφόρων μεταβλητών διαμόρφωσης...

Γιατί το αναφέρω σε ένα άρθρο για τα έντυπα; Το phpinfo() είναι ένα βολικό εργαλείο εντοπισμού σφαλμάτων. Η phpinfo(), μεταξύ άλλων, εκτυπώνει τις τιμές όλων των μεταβλητών $_GET, $_POST και $_SERVER. Έτσι, εάν μια μεταβλητή φόρμας χαθεί, ο ευκολότερος τρόπος για να μάθετε τι φταίει είναι να χρησιμοποιήσετε τη συνάρτηση phpinfo(). Για να διασφαλίσετε ότι η συνάρτηση εμφανίζει μόνο τις τιμές των μεταβλητών (και χωρίς να χρειάζεται να κάνετε κύλιση σε δεκάδες σελίδες), θα πρέπει να καλείται ως εξής: phpinfo(INFO_VARIABLES); , ή - που είναι απολύτως το ίδιο πράγμα - phpinfo(32) ;.



">
Εισάγετε το όνομά σας:


phpinfo(32);
?>



Ή, για παράδειγμα, αυτή η κατάσταση: θέλετε να μάθετε τη διεύθυνση IP ενός επισκέπτη. Θυμάστε ότι η αντίστοιχη μεταβλητή είναι αποθηκευμένη στον πίνακα $_SERVER, αλλά - κακή τύχη - ξεχάσατε πώς ακριβώς ονομάζεται η μεταβλητή. Και πάλι, καλέστε το phpinfo(32); , αναζητήστε τη διεύθυνση IP σας στο σύμβολο και βρείτε τη στη γραμμή $_SERVER["REMOTE_ADDR"] .

/php/php5ru.png HTTP/1.0

: www.php5.ru

Αυτό που θα βλέπατε αν το προβάλλατε θα αναβοσβήνει στην οθόνη png-αρχείο σε πρόγραμμα επεξεργασίας κειμένου.

Φόρμες HTML. Μέθοδοι αποστολής δεδομένων στον διακομιστή με χρήση φόρμας

Μία από τις πιο κοινές εφαρμογές οποιασδήποτε γλώσσας προγραμματισμού διακομιστή είναι η επεξεργασία HTML- έντυπα. Ο προγραμματισμός Ιστού περιλαμβάνει ως επί το πλείστον την επεξεργασία διαφόρων εισροών χρηστών.

RNRδιευκολύνει το έργο της επεξεργασίας και της ανάλυσης φορμών που λαμβάνονται από το πρόγραμμα περιήγησης, καθώς όλες οι απαραίτητες δυνατότητες είναι ενσωματωμένες στη γλώσσα στο χαμηλότερο επίπεδο. Επομένως, ο προγραμματιστής δεν χρειάζεται καν να σκεφτεί τις δυνατότητες του πρωτοκόλλου HTTPκαι αναρωτιέμαι πώς γίνεται η αποστολή και η λήψη

ΜΕ HTML-φόρμες που έχετε ήδη συναντήσει όταν μελετάτε τη γλώσσα σήμανσης HTML.

Ας δούμε ένα παράδειγμα αποστολής μηνύματος από μια φόρμα μέσω email.

Καταχώρηση e_mail.html.Αποστολή μηνύματος από φόρμα μέσω email

Αποστολή της φόρμας με e-mail

Κάντε κλικ στο Reset και συμπληρώστε την παραγγελία.


Εάν επεξεργαστείτε αυτόν τον κώδικα HTML με ένα πρόγραμμα περιήγησης, θα εμφανιστεί μια ιστοσελίδα, η οποία εμφανίζεται στην οθόνη της οθόνης:

Ο χρήστης κάνει κλικ σε ένα κουμπί "Επαναφορά", και τα πεδία λαμβάνουν τις προεπιλεγμένες τιμές τους. Η φόρμα συμπληρώνεται από τον χρήστη και με το πάτημα ενός κουμπιού "Αποστολή παραγγελίας"αποστέλλεται στο Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Για να το δείτε, πρέπει να έχετε ενεργοποιημένη τη JavaScript. Συνήθως, το πρόγραμμα περιήγησης δεν στέλνει το ίδιο τη φόρμα, αλλά εμπιστεύεται αυτήν την εργασία στο πρόγραμμα email που είναι εγκατεστημένο από προεπιλογή στο λειτουργικό σύστημα του υπολογιστή (για παράδειγμα, Outlook). Η επιστολή αποστέλλεται με τη μορφή:

θέμα: Φόρμα που υποβλήθηκε από τον Microsoft Internet Explorer

όνομα = Prokhorov Viktor Sergeevich

value= Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Για να το δείτε, πρέπει να έχετε ενεργοποιημένη τη JavaScript

obj = "Οδηγίες"

Το γράμμα αποτελείται από ζεύγη όνομα=τιμή, τα οποία επιλέγονται με σειρά από τα πεδία της φόρμας.

Ας ρίξουμε μια πιο προσεκτική ματιά στο παρακάτω παράδειγμα.

Καταχώρηση form_1.html

Εισάγετε το όνομά σας:

Αποθήκευση αυτού του κώδικα σε ένα αρχείο HTML form_1.htmlκαι προβάλλοντας το χρησιμοποιώντας ένα πρόγραμμα περιήγησης, μπορείτε να δείτε τη φόρμα HTML:

Η φόρμα υλοποιείται από μια ετικέτα κοντέινερ . Η ετικέτα υποδεικνύει με τα χαρακτηριστικά της:

Διεύθυνση του σεναρίου στο οποίο θα σταλεί το έντυπο.

Τρόπος αποστολής και χαρακτηριστικά των δεδομένων που περιέχονται στο έντυπο. Στοιχειώδης και τελικό Οι ετικέτες ορίζουν τα όρια της φόρμας. Η υπόδειξή τους είναι υποχρεωτική.

Χαρακτηριστικά ετικέτας κοντέινερ
(
όλα προαιρετικά):

? δράση--ένα χαρακτηριστικό του οποίου η τιμή είναι URL-διεύθυνση (πλήρης ή σχετική) του αιτούμενου CGI-προγράμματα. Αυτό το πρόγραμμα θα επεξεργαστεί τα δεδομένα που περιέχονται στη φόρμα. Είναι αποδεκτή η χρήση της καταχώρισης MAILTO:URL.Σε αυτήν την περίπτωση, η φόρμα θα σταλεί με email. Αν χαρακτηριστικό δράσημην προσδιορίσετε, τα περιεχόμενα της φόρμας θα σταλούν στο URLτη διεύθυνση από την οποία φορτώθηκε αυτή η ιστοσελίδα, δηλαδή «στον εαυτό της». Αυτή είναι μια βολική συντομογραφία, αλλά σύμφωνα με το πρότυπο HTML το χαρακτηριστικό δράσηαπαιτείται.

? μέθοδος-- ορίζει μια μέθοδο HTTP, χρησιμοποιείται για την αποστολή δεδομένων φόρμας από το πρόγραμμα περιήγησης στον διακομιστή. Χαρακτηριστικό μέθοδοςμπορεί να πάρει δύο έννοιες: παίρνωή Θέση:

¦ παίρνω- αποστολή δεδομένων φόρμας στη γραμμή διευθύνσεων. Μπορεί να έχετε παρατηρήσει σε διάφορους ιστότοπους την παρουσία ενός "?" στο τέλος της διεύθυνσης URL. και τα ακόλουθα δεδομένα στη μορφή παράμετρος=τιμή.Εδώ "παράμετρος"ταιριάζει με την τιμή του χαρακτηριστικού όνομαστοιχεία φόρμας (δείτε παρακάτω σχετικά με την ετικέτα ), ΕΝΑ "έννοια"- χαρακτηριστικό περιεχόμενο αξία(περιέχει, για παράδειγμα, εισαγωγή χρήστη σε ένα πεδίο κειμένου της ίδιας ετικέτας ).

Για παράδειγμα, δοκιμάστε να αναζητήσετε κάτι στο Yandex και δώστε προσοχή στη γραμμή διευθύνσεων του προγράμματος περιήγησης. Αυτός είναι ο τρόπος παίρνω.

¦ Θέση- τα δεδομένα της φόρμας αποστέλλονται στο σώμα της αίτησης. Εάν δεν είναι απολύτως σαφές (ή εντελώς ασαφές) τι είναι αυτό, μην ανησυχείτε, θα επιστρέψουμε σε αυτό το ζήτημα σύντομα.

Αν χαρακτηριστικό μέθοδοςδεν διευκρινίζεται - υπονοείται "παίρνω".

? εγτύπος-- προαιρετικό χαρακτηριστικό. Καθορίζει τον τύπο περιεχομένου της φόρμας που χρησιμοποιείται για τον προσδιορισμό της μορφής κωδικοποίησης κατά την υποβολή της. ΣΕ HTMLορίζονται δύο πιθανές τιμές για το χαρακτηριστικό εγτύπος:

¦ ΑΙΤΗΣΗ/Χ-WWW-ΦΟΡΜΑ-ΚΩΔΙΚΟΣ URLENCED(Προκαθορισμένο).

¦ ΠΟΛΥΜΕΡΗ/ΦΟΡΜΑ-ΔΕΔΟΜΕΝΑ.

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

Ετικέτα - καθορίζει το στοιχείο φόρμας που ορίζεται από το χαρακτηριστικό τύπος:

¦ Έννοια "κείμενο"καθορίζει ένα πεδίο εισαγωγής κειμένου μιας γραμμής.

¦ Έννοια "υποβάλλουν"καθορίζει ένα κουμπί που, όταν πατηθεί, στέλνει τη φόρμα στον διακομιστή.

Είναι δυνατές και άλλες τιμές (και - δεν είναι η μόνη ετικέτα που ορίζει ένα στοιχείο φόρμας), αλλά θα τις εξετάσουμε στα επόμενα κεφάλαια.

Τι συμβαίνει λοιπόν όταν πατηθεί το κουμπί OK;

1. Το πρόγραμμα περιήγησης εξετάζει τα στοιχεία που περιλαμβάνονται στη φόρμα και δημιουργεί από τα χαρακτηριστικά τους όνομαΚαι αξίαστοιχεία φόρμας. Ας πούμε ότι έχει εισαχθεί το όνομα Βάσια. Σε αυτήν την περίπτωση, τα δεδομένα της φόρμας: name=Vasya&okbutton=ΟΚ.

2. Το πρόγραμμα περιήγησης δημιουργεί μια σύνδεση με τον διακομιστή, στέλνει ένα αίτημα στον διακομιστή για το έγγραφο που καθορίζεται στο χαρακτηριστικό δράσηετικέτα , χρησιμοποιώντας τη μέθοδο αποστολής δεδομένων που καθορίζεται στο χαρακτηριστικό μέθοδος(σε αυτήν την περίπτωση - ΠΑΙΡΝΩ), διαβιβάζοντας τα δεδομένα της φόρμας στο αίτημα.

3. Ο διακομιστής αναλύει το αίτημα που έλαβε, δημιουργεί μια απάντηση, τη στέλνει στο πρόγραμμα περιήγησης και κλείνει τη σύνδεση.

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

Μη αυτόματη αποστολή του ίδιου αιτήματος (χρησιμοποιώντας telnet) μοιάζει με αυτό (υποθέτοντας ότι το όνομα τομέα του ιστότοπου είναι www.example.com).



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας:



Το όνομα σου: Η διεύθυνση σου: Στείλετε: