Wenn es um die Webentwicklung geht, müssen wir HTML erwähnen, das seit mehreren Jahren der De-facto-Standard für die Gestaltung von Web-Benutzeroberflächen ist. Obwohl die derzeitige Verwendung von Seitenskripten wie WAP/XML es schwierig macht, die Dominanz von HTML aufrechtzuerhalten, müssen Entwickler, wenn Sie Front-End-PHP-Webanwendungen schreiben möchten, immer noch die HTML-Sprache verstehen, insbesondere den Formteil von HTML. In diesem Kapitel lernen wir Folgendes: ? Verwenden Sie Dreamweaver zum Entwerfen von HTML-Formularen ? Verwenden Sie PHP zum Senden und Empfangen von Formulardaten ? 🎜>? Verwenden Sie PHP, um Benutzereingaben zu validieren ? Die beiden Sitzungsverwaltungsmethoden von PHP: COOKIE und SESSION ? Planen Sie unsere Webanwendung HTML ist eine einfache Auszeichnungssprache, die den Benutzern große Flexibilität bietet. Dies erleichtert auch das Erlernen und Schreiben. Aus diesem Grund wird die Gestaltung von HTML fast missbraucht, was dazu führt, dass eine Seite sehr unterschiedlich angezeigt wird mehrere verschiedene Browser wie IE, Firefox und Mozila. Das heutige Webdesign hat neue Standards ermöglicht, die darauf abzielen, dass der HTML-Code von Webseiten nur Inhalte und Informationen enthält und Informationen in Standard-HTML und CSS (Cascading Style Sheets) gespeichert werden, dem mittlerweile beliebten DIV+CSS-Designstandard. Einige Leute schlagen vor, XML als Ersatz für die HTML-Sprache zu verwenden. Obwohl XML über solch leistungsstarke Funktionen verfügt, ist die Eintrittsbarriere hoch und entmutigend, und es gibt derzeit zu viele HTML-basierte Websites. Daher ist der aktuelle Standard die kompatible Spezifikation von HTML und XML, genannt XHTML, die für den Übergang von HTML verwendet wird zu XML. Der Code in diesem Buch basiert auf XHTML-Kompatibilität und es wird empfohlen, XHTML auch auf Webprojekte anzuwenden. Das Erstellen und Bearbeiten von Formularen ist ein wichtiger Kompetenzindikator für PHP-Entwickler. Als nächstes beginnen wir mit der Einführung in die Gestaltung des Formulars. Formulare sind die am häufigsten verwendeten Komponenten in Webanwendungen und bestehen aus Senden-Schaltflächen und anderen zugehörigen Elementen. Formulare werden in verschiedenen Bereichen verwendet, um Funktionen wie die Registrierung von Benutzern, das Ausfüllen von Bankkonten und das Anmelden zu implementieren. Das -Formular verwendet als Start-Tag und endet mit , andernfalls hat es keine Wirkung. Auf einer HTML-Seite sind mehrere Formulare zulässig. Beim Schreiben werden der Name und die Formular-ID des Formulars als Unterscheidung zwischen ihnen verwendet. Das Folgende ist das einfachste Formular, der Code lautet wie folgt:
Dieses Formular Läuft im Browser. Es wird nur eine Schaltfläche mit der Aufschrift „Submit Query Content“ angezeigt, was wenig Sinn ergibt. Wenn Sie Daten übermitteln und ein vollständiges Formular erstellen möchten, müssen Sie dem -Tag zwei wichtige Attribut-Tags hinzufügen: Aktion und Methode, wie im folgenden Formular gezeigt:
Dabei bezieht sich das Aktions-Tag auf den Dateispeicherort, der das Verarbeitungsergebnis empfängt, wenn der Aktionswert vorliegt leer ist, dann an die aktuelle Datei selbst senden. Wenn der Wert der Aktion eine andere Datei oder URL ist, senden Sie ihn zur Verarbeitung an diese Datei oder URL-Adresse. Das method-Tag beschreibt die Methode, die beim Senden von Daten verwendet wird. Es hat zwei Werte: GET und POST. Wenn das Methodenattribut nicht festgelegt ist oder das Attribut leer ist, verwendet der Browser standardmäßig die POST-Methode. Hier erfahren Sie, wie Sie mit dem POST-Formular umgehen. Beispiel 5-1: getPasswd.php – Per POST-Formular übermittelte Werte akzeptieren $action = $_SERVER['PHP_SELF']; REQUEST_METHOD' ] == 'POST') { echo 'POST-Methode zum Übergeben von Formularwerten verwenden'; echo "$_POST[email]"; } ?> ;form name = „regform“ id = „regform“ action = „“ method = „post“> E-Mail:
Wenn Sie senden möchten Es im Browser Das Formular oder die Daten können mit der GET- oder POST-Methode an den Server gesendet werden. Die GET-Methode verwendet die Adressleiste des Browsers, um den Wert beim Zugriff auf die URL zu übergeben. Wir können diese Art von URL-Zeichenfolge auf vielen Websites sehen. In Abbildung 5-1 wird die Verwendung der GET-Methode zum Übergeben von Parametern gezeigt.
Es ist fehleranfällig, wenn nicht d gut genug, und die von GET übergebenen Zeichen Die Länge der Zeichenfolge darf 250 Zeichen nicht überschreiten. Wenn sie zu lang ist, schneidet der Browser sie automatisch ab, was zu Datenverlust führt. Darüber hinaus unterstützt die GET-Methode keine anderen Zeichen als ASCII-Zeichen. Wenn sie beispielsweise chinesische Zeichen oder andere Nicht-ASCII-Zeichen enthält, sind zusätzliche Codierungsvorgänge erforderlich, obwohl der Browser sie manchmal automatisch abschließen kann (Sie können die verwenden). url_encode- und url_decode-Funktionen verwenden (siehe Abschnitt 2.9.2 für Einzelheiten zur Methode). Wenn die POST-Methode variable Daten sendet, sind sie für den Benutzer undurchsichtig. Gemäß dem HTTP-Protokoll werden die Daten an die Header-Informationen angehängt und der Benutzer kann sie nicht nach Belieben ändern. und die Verwendung von POST kann große Datenmengen an den Webserver senden. Da POST zusammen mit HTTP-Header-Informationen gesendet wird, sendet der Browser die POST-Daten nicht automatisch erneut, wenn die Übermittlung des POST-Formulars ausgelöst wird und der Benutzer beim Durchsuchen der Seite auf die Schaltfläche „Zurück“ klickt. Wenn der Benutzer zu diesem Zeitpunkt auf die Schaltfläche „Aktualisieren“ klickt, erscheint die Meldung „Die Daten sind abgelaufen. Möchten Sie das Formular erneut senden?“ Dies ist nicht so praktisch wie GET. Wenn GET zum Übergeben von Werten verwendet wird, ist die URL-Adresse des Browsers weiterhin vorhanden, auch wenn der Benutzer die Schaltfläche „Zurück“ oder „Aktualisieren“ verwendet. Daher müssen wir während der Entwicklung flexibel GET und POST auswählen, um Formulardaten entsprechend der tatsächlichen Anwendung zu übermitteln. Es ist erwähnenswert, dass das gesamte Formular keine Übermittlungsaktion auslöst, wenn das schließende Tag des Formulars im HTML fehlt. Während der tatsächlichen Entwicklung werden einige unvorsichtige Personen feststellen, dass beim Klicken auf die Schaltfläche nichts passiert. Überprüfen Sie einfach den Formularcode sorgfältig. Manchmal erledigt der Browser die Arbeit nicht für uns. 5.4 Formularelemente In Formularen werden mehr als ein Dutzend Tag-Elemente verwendet. Die häufig verwendeten und wichtigen Tags in der PHP-Entwicklung sind in Tabelle 5-1 aufgeführt. Tabelle 5-1 Beschreibung des Formularelements Beschreibung Eingabetyp="Kontrollkästchen"-Kontrollkästchen, mit dem Benutzer mehrere Optionen auswählen können Eingabetyp="Datei"-Feld zum Durchsuchen von Dateien, wenn eine Datei hochgeladen werden kann Wird verwendet, um ein modales Fenster zum Auswählen einer Datei zu öffnen Eingabetyp="versteckt" verstecktes Tag, das zum impliziten Senden von Variablenwerten in der Form verwendet wird Eingabetyp="Passwort" Passwort-Textfeld, das Wenn der Benutzer Zeichen in dieses Textfeld eingibt, werden diese durch die Einzeloption * input type="radio" ersetzt und angezeigt, mit der eine Reihe von Auswahlmöglichkeiten festgelegt werden können. Eingabetyp = „Zurücksetzen“ löschen und zurücksetzen Legen Sie den Formularinhalt fest, der verwendet wird, um den Inhalt aller Textfelder im Formular zu löschen und die Auswahlmenüelemente auf ihre Anfangswerte zurückzusetzen Eingabetyp = „Senden“ Schaltfläche zum Senden des Formulars Einzelzeilen-Textfeld „Eingabetyp = „Text““ Wählen Sie ein Dropdown-Listenfeld aus, das einzeln oder mehrfach ausgewählt werden kann. Die Standardeinstellung ist Einzelauswahl. Wenn Sie eine Mehrfachauswahlfunktion hinzufügen möchten, fügen Sie '; Im Allgemeinen Dynamisch generierte Menüs beziehen meist Daten oder Datenarrays aus der Datenbank und konvertieren sie in dynamische HTML-Menüs, sie können aber auch manuell erstellt werden. 5.5 Formularverarbeitungsmethoden 5.5.1 Überprüfen Sie die Quelle der Formularübermittlung Manchmal müssen wir die Quelle der Formularübermittlung verarbeiten, z. B. die Übermittlung nur an einen bestimmten Host oder das Skript selbst, um zu verhindern, dass jemand dasselbe Formular fälscht und an unser Programm übermittelt, was zu Sicherheitsproblemen führt. Wie wir bereits erwähnt haben, stellt das superglobale Server-Array $_SERVER von PHP eine Variable namens $_SERVER['HTTP_REFERER'] bereit, die zum Speichern der Quelle der vorherigen Seite verwendet wird, z. B. der Formularübermittlung oder der URL-Adresse eines Hyperlinks . Wenn jemand das Formular von seinem Computer aus sendet oder den aktuellen Skriptnamen direkt über die Browseradresse eingibt, enthält diese Variable die Formularquelle oder hat einen leeren Wert, damit wir sie über ihren Wert verarbeiten können. Das folgende Beispiel erlaubt nur der Datei selbst, das Formular zur Übergabe des Werts zu senden. Beispiel 5-2: formreferer.php – Bestimmen Sie die Formularquelladresse $action = $_SERVER['PHP_SELF']; if ($_SERVER['REQUEST_METHOD'] = = 'POST'){ $ref = $_SERVER['HTTP_REFERER']; $srv = "http://{$_SERVER['SERVER_NAME']}$action"; echo " Aktuell Die Quelle ist: $ref Die Serveradresse ist: $srv --------------------------------------- -------------------------------------------------- -- --- "; if (strcmp($srv, $ref) == 0){ echo "match"; } else{ echo "off-site Einsendungen nicht erlaubt "; } }else{ echo 'Bitte senden Sie das Formular ab';} ?>
Die in diesem Beispiel verwendeten $_SERVER-Servervariablen lauten wie folgt: Jeder: ? HTTP_REFERER speichert eine vollständige Quell-URL-Adresse. ? SERVER_NAME Aktueller Servername. ? PHP_SELF Der vollständige Pfad zum aktuellen Skript, einschließlich des Dateinamens. Wir können über „http:// == “ vergleichen. Wenn sie gleich sind, handelt es sich um eine Rechtsformularübermittlung, andernfalls wird sie nicht verarbeitet. Führen Sie das Skript Beispiel 5-2 aus und klicken Sie auf die Schaltfläche „Senden“. Das Ergebnis ist in Abbildung 5-2 dargestellt.
Abbildung 5-2 5.5.2 Eine vollständige Formularverarbeitung Zuvor haben wir erfahren, wie das Formular auf einfache Weise verarbeitet werden kann. Im Folgenden erstellen wir ein komplexes Formular mit dem unten gezeigten Code.
该表单包括了常用表单元素:单行文本框、多行文本框、单选项(radio)、多选项(check Box),以及多选菜单.Eine ausführliche Erläuterung finden Sie weiter unten. ? maxlength ist ein mit dem Passwort-Textfeld verknüpftes Attribut, das die maximale Länge des vom Benutzer eingegebenen Passworts auf 10 Zeichen begrenzt. ? Das Listenfeld „Alter“ ist ein Listenmenü und seine benannten Attribute verfügen über eigene Werte zur Auswahl. Ausgewählt ist ein bestimmtes Attributauswahlelement. Wenn eine Option mit diesem Attribut verknüpft ist, wird das Element bei der Anzeige als erstes Element aufgeführt. ? Der Inhalt im Einführungstextfeld zeigt den Text, die Zeilen- und Spaltenbreite entsprechend den Zeilen und Spalten an. ? Fave_sport ist eine Gruppe von Optionsfeldern (Radio). Diese Gruppe von Optionsfeldern heißt beispielsweise nur eines, und es gibt nur eines Wert im Sendeskript. ? Wie bei der Einzeloption müssen auch alle Multioptionsmitglieder Attribute mit demselben Namen haben und dem Attributnamen müssen Klammern [] hinzugefügt werden, damit der Wert der Multioption an PHP gesendet wird Die Form eines Arrays, Sprachen ist diese Form. ? Das markierte Tag bezieht sich auf einen bestimmten Wert in Einzeloption und Mehrfachoption, der standardmäßig ausgewählt ist. Der Anzeigebildschirm des obigen Formulars ist in Abbildung 5-3 dargestellt.
Abbildung 5-3 Da das Formular im obigen HTML die POST-Methode zum Übertragen von Daten verwendet, werden die vom Benutzer übermittelten Daten im superglobalen Array von $_POST oder $_REQUEST gespeichert Verwenden Sie das superglobale Array $_POST oder $_REQUEST. Die Werte im Array _POST können die übermittelten Daten verarbeiten. Senden Sie die Daten im obigen Formular an das Skript someform.php. Die Verarbeitungslogik des Skripts lautet wie folgt: // Durch Beurteilung, ob der Variablenname der Schaltfläche definiert ist in $_POST, wenn ja, wurde das Formular übermittelt if(isset($_POST["btn_submit"])){ if (empty($_POST['username'])){ echo „Sie haben keinen Benutzernamen eingegeben“; exit(0); } if (empty($_POST['password'])){ echo „Sie haben kein Passwort eingegeben: "; exit(0); } echo "Ihr Benutzername: ".$_POST['user_name']." "; echo "Ihr Passwort (Klartext): ".$_POST['password'] ." "; echo "Dein Alter: ".$_POST['age']." "; if (!empty($_POST['Sprachen'])){ echo „Die von Ihnen ausgewählte Sprache ist:“ { verwenden verwenden verwenden verwenden verwenden verwenden ' durch verwenden durch durch durch durch durch durch durch out through out' out's'' ' out out through out ''s' ‐ to ‐‐‐‐‐‐ } to } else { ['develop_ide'])){ echo "Das Entwicklungstool für Sie verwenden ist:"; $ide){ Einleitung: ".nl2br($_POST['intro'])." "; echo "Webseite versteckter Wert (durch versteckten Tag-Wert übergeben): ".$_POST['from']. " "; } ?> Anweisungen: Verwenden Sie zum Senden die POST-Methode Das Formular und die Übertragung der Formulardaten über den Header-Teil des HTTP-Protokolls. Theoretisch gibt es keine Obergrenze für die Größe der Daten. Wenn Sie PHP für die POST-Übermittlung verwenden, ist die Dateigröße jedoch durch die PHP-Konfigurationsdatei (php.ini) begrenzt. Wir können den Parameter post_max_size in der Datei php.ini ändern und die Standardgröße von 2 MB auf die von uns benötigte Größe ändern Aufgrund der Eigenschaften des HTTP-Protokolls sollte dieser Wert nicht zu groß eingestellt werden und beträgt maximal 8 MB. 5.6 Andere Methoden zur Formularverarbeitung Werfen wir nun einen Blick auf zwei Programmiermethoden zur Formularverarbeitung und deren Vor- und Nachteile. 5.6.1 Verwenden Sie die Funktion import_request_variables() Verwenden Sie die Funktion import_request_variables(), um eine Sammlung globaler Variablen selektiv zu registrieren. Mit dieser Funktion können Sie die Werte von $_GET, $_POST und $_COOKIE importieren. Sie können auch jeder importierten Variablen ein Präfix hinzufügen. bool import_request_variables (String-Typen [, String-Präfix]) Der Typ String im Parameter erlaubt g-, p-, c-Zeichen oder eine beliebige Kombination aus 3 Zeichen. Unter diesen steht „g“ für die GET-Variable, „p“ für die POST-Variable und „c“ für Cookies. Hinweis: Es gibt einen Unterschied in der Reihenfolge der 3 Zeichen. Wenn „pg“ verwendet wird, überschreibt die POST-Variable die gleichnamige Variable „$_GET“. Das Variablenarray hat bei $_POST Vorrang. Der Präfixparameter dient als Präfix des Variablennamens und wird vor allen in den globalen Bereich importierten Variablen platziert.Wenn wir beispielsweise ein superglobales $_GET-Variablenarray mit dem Namen „userid“ haben und „pref_“ als Präfix angeben, erhalten wir eine globale Variable mit dem Namen $pref_userid. Wenn wir andere globale Variablen importieren möchten (z. B. die Variable $_SERVER), ziehen Sie bitte die Verwendung der Funktion extract() in Betracht (vorgestellt im Kapitel Funktionen). Beachten Sie, dass bei der Verwendung des Präfixes kein Konflikt mit vorhandenen Daten oder Variablennamen entstehen darf. Ein Skriptbeispiel, das die Funktion import_request_variable() zum Implementieren des Variablenimports verwendet, lautet wie folgt: //Importieren Sie den von POST übermittelten Variablenwert mit dem Präfix post_ import_request_variable("p", "post_") ; // Importieren Sie die von GET und POST übermittelten Variablenwerte, das Präfix ist gp_, GET hat Vorrang vor POST import_request_variable("gp", "gp_"); //Importieren die Variablenwerte von Cookie und GET, der Cookie-Variablenwert hat Vorrang vor GET import_request_variable("cg", "cg_"); Wenn wir den „pg-Parameter“ in import_request_variables() verwenden Funktion finden Sie im folgenden Skriptbeispiel: if( isset($_REQUEST['btn_submit'])){ echo "Normalerweise erhaltener Form-POST-Variablenwert: ".$_REQUEST[ 'Benutzername']." "; import_request_variables(" pg", "import_"); //Importierte Variablennamen anzeigen echo "Variablenwerte, die mit import_request_variables importiert wurden Funktion:.$import_Username; } ?> < ;form id="test_form" name="test_form" method="POST" action=""> Bitte geben Sie Ihre ein Name:
Formular> Das Formular fordert den Benutzer auf, einen Namen einzugeben. Nach Abschluss und Übermittlung zeigt das Skript den übermittelten Namen im Browser an, wie in Abbildung 5-4 dargestellt.
Abbildung 5-4 Hinweis: Wenn kein Präfix angegeben wird oder eine leere Zeichenfolge als Variablenpräfix angegeben wird, gibt PHP einen E_NOTICE-Fehler aus. Die Funktion import_request_variables() stellt uns eine Zwischenmethode zur Verfügung, die für die folgenden Situationen geeignet ist: 1. Wenn der Benutzer das Supervariablen-Array nicht verwenden kann; 2. Wenn der Parameter „register_globals“ der php.ini-Konfigurationsdatei „Off“ ist (der Standardwert ist „Off“ für Versionen nach PHP 5), verwenden Sie import_request_variables, um die Supervariablen-Arrays GET/POST/Cookie in den globalen Bereich zu importieren. 3. Während der Entwicklung ist es nicht erforderlich, $_GET oder $_REQUEST und eine Reihe langer superglobaler Array-Namen zu schreiben, solange der eingeführte Variablenbereich deklariert ist. 5.6.2 Verwendung der Funktion extract() Wir können die Funktion extract() verwenden, um beispielsweise eine Anweisung wie extract($_POST);extract($_GET); am Anfang der Empfangsseite hinzuzufügen Skript zum Exportieren mehrerer Array-Werte mit Supervariablen für die Formularverarbeitung, wie im folgenden Code gezeigt: @extract(i_addslashes($_POST), EXTR_OVERWRITE); @extract(i_addslashes($_GET), EXTR_OVERWRITE); @extract(i_addslashes($_COOKIE), EXTR_OVERWRITE); @extract(i_addslashes($_SESSION), EXTR_OVERWRITE); Sehen wir uns ein Skriptbeispiel an, das Extract zum Exportieren als normale Variable verwendet: // Konvertieren Sie die aus den Supervariablen-Arrays $_GET und $_POST erhaltenen Variablen in normale Variablen, sodass die Variablennamen direkt angezeigt werden können extract($_GET); extract($_POST); echo "Hallo, $username $age"; ?>
Die implementierte Schnittstelle ist in Abbildung 5-5 dargestellt.
5.7 Daten zwischen mehreren Seiten übertragen Wenn Sie auf ein sehr großes Formular stoßen, ist es unmöglich, alle Formulare auf einer Seite unterzubringen, und ein großes Formular muss in mehrere kleine Formulare zerlegt und gespeichert werden auf mehreren Seiten Beim Ausfüllen des ersten Formulars müssen die Werte des Formulars gesammelt und an die nächste Formularseite übergeben werden. Wir können die folgenden Methoden verwenden, um damit umzugehen. ? Versteckte Elemente des Formulars verwenden. ? Speichern Sie die Daten des aktuellen Formulars in SESSION (Einzelheiten finden Sie im Sitzungskapitel). ? Die aktuellen Formulardaten in der MySQL-Datenbank speichern. Sie können aus den oben genannten drei Optionen eine Lösung auswählen, die einfach zu verarbeiten und zu debuggen ist.Mit POST können Werte im Formular übertragen werden, sodass die Größe der übertragenen Daten kein Problem darstellt. Darüber hinaus können wir beim Debuggen des Programms anhand der HTML-Quelldatei feststellen, ob die aktuelle Variable der erwartete Wert ist . Für ein sehr großes Formular müssen wir eine Möglichkeit finden, es in zwei oder mehr Formulare aufzuteilen, um die Benutzereingabe zu erleichtern. Dazu ist die Übergabe von Werten zwischen Seiten erforderlich. Der Code lautet wie folgt:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn