Transkripte
1. Einführung: Eine Website kann verwendet werden, um einem Besucher
nur einige
Informationen zu zeigen, wie einem Magazin, einer neuen
Website oder Wikipedia. Wenn Sie jedoch
einige Daten vom
Besucher abrufen möchten , z. B. einen Kommentar, einen Suchbegriff oder eine
Zuweisung pro Farm, einen Suchbegriff oder eine
Zuweisung pro Farm,
benötigen
Sie eine Farm. Farm ermöglicht es dem Benutzer der
Website, Ihnen einige Daten zu senden. Sobald Sie diese Daten zumindest
auf dem Webserver haben , speichern
Sie
diese Daten höchstwahrscheinlich in einer Datenbank. Zu wissen, wie Daten
vom Benutzer in Ihre Datenbank gelangen, ist eine entscheidende
Fähigkeit für unseren Webentwickler. Am Ende dieser Klasse wissen
Sie, wie Sie eine Farm in HTML
erstellen. So verarbeiten Sie die Daten von dieser Farm auf dem
Webserver in PHP, um sicherzustellen, dass sie gültig sind. Und wie man diese
Daten sicher in einer MySQL-Datenbank speichert. Dies verwendet Best Practices und Industriestandards
für den Code. Hallo, ich bin Dave schleppen wert. Ich schreibe seit
1998
Webanwendungen und unterrichte seit 2012 online
Webentwicklung. Dieser Kurs richtet sich
an Anfänger in der Webentwicklung, die
beim Erstellen einer Website eine der
grundlegenden Fähigkeiten
erlernen müssen einer Website eine der
grundlegenden Fähigkeiten
erlernen . Daten von einem Besucher
Ihrer Website in eine
Datenbank auf dem Server abrufen . Im Klassenprojekt erstellen
Sie
Ihre eigene Farm in HTML, verarbeiten die Daten
aus dieser Farm in PHP und speichern sie in
einer MySQL-Datenbank. Grundkenntnisse in HTML, PHP und SQL werden empfohlen. Aber ich erkläre
den gesamten Code, den ich verwende zusammen mit Links zu relevanten Dokumentationen
, wo Sie weitere Details erhalten. Darüber hinaus steht der gesamte in
den Videos gezeigte
Quellcode zum Download
zur Verfügung. Wenn Sie direkt Hilfe
von mir benötigen, können
Sie im
Diskussionsbereich eine Frage stellen. Kurzerhand. Lasst uns anfangen.
2. Richte deine Entwicklungsumgebung: Installieren von empfohlenen Software: Um das Beste
aus der Klasse herauszuholen, empfehle
ich Ihnen,
den
in den Videos gezeigten Code selbst zu schreiben und auszuführen. Um dies zu tun,
benötigen Sie einen Webserver, PHP und einen
Datenbankserver installiert. Ich benutze den
Apache-Webserver mit PHP und dem
MariaDB-Datenbankserver. Mariadb ist voll
kompatibel mit MySQL. All dies ist völlig
kostenlos herunterzuladen und zu verwenden. Sie können
diese separat installieren. Am
einfachsten ist es jedoch,
ein Paket zu installieren , das einen Webserver,
PHP, einen Datenbankserver
und optional PHP, meinen
Admin für
die Verwaltung der Datenbank,
enthält PHP, einen Datenbankserver und optional PHP, meinen . Für Windows und Linux empfehle
ich x AMP zu installieren. Wählen Sie einfach den
entsprechenden Download für Ihr Betriebssystem hier
auf der offiziellen Website und befolgen Sie die
Installationsanweisungen. Für Mac empfehle ich MAMP. Laden Sie auch einfach
das MAMP-Installationsprogramm von der offiziellen Website herunter und folgen Sie
den Anweisungen. Beachtet, dass MAMP
die kostenlose Version ist und MAMP
Pro die kostenpflichtige Version ist. Die kostenlose MAMP-Version ist jedoch
mehr als genug für die Anforderungen
dieser Klasse.
3. Erstelle eine HTML-Datei und siehst sie in dem Browser: Beginnen wir damit,
eine HTML-Datei zu erstellen , die
schließlich eine Farm enthält. Dies ist der Stammordner
meines Webservers. Wenn Sie eines
der zuvor
empfohlenen Pakete verwenden , wie XML MAMP, wird hier der
Standardordner für Windows, Mac oder Linux angezeigt. Sie können dies jedoch in
einen anderen Ordner ändern oder einen
Unterordner verwenden, wenn Sie dies bevorzugen. Lassen Sie uns
hier eine neue Datei namens Farm Dot HTML erstellen. Dies wird
den HTML-Code für die Farm enthalten. Lassen Sie uns zum Beispiel eine Farm
erstellen, die Sie möglicherweise zum Einreichen
eines Support-Tickets haben. Bevor wir
die Farm erstellen, fügen wir einfach den
grundlegenden HTML-Code hinzu, den wir zum Erstellen eines HTML-Dokuments
benötigen. Wir beginnen mit dem Dokumenttyp, der
dem
Browser mitteilt, dass der folgende Code gültiges HTML ist. Wir brauchen dies, weil
es sich darauf auswirkt, wie der Browser diesen Code
interpretiert. Dann fügen wir ein HTML-Tag hinzu, das das Container-Tag
für den Rest des HTML ist. Hier drin fügen wir ein head-Tag und
hier ein Titel-Tag hinzu. Dieser Titel wird in
der Titelleiste der
Registerkarte im Browser angezeigt . Wir werden Support als Titel
der Seite angeben. Auch innerhalb des head-Tags fügen
wir ein Meta-Tag hinzu, das die Zeichensätze dieses Dokuments als UTF-8 angibt. Dies ermöglicht es uns, Zeichen aus
nicht-englischen Alphabeten
ohne Probleme zu
verwenden . Nach dem Head-Tag fügen
wir ein Body-Tag hinzu. Der HTML-Code hier
wird gerendert, um im
Hauptbrowserfenster angezeigt zu werden. Fügen wir vorerst einfach ein Headerelement der ersten Ebene hinzu, das den Text
enthält. Reichen Sie ein Ticket ein. Werfen wir einen Blick auf
das im Browser. Wenn ich diesen Dateinamen
an der lokalen Hostadresse angebe, sehen
wir den Inhalt
aus dieser Datei. Der Titel im Tab stammt
aus den Titelelementen. Und im Hauptteil des Dokuments haben
wir nur das Header-Element.
4. Ein Formular mit einer einfachen Texteingabe und assoziiertes Label hinzufügen: Als Nächstes fügen wir der Seite ein einzelnes
Eingabesteuerelement hinzu. zuerst im Körper Fügen
wir zuerst im Körper ein Farmelement hinzu. Dann werden darin Eingabeelemente
hinzugefügt, beide ohne Attribute. Vorerst. Der Browser. Dies zeigt eine einfache Texteingabe ,
in die wir Text eingeben können. Dieser einfache
Texteingabetyp ist der Standardwert. Wenn wir keinen Typ angeben. Wenn wir dem Eingabeelement
das type-Attribut hinzufügen und Text als Wert
angeben, sehen wir
dasselbe im Browser. Wenn ich
Texteingaben wie diese verwende, ziehe
ich
es vor,
den Typ anzugeben , obwohl dies der Standardwert ist, da viele verschiedene
Arten von Eingaben verfügbar sind, die wir in Kürze sehen werden. Als Nächstes fügen wir
dieser Eingabe ein Label hinzu, damit der Benutzer
weiß, was er eingeben soll. Beginnen wir damit, einfach etwas
Text vor das Eingabeelement zu schreiben.
Im Browser. Wir sehen diesen Text
vor den Eingaben, und es ist nur Text. Das ist in Ordnung, aber wir
können das verbessern. Lassen Sie uns diesen Text
mit einem Labelelement umgeben. Dies hat keinen Einfluss darauf, wie
die beschrifteten Texte aussehen, aber es wirkt sich darauf aus, wie sie funktionieren. Wir verknüpfen dieses
Label mit einer Eingabe, indem der Eingabe
zuerst ein
ID-Attribut hinzufügen. Ich gebe es auf
den Wert von name. Beachten Sie, dass
der Wert dieses Attributs innerhalb
des HTML-Dokuments eindeutig sein muss. Dann fügen wir dem Label vier
Attribute geben den Wert als
ID der Eingabe an. Wir möchten dies mit dem Browser
beschriftet verknüpfen. Wir können sehen, dass sich visuell nichts geändert
hat. Wenn ich jedoch
auf den Beschriftungstext klicke, wird
der Eingabefokus auf
die Texteingabe gelegt und
wir können mit der Eingabe beginnen. Darüber hinaus die Verknüpfung eines Labels mit
einer solchen Eingabe macht
die Verknüpfung eines Labels mit
einer solchen Eingabe die Farm für
Besucher
zugänglicher , die unterstützende Technologien
wie Bildschirmleser
verwenden, später
sehen andere Weise, dass die Möglichkeit, auf Labels wie
diese zu klicken , um eine Eingabe
zu aktivieren, die Farm einfacher zu verwenden. Daher benötigt jede Eingabe der Farm ihre eigenen zugehörigen
Labelelemente ,
damit die Farm einfacher zu verwenden
ist. Beachten Sie abgesehen, dass dieses Eingabeelement zwei Attribute
aufweist. Wie Sie wissen, können Sie
Attribute in jedem anderen angeben. Da sich das type-Attribut jedoch den Typ der angezeigten
Eingabe
auswirkt, ziehe
ich es vor, das type-Attribut
für Eingabeelemente immer an
die erste Stelle zu setzen . Wie es klarer macht, wenn Sie eine Farm
mit mehreren Eingaben haben.
5. Verschiedene Kontrollen: die Eingabe von Text hinzufügen: Bisher haben
wir in unserer Farm eine einzige Texteingabe. Als Nächstes fügen wir weitere
Eingaben zum Hinzufügen von Text hinzu. Es gibt mehrere
Eingabetypen, die hier aufgeführt sind. Wir werden uns später einige
der Nicht-Text-Typen ansehen. Wir haben bereits eine Texteingabe verwendet, aber es gibt einige andere
, die genau gleich aussehen. Zum Beispiel Schwanz,
Nummer und E-Mail. Diese sehen genauso aus wie
eine normale Texteingabe, haben
jedoch unterschiedliche
Funktionen. Fügen wir der Farm eine weitere
Eingabe hinzu. Diesmal gibt es eine
E-Mail-Typ-Eingabe , damit der Benutzer seine E-Mail-Adresse
eingeben kann. Mit der Namenseingabe wird
ein zugeordnetes Labelelement hinzugefügt, es mit der
Eingabe
verknüpft, indem das for-Attribut mit dem Attribut „
Inputs ID“ übereinstimmt . Der Browser. Es gibt das Eingabe-Steuerelement. Und wenn wir auf das Label klicken, wird
der Eingabefokus im Steuerelement
platziert. Die Eingabe sieht genauso aus wie normale Texteingaben und
verhält sich auf die gleiche Weise. Der Unterschied besteht darin, dass beim
Anzeigen der Farm auf einem mobilen Gerät mit
Bildschirmtastatur eine normale Texteingabe
die Standardtastatur verwendet. Die Tastatur für
E-Mail-Eingaben wird jedoch geringfügig unterschiedlich
sein. Zum Beispiel ist das At-Zeichen verfügbar und auch
auf einigen Geräten, ein Schlüssel, der automatisch zu
dem hinzufügt, was
Sie eingeben. Es ist ähnlich für eine Zahl
oder Telefoneingänge. Die Tastatur ändert sich,
um das Einfügen
des Datentyps zu erleichtern , der
in diese bestimmte Eingabe erwartet wird. Ein weiterer Vorteil dieser
Texte wie Eingabetypen
besteht darin, dass wir
den Inhalt der Eingaben
im Browser vor dem Absenden
der Farm validieren können . Wir schauen uns das später an. Eine Sache, die Ihnen vielleicht
aufgefallen ist, ist, dass diese Texteingabearten nur
eine Textzeile zulassen. Um eine Texteingabe hinzuzufügen, die mehr als
eine Textzeile
zulässt, verwenden
wir ein Textbereichselement. Fügen wir der
Farm eine hinzu, mit der der Benutzer eine Beschreibung
seiner Tickets hinzufügen wird . Wie bei den anderen Eingaben fügen
wir auch ein
zugehöriges Label hinzu. Beachten Sie, dass dies kein Eingabeelement mit
einer Art von Textbereich ist. Es ist ein Textbereichselement. Und im Gegensatz zu einem Eingabeelement müssen
Sie die
öffnenden und schließenden Tags haben. Im Browser. Der Textbereich wird
mit mehr als einer Zeile angezeigt. Und Sie können die
Eingabetaste drücken, wenn Sie
dieses Steuerelement eingeben , um eine neue Zeile hinzuzufügen.
6. Ein a hinzufügen, um die Formatierung in das Formular zu hinzufügen: Bevor wir uns
mehr Arten von Eingaben ansehen, fügen
wir dieser Farm etwas
Styling ,
damit es einfacher ist zu
sehen, was los ist. Styling mit CSS geht über
den Rahmen dieser Klasse hinaus. Zwei schnelle Möglichkeiten,
Stile beim Entwickeln
einer Farm hinzuzufügen, besteht jedoch darin, ein
vorhandenes CSS-Framework zu verwenden. Einige davon wie
Bootstrap zum Beispiel
erfordern, dass Sie Ihren
HTML-Elementen Containerelemente und Klassen
hinzufügen , damit die Stile angewendet werden. Eine noch schnellere
Art des Styling der Farm,
damit Sie sich auf
die Funktionalität konzentrieren können, besteht jedoch damit Sie sich auf
die Funktionalität konzentrieren können darin, ein klassenloses CSS zu
verwenden. Es gibt viele
davon, und Sie können diese verwenden, indem Sie einfach die
CSS-Datei in das HTML aufnehmen. In dieser Klasse
werden wir Wasser-CSS benutzen. Sie können das CSS herunterladen
und lokal bereitstellen. Ich füge das Stylesheet
direkt von einem CDN ein, was wir tun werden. Wir kopieren diese
Codezeile und fügen sie in das
Head-Element unseres HTML ein. Jetzt im Browser hat
die Farm ein schönes Styling, hat
die Farm ein schönes Styling ohne dass wir Klassen hinzugefügt
haben müssen,
einschließlich der Hervorhebung, wann das Eingabesteuerelement den Fokus hat.
7. Füge ein Kontrollen, um einen Wert aus einer Drop-down-Liste zu wählen: Mit Textsteuerelementen kann
der Benutzer
einen beliebigen Wert eingeben. Fügen wir ein Steuerelement hinzu
, bei dem der Benutzer
aus einer vordefinierten
Werteliste auswählen kann . Für eine Werteliste verwenden
wir ein Select-Element. Jede Option innerhalb der
Liste ist ein Optionselement. Fügen wir drei Optionen für
die Priorität des Tickets hinzu:
niedrig, normal und hoch. Bevor wir uns dies ansehen, fügen
wir ein zugehöriges Label hinzu. Der Browser. Das Select-Element wird
als Dropdown-Liste angezeigt , in der Sie eine der
bereitgestellten Optionen
auswählen können . Wenn ich die Seite erneut lade, halte die
linke Umschalttaste auf
der Tastatur gedrückt , um die Farm zurückzusetzen. Beachten Sie, dass beim ersten Laden
der
Seite standardmäßig die erste Option
ausgewählt ist. Sie können diese
Standardeinstellung ändern, indem das ausgewählte Attribut
zur entsprechenden Option hinzufügen. Fügen wir
es zum Beispiel zur normalen Option hinzu. Jetzt im Browser. Die zweite Option ist standardmäßig
ausgewählt. Wenn dies also nicht geändert wird, ist
dies der Wert, der beim Absenden des Formulars
gesendet wird . Sie können beliebig viele Optionen in
der Auswahlliste haben ,
da die Liste mit
Bildlaufleisten angezeigt wird , wenn sie zu
lang für den Bildschirm ist.
8. Steuerungen hinzufügen, um einen Wert aus einer Reihe von Optionen zu wählen: Mit dem Auswahlsteuerelement wird
die Liste der Optionen nur in
einer Dropdown-Liste angezeigt , wenn Sie auf das Steuerelement
klicken. Auf diese Weise können Sie bei Bedarf viele
Elemente in dieser Liste
haben . Zum Beispiel eine
Liste von Ländern. Wenn Sie eine kleine Anzahl von
Optionen haben und möchten, dass diese immer
in der Farm sichtbar sind. Eine Alternative dazu
ist die Verwendung von Optionsfeldern. Optionsfeld ist ein
Eingabeelement mit dem Typ Radio. Um diesem ein Label hinzuzufügen. Anstatt dies
als separates Element hinzuzufügen, schließen
wir die Eingabe
in das Label ein. Wird dieses Steuerelement verwenden, um die Kategorie
des Tickets
anzugeben. Fügen wir also ein Label
mit dem Fehlertext hinzu. Dies ist eine alternative Möglichkeit ein Label einem Steuerelement
zuzuordnen. Der Vorteil davon ist,
dass Sie kein ID-Attribut für
das Steuerelement und vier
Attribute auf dem Label benötigen . Lassen Sie uns
kurz danach weitere Radioeingänge mit einem
Vorschlagslabel hinzufügen. Der Browser. Es gibt die beiden Optionsfelder. Und um sie auszuwählen, können
Sie auf
das Optionsfeld
selbst oder den Text klicken . Beachten Sie jedoch, dass Sie die
Auswahl nicht aufheben
können, sobald sie ausgewählt wurden. Um diese zu einer Gruppe von
Steuerelementen zu machen , bei denen Sie nur eines auswählen
können. Wir fügen das name-Attribut
beiden Eingabeelementen geben für jedes einzelne den gleichen
Wert an. jetzt im Browser Wenn wir jetzt im Browser eine Option auswählen, werden
die anderen ausgewählt. In einer Gruppe von
Optionsfeldern wie diesem kann
nur eine Option gleichzeitig ausgewählt
werden. Wenn ich die Seite erneut lade,
beachten Sie, dass standardmäßig keine
Option ausgewählt ist. Um eine Option standardmäßig auszuwählen, fügen
wir das geprüfte Attribut zu einem der Eingabeelemente hinzu. Wenn die Farm jetzt zum ersten Mal
angezeigt wird, ist
diese Option bereits ausgewählt. So fügen Sie dieser
Gruppe von Steuerelementen ein Label hinzu. Wir können keine
Labelelemente verwenden , da wir für jede Option
eines verwenden. Stattdessen schließen wir sie
in einen Feldsatz-Elemente ein. Fügen Sie dann kurz nach dem Tag
des öffnenden Felds Set ein
Legendenelement hinzu, das den Text
enthält
, den wir als
Beschriftung für diese Gruppe
von Steuerelementen anzeigen möchten , den wir als
Beschriftung für diese Gruppe
von Steuerelementen anzeigen . Der Browser. Dies umgibt die
Steuerelemente mit einer Zeile mit dem Text aus dem oben angezeigten
Legendenelement. Schließlich werden
Radioeingänge standardmäßig in Zeile angezeigt, in diesem Fall werden sie horizontal
nebeneinander angezeigt. Um jedes in
einer separaten Zeile anzuzeigen. Eine einfache Möglichkeit, dies zu tun, besteht darin, ein
Zeilenumbruchelement zwischen ihnen
hinzuzufügen. Jetzt werden die Optionen
im Browser vertikal
angezeigt. Mit einer Auswahlliste. Sie können beliebig viele
Optionen haben, aber Optionsfelder
eignen sich am besten für eine begrenzte Anzahl von Optionen, da sie immer auf der Farm
sichtbar sind.
9. Füge ein Kontrollen, um die Wähle zu wählen: Als Nächstes fügen wir ein
Kontrollkästchen-Steuerelement hinzu, mit dem wir zwischen zwei sich
gegenseitig ausschließenden Optionen auswählen können. Mit anderen Worten, ja oder nein, oder aus und so weiter. Das Kontrollkästchen ist ein Eingabeelement
mit einer Art von Kontrollkästchen. Um diesem eine Beschriftung hinzuzufügen, machen wir es genauso wie
mit den Optionsfeldern und
dem Schließen der Eingaben
und
des beschrifteten Textes in
einem Beschriftungselement. Fügen wir ein Kontrollkästchen hinzu, das der Benutzer
auswählen muss, um
einigen Allgemeinen
Geschäftsbedingungen zuzustimmen . Der Browser. Es gibt das Kontrollkästchen. Wir können
es aktivieren und deaktivieren , indem wir auf
das Kästchen selbst klicken, befindet sich auf dem Text des Etiketts. Sie können so viele Kontrollkästchen
auf einer Farm haben, wie Sie möchten. Und Sie können sie
in einem Feld platzieren wie wir es bei den
Funksteuerungen getan haben. Wenn du musst. Für
einen Wert
können mehrere Kontrollkästchen verwendet werden , bei dem Sie
mehr als eine Option auswählen können.
10. Füge ein Knopfleiste und Attribute, um die Daten des Formblatt zu senden: Jetzt können wir einige
Daten in die Farm eingeben. Wir brauchen eine Möglichkeit, diese
Daten an den Webserver zu senden. Fügen wir zuerst eine Schaltfläche
am Ende der Farm hinzu. Fügt ein Button-Element hinzu,
wobei der Inhalt zwischen den öffnenden und
schließenden Tags der
auf der Schaltfläche angezeigte Inhalt ist. Ich hinterlasse einfach einen einfachen Text, aber du kannst hier andere
Tags einsetzen, wenn du möchtest. Ich setze auch ein
Zeilenumbruchelement davor
, damit sich der Button in einer neuen Zeile befindet . Im Browser. Es gibt den Knopf.
Wenn ich es drücke, als
Übermittlung der Farm
bezeichnet wird, wird
die Farm erneut angezeigt. Was passiert ist, ist, dass das Formular an sich selbst übermittelt
wurde. Mit anderen Worten, es
wurde eine Anfrage an dieselbe URL wie die Farm gestellt , mit
den Daten aus der Farm,
die
an die Anforderung angehängt sind. Was sich geändert hat, ist die URL
in der Adressleiste des Browsers. Abfragezeichenfolge wurde hinzugefügt, wobei ein Schlüsselwertpaar der
Kategorie gleich ist. Wenn wir uns die
verschiedenen Eingaben ansehen,
beachten Sie, dass die
einzigen mit
Namensattributen die Optionsfelder
Kategorie sind. Nur Eingaben, die
ein Name-Attribut haben haben ihren Wertesinn, wenn
das Formular gesendet wird. Um dies zu demonstrieren,
fügen wir der ersten Eingabe ein Namensattribute mit einem Wert von name hinzu. Wenn wir die Farm neu laden und
dann erneut einreichen. Jetzt enthält die Abfragezeichenfolge einen zusätzlichen Wert
für den Namen. Wenn ich einen Wert in die
Namenseingabe eingebe und übergebe, ist dieser Wert
in der Abfragezeichenfolge enthalten. Machen wir das Gleiche für
die anderen Eingaben. Hinzufügen von Namensattributen
zum Kontrollkästchen E-Mail, Beschreibung, Priorität und
Geschäftsbedingungen. Wenn wir nun die Farm einreichen, sehen
wir die Werte in der Abfragezeichenfolge für
alle Felder. Wenn ich einen Wert
für einen von diesen eintrage, wird
dieser Wert gesendet.
11. Eine Datei zur Bearbeitung der a: Wenn wir die Farm
senden, wird derzeit eine Anfrage an
dieselbe Seite gestellt und die Daten von der Farm werden in
der URL-Abfragezeichenfolge gesendet. Dies ist die Standardeinstellung
und kann verwendet werden, wenn Sie Code vor dem
HTML-Code
hinzufügen, um die Daten zu verarbeiten. Verarbeitet die
Farmdaten jedoch in einer anderen Datei. Fügen wir zunächst eine neue Datei mit dem
Namen Process Farm Dot PHP hinzu. Zurück auf der Farm. Um diese Farm
Daten an diese neue Datei zu senden, fügen
wir dem Formular-Tag ein Aktionsattribut hinzu, das die
URL zu dem gewünschten Speicherort enthält. Da sich diese Datei im
selben Ordner befindet, können
wir einfach den Namen
der Datei, die neue Datei, eingeben. Fügen wir das PHP-Eröffnungstag hinzu. Die Daten aus der
Abfragezeichenfolge sind im
Cat-Superglobal verfügbar. Lasst uns das einfach ausdrucken. Wenn ich nun einige Daten
in das Formular eingebe und absende, wird das PHP-Skript
der Prozessfarm angefordert, wobei die Daten
noch in der Abfragezeichenfolge enthalten sind. Der Hauptteil der Antwort, wir sehen den Inhalt
des GET-Arrays. Jeder Array-Schlüssel stammt aus dem Name-Attribut
jeder Eingabe im HTML, und sein Wert ist der Wert, der in die Farm eingegeben
wurde. Die Daten in der
Abfragezeichenfolge so zu haben, ist in
Ordnung, wenn das Formular
beispielsweise
eine Suchmaschine ist , da es sich um die Art von URL handelt, die Sie unser Lesezeichen
teilen können. Wenn Sie
etwas mit diesen Daten machen
möchten, z. B. in einer Datenbank speichern möchten, möchten wir
es nicht in der URL haben. Dies liegt daran, dass
es ein Limit gibt, wie viele Daten in der URL
übergeben werden können. Außerdem ist es ein Sicherheitsrisiko. Hier könnten
sensible Daten vorhanden sein, und diese URLs werden im URL-Verlauf
des Browsers gespeichert. Die Daten von der
Farm könnten von jedem mit
Zugriff auf den Browser leicht
eingesehen werden . Stattdessen senden wir diese
Daten mit der Post-Methode. Um dies zu tun, fügen wir dem Farm-Tag
ein Methodenattribut mit
dem Wert post hinzu. Sie könnten angeben, get here, was der Standardwert ist, den wir
bisher verwendet haben. Wenn die Daten jetzt an das Skript
gesendet werden, werden
sie
im Post Super Global verfügbar sein. Lasst uns das stattdessen ausdrucken. Wenn wir nun einige
Daten eingeben und übermitteln, sehen
wir immer noch dieselben Daten
im Antworttext. Aber jetzt werden die Werte in der Abfragezeichenfolge nicht
angezeigt.
12. Die the von den Select, der Radio und the ändern: Werfen wir einen Blick auf die Werte , die
von der Farm gesendet werden. Die Priorität ist ein Auswahlsteuerelement als Dropdown-Liste
angezeigt wird. Der Wert, der beim Senden der Farm
gesendet wird , ist
der Text der ausgewählten Option. Du kannst das machen, wenn du willst. Es ist jedoch üblich, jeder Option mit
dem value-Attribut
einen anderen Wert zu
geben . Weisen wir jeder Option einen numerischen Wert
von eins bis drei zu. Wenn wir jetzt das Formular absenden, entspricht
der
übermittelte Wert unabhängig vom Wertattribut
für die ausgewählte Option. Dies ist nützlich, wenn
Sie
einen anderen Wert als
nur eine Textbeschriftung für
unsere Felder wie dieses speichern einen anderen Wert als
nur eine möchten. Dies ist beispielsweise auch nützlich, wenn Sie
Ihre Inhalte
in mehr als einer Sprache anzeigen . Die beschrifteten Texte
können also unterschiedlich sein, aber die zugrunde liegenden
Werte sind identisch. Werfen wir auch einen Blick auf
die Kategorie Funksteuerungen. Egal welches ich wähle. Der übermittelte Wert ist
immer die Zeichenfolge auf. Dies liegt daran, dass dies
der Standardwert für
Eingänge vom Radiotyp ist , damit die Optionsfelder
je nachdem, welcher ausgewählt wurde,
einen anderen Wert senden . Wir müssen jedem
einen Wert mit dem
value-Attribut geben . Diese Werte können sein,
was immer Sie wollen. Sie müssen den Text nicht wie
oben mit
dem Auswahlsteuerelement
übereinstimmen . Anstelle von Zahlen verwende ich
dieses Mal nur
ein paar einfache Strings. Wenn wir nun
das Optionsfeld auswählen, ist
dies der Wert
, der übermittelt wird. Schauen wir uns als Nächstes das Kontrollkästchen
an. Wenn ich es nicht überprüfe, wird
kein Wert
für dieses Steuerelement übermittelt. Wenn ich es überprüfe, ist der Wert die Zeichenfolge auf. Sie können diesem einen Wert auf die gleiche Weise wie
bei anderen Eingaben hinzufügen und ein Wertattribute hinzufügen. Lassen Sie uns einen Wert von eins hinzufügen. Wenn ich nun das Kontrollkästchen aktiviere
und die Farm einreiche, ist
dies der Wert
, der gesendet wird. Wenn Sie nur wissen möchten, ob
das Kontrollkästchen aktiviert ist oder nicht, reicht der
Standardwert aus. Für unsere Zwecke werden
wir es entfernen. Wenn Sie jedoch mehrere
Kontrollkästchen haben
und wissen möchten, welche aktiviert sind, können
Sie jedem
einen eigenen Wert geben.
13. Vermeide Fehler, wenn ein Wert nicht ein Teil der Formulardaten: Jetzt haben wir die Werte, die wir
wollen, von der Farm kommen. Wir können die
spezifischen Werte in
den PHP-Skripten bereit machen, um schließlich
in eine Datenbank einzufügen. Wie wir gesehen haben, befinden sich
die Werte aus der Farm
im Post-Array. Anstatt das gesamte Array
auszudrucken, weisen
wir den Wert für
die Namenseingabe einer Variablen zu und drucken ihn dann aus. Wenn ich einen Wert für
den Namen eingebe und
ihn übergebe , ist dies der Wert. Mal sehen, was
passiert, wenn ich
diesen Index in einen Wert ändere , der
nicht Teil der Farm ist. Zum Beispiel Nachname. Wenn ich jetzt die Farm einreiche, erhalten
wir einen undefinierten
Reiki-Fehler. Obwohl wir diesen Fehler nicht
bekommen werden. Wenn eine Eingabe mit diesem
Namen Teil der Farm ist, müssen
wir dennoch prüfen,
ob diese Werte in
der Nachbefragung vorhanden sind oder nicht,
bevor wir versuchen, sie zu verwenden. Dies liegt daran, dass die Farm leicht umgangen werden
könnte. Wir werden später ein Beispiel dafür
sehen. Eine Möglichkeit,
dies zu überprüfen, besteht darin,
eine Funktion wie ein
Reiki zusammen
mit dem ternären
Operator zu verwenden besteht darin,
eine Funktion wie ein
Reiki zusammen
mit dem , um die
Namensvariable so einzustellen , dass sie weiß, ob der
Wert nicht im Array enthalten ist. Eine weitere kürzere Möglichkeit wäre, den Null-Koaleszoperator zu
verwenden
, der dasselbe tut. Eine andere Alternative besteht darin,
die Filtereingabefunktion zu verwenden. Diese Funktion
erhält einen Wert aus der angegebenen Eingabe und
gibt einfach null zurück, wenn sie nicht vorhanden ist. Rufen wir diese Funktion auf, die angibt, dass wir
den Wert aus den Post-Eingaben abrufen möchten , den Namen des Wertes, den
wir erhalten möchten. Versuchen wir dies zuerst
mit einem Namen, nicht Teil des Familiennamens ist. Wenn wir die Farm einreichen. Jetzt bekommen wir null
anstelle eines Fehlers. Wenn wir dies in den Namen ändern
, der Teil der Farm ist, erhalten
wir den Wert
aus den Eingaben.
14. Einen Filter auf die a die die Datenart und den Bereich: Zusätzlich zur Rückgabe
des Wertes aus der Eingabe und gibt einfach
null zurück, wenn er nicht vorhanden ist. Die Filtereingabefunktion ermöglicht es uns, einen Filter
auf den Wert anzuwenden. Dies bedeutet, dass
wir bei der
E-Mail-Eingabe beispielsweise einen Filter anwenden können, um zu überprüfen, dass der Wert eine gültige
E-Mail-Adresse ist. Rufen wir die
Filtereingabefunktion erneut auf, diesmal für die
E-Mail-Eingabe aus der Farm. Das dritte Argument
gibt den Validierungs-E-Mail-Filter an. Anstatt die Namensvariable
auszudrucken, drucken
wir stattdessen die
E-Mail-Variable aus. Wenn ich das Formular mit einer leeren
E-Mail-Adresse absende, werden wir falsch. Wenn ich eine gültige
E-Mail-Adresse übergebe
, erhalten wir diesen
Wert als String. Wenn ich eine ungültige
E-Mail-Adresse eingebe
, validiert der Browser
das Feld und fordert eine gültige E-Mail-Adresse an, ohne dass
das Formular gesendet wird. Wir werden uns in Kürze die
clientseitige Validierung im Browser ansehen. Aber jetzt
deaktivieren wir dies einfach, indem das novalidate-Attribut zum
Formularelement im HTML hinzufügen. Wenn ich jetzt eine
ungültige E-Mail-Adresse eingibe und die Farm übertrage, erhalten
wir boolean false. Schon wieder. Wir erhalten die E-Mail-Adresse nur als
String, wenn sie gültig ist. Sonst werden wir falsch. Einige Filter haben Optionen , um eine zusätzliche
Validierung durchzuführen. Zum Beispiel der ganzzahlige
Validierungsfilter. Neben der Überprüfung, dass ein Wert eine gültige Ganzzahl ist, können
wir einen
Wertebereich angeben. Ein Wert, der eine gültige Ganzzahl ist, aber außerhalb dieses
Bereichs den Wert false zurückgibt. Der Wert für das
Prioritätsfeld in unserer Farm ist eine
ganze Zahl 12 oder drei. Fügen wir der Filtereingabefunktion
für
das Prioritätsfeld einen weiteren Aufruf hinzu und
geben den ganzzahligen
Validierungsfilter an. Im nächsten Argument geben
wir an, dass die Optionen
für diesen Filter mindestens eins
und maximal drei
angeben. Anstatt die E-Mail-Variable
auszudrucken,
wird dann die gerade hinzugefügte
Prioritätsvariable ausgegeben. Wenn ich die Farm mit
dem Standardwert
für unsere Priorität einreiche , erhalten
wir einen ganzzahligen Wert von zwei. Für andere Prioritäten erhalten
wir den äquivalenten
ganzzahligen Wert. Beachten Sie, dass alle Werte, die
von der Farm kommen , Strings sind, diese Funktion
diese beiden Ganzzahlen
jedoch umwandelt , falls gültig. Testen Sie die Bereichsüberprüfung. Lassen Sie uns vorübergehend
das Maximum auf zwei ändern. Wenn wir nun die Farm mit
einem Prioritätswert einreichen , der drei
entspricht, erhalten
wir boolean false. Der Wert ist
immer noch eine gültige Ganzzahl, jedoch nicht innerhalb des von uns angegebenen
Bereichs. Lassen Sie uns dies wieder auf drei ändern, damit es alle
Werte aus der Liste akzeptiert.
15. Filter die Checkbox und die Werte in ein Array: Schauen wir uns als Nächstes den Wert
des Kontrollkästchens an. Wie wir vorhin gesehen haben. Das Kontrollkästchen ist nicht aktiviert. wird kein Wert übermittelt. Wenn es aktiviert ist, ist
der Standardwert die Zeichenfolge auf. Rufen wir die
Filtereingabefunktion erneut auf und erhalten diesen Wert. Wie alles, was wir dafür wissen wollen ist, ob es überprüft wurde oder nicht. Mit anderen Worten, wir
interessieren uns nicht für den Wert. Dafür. Wir verwenden den
booleschen Validierungsfilter. Dies wird true zurückgeben, wenn
das Kontrollkästchen aktiviert ist. Anstatt die Prioritätsvariable
auszudrucken, werden stattdessen die
Begriffe eins ausgedruckt. Wenn wir das Formular absenden,
ohne
das Kontrollkästchen zu aktivieren, erhalten wir nein. Wenn wir das Kontrollkästchen ankreuzen, erhalten
wir boolean true. Jetzt erhalten wir
gefilterte Werte für die meisten
Eingaben in der Farm. einzigen fehlt die
Beschreibung und Kategorie. Fügen wir Aufrufe zur Filtereingabefunktion
für die Beschreibung hinzu. Und weiter Kategorie, ohne Filter
anzugeben,
da dies Strings sind, genau wie der Name. Jetzt haben wir eine Variable für jedes Farmfeld, das die Daten
enthält , die sich in diesem Feld befanden,
als die Farm zur
weiteren Verarbeitung bereit
eingereicht wurde . Dies ist eine Möglichkeit, dies mit mehreren Aufrufen der
Filtereingabefunktion zu tun. Es gibt eine alternative
Möglichkeit, dies
mit der
Filtereingabe-Array-Funktion zu tun . Auf diese Weise können Sie
mehrere Farmeingaben gleichzeitig filtern und von separaten Variablen ein Array
der gefilterten Daten
abrufen anstelle
von separaten Variablen ein Array
der gefilterten Daten
abrufen. Rufen wir den Filter in Hochformatwellenfunktion und filtern die Postdaten
von der Farm. Für das zweite Argument übergeben
wir ein Array mit einem Element für jedes
Farmfeld, das wir filtern möchten. Wenn wir keinen Filtertyp angeben
, können
wir den Wert auf null
auf das Standardfilter-Flag setzen. Für Eingaben, bei denen wir einen Filter
angeben, legen
wir den Wert der Array-Elemente auf
die Filterkonstante fest. Und wenn der Filter Optionen
wie das Prioritätsfeld hat, übergeben
wir ein Array,
das die Werte wie folgt festlegt. Dies gibt ein Array von Daten für die angegebenen Farmwerte zurück. Wenn wir das anstelle
der Begriffsvariablen ausdrucken. Wenn wir die Farm einreichen, erhalten
wir ein Array,
das die gefilterten Werte
von der Farm enthält . Die Filter wurden
wie bei den
einzelnen Variablen angewendet . Aber jetzt haben wir eine
Array-Variable, die
alle Werte anstelle einer
Variablen für jeden Unternehmenswert enthält die
alle Werte anstelle einer . Es liegt an Ihnen, welche Methode Sie beim Filtern von Eingabedaten
verwenden. Wenn Sie einzelne
Variablen oder ein Array bevorzugen.
16. Die Form --: Jetzt haben wir die
Daten von der Farm, wir können sie validieren. Ich arbeite mit
einem Array von Daten, aber Sie können mit einzelnen
Variablen arbeiten, wenn Sie möchten. Ich werde diese Variablen
im
herunterladbaren Quellcode kommentieren . Wir möchten diese Werte validieren bevor wir versuchen, sie in
der Datenbank zu speichern , damit die Daten in der Datenbank
immer gültig sind. Beginnen wir damit, den Namen zu
validieren. Wenn ein Wert
in das Namensfeld der Farm eingegeben wurde , gilt er als gültig. Wenn das Feld leer gelassen wurde, ist
dies
eine leere Zeichenfolge. Wenn der Wert nicht Teil
der Farmdaten ist, gibt die obige
Filterfunktion null
zurück oder eine leere Zeichenfolge oder Null sind ungültige Werte. Wir könnten den
Wert davon einer leeren Zeichenfolge und Null
mit einem Vergleichsoperator vergleichen. Aber die leere Funktion
wird true zurückgeben. Wenn es eines von denen ist. Wenn der Wert leer ist,
ist er ungültig. Um es einfach zu halten. Wenn es ungültig ist, wird das Skript mit
Farbdruck auf eine
geeignete Nachricht beendet . Diese Validierung wird ohnehin wahrscheinlich nicht
angezeigt, wenn wir eine clientseitige
Validierung im Browser haben, die in Kürze hinzugefügt wird. Probieren wir das mal aus. Wenn ich eine Farm einreiche, ohne etwas
in das Namensfeld
einzufügen, erhalten wir die Meldung
, dass der Name erforderlich ist. Wenn ich einen Wert eingebe, wird das Array von
Werten wie zuvor ausgedruckt. Machen wir das Gleiche
für das E-Mail-Feld. Wenn das nicht vorhanden ist, wird
es nein sein. Wenn es sich nicht um eine gültige E-Mail
handelt, ist sie falsch. Und sonst wird es der String-Wert
sein. Die leere Funktion
gibt ebenfalls true zurück. Wenn der Wert falsch ist, können
wir ihn einfach immer wieder verwenden, das Skript
mit einer geeigneten Nachricht zu beenden. Wenn ich nun die Farm mit
einem gültigen Namen, aber einer
leeren E-Mail-Adresse einreiche , erhalten
wir die
E-Mail-Validierungsnachricht. Wenn ich einen Wert
in das E-Mail-Feld eingebe, handelt es sich
aber nicht um eine gültige E-Mail. Dann bekommen wir die gleiche Nachricht. Wenn ich eine gültige E-Mail
eintrage, erhalten wir die Daten. die gleiche Weise können wir
die Beschreibung, die Priorität
und die Kategorie validieren die Beschreibung, die Priorität
und die . Die Kategorie. Neben der Bestätigung
, dass es vorhanden ist, können
wir auch seinen Wert validieren. Die Kategorie ist eine Zeichenfolge, die von den Werten
der Optionsfelder
stammt, entweder Fehler oder Vorschlag. Nur für den Fall, dass die
Farm umgangen wird. Wir müssen überprüfen, ob der
Wert eine der Strings ist. Der einfachste Weg
, dies zu tun, besteht darin die innere Array-Funktion zu
verwenden und zu
prüfen, ob
der Wert aus der Farm einer dieser Werte ist. Wenn dies nicht der Fall ist, beenden wir
das Skript mit einer Nachricht. Um dies zu testen,
entfernen wir das
Fehlerelement vorübergehend aus dem Array. Wenn wir nun die Farm
mit der ausgewählten
Standardkategorie einreichen , erhalten
wir die Meldung „Kategorie
ist ungültig“. Wenn wir die andere Kategorie auswählen, besteht sie die Validierung
und wir sehen die Daten. Jetzt haben wir getestet
, dass das funktioniert. Wir können die
Fehlerkategorie wieder hinzufügen. Schließlich können wir überprüfen, ob das
Kontrollkästchen aktiviert wurde. Der Filter setzt
den Begriffswert auf boolean true,
wenn er überprüft wird. Sonst wird es nein sein. Lassen Sie uns das nachsehen. Und wenn es nicht stimmt, stoppt das Skript
und gibt eine Nachricht aus. Wenn ich die Farm einreiche, ohne das
Kontrollkästchen zu aktivieren, erhalten
wir die Nachricht. Wenn ich es überprüfe,
besteht die Validierung und wir können die
gültigen Daten ausgedruckt sehen.
17. Das Formular mit der Seite von der Seite im Browser: Wir validieren derzeit
die Daten auf dem Server drucken bei Bedarf
Validierungsnachrichten aus. Wir können jedoch eine Anfrage
an den Server verhindern, indem wir zuerst die Farm
im Browser validieren. Dies ist auch benutzerfreundlicher, da es
dem Benutzer die Möglichkeit gibt, die Farm an den Stellen zu korrigieren, an
denen die Daten ungültig sind bevor sie gesendet werden.
Früher. Auf der Farm. Wir haben das novalidate-Attribut zur Farm hinzugefügt, um
die Validierung vorübergehend zu
deaktivieren. Wir können das jetzt entfernen. Fügen wir dann das
erforderliche Attribut zu den erforderlichen Feldern hinzu. Name, E-Mail,
Beschreibung und Begriffe. Als Auswahl listet
weiter Priorität auf. Und die Optionsfelder für die Kategorie haben
Standardwerte. Wir müssen diesen nicht das
erforderliche Attribut hinzufügen. Der Browser. Wenn wir nun versuchen
, eine leere Farm einzureichen, gelangen
wir zur Validierungsnachricht für jedes erforderliche Feld
, das leer ist. Was klein ist die
Validierungsnachricht neben jedem Feld. Und der Fokus liegt auf
dem Feld, das geändert werden
muss. Soweit es sich bei der E-Mail-Adresse um einen E-Mail-Eingabetyp handelt. Wir gelangen auch zur
Validierungsnachricht, wenn der Wert keine
gültige E-Mail-Adresse ist. Für das Kontrollkästchen. dies bei Bedarf markieren,
muss der Benutzer dies überprüfen, bevor die
Farm eingereicht werden kann. Wenn ich es überprüfe,
können wir
die Farm einreichen und wir sehen
die Daten ausgedruckt. Jetzt denken Sie vielleicht, dass wenn wir
im Browser validieren,
nicht im PHP-Skript auf
dem Server validieren müssen . Wir fügen
die Validierung im Browser hinzu, da dies die Benutzererfahrung
viel angenehmer
macht und
die Anzahl der Anfragen, die
wir an den Server stellen, reduziert . Es kann jedoch
leicht umgangen werden. Eine Möglichkeit, dies zu tun, besteht beispielsweise
darin, eine Post-Anfrage mit curl an
das
PHP-Skript der Prozessfarm zu senden . Curl ist ein Kommandozeilentool
zum Stellen von HTTP-Anfragen. Lassen Sie uns also curl verwenden, um
die Anforderungsmethode als Post anzugeben. Und wir werden ein paar
Fremdwerte hinzufügen , die
wir so hinzufügen. Wir senden diese
Anfrage
vom PHP-Skript auf unserem Server an den Prozess . Wir erhalten die
Antwortbeschreibung ist erforderlich. Dies ist die Nachricht von der serverseitigen
Validierung, da wir einen Wert für
den Namen und die E-Mail gesendet haben, aber keine weitere Beschreibung. Es gibt andere Möglichkeiten, die
Farm beispielsweise
mithilfe der Entwicklertools
im Browser manipuliert werden können. Grundsätzlich wird eine clientseitige
Validierung empfohlen. Die
serverseitige Validierung ist jedoch unerlässlich, auch wenn der
Benutzer sie nie sieht, da die Daten bereits
gültig sind , wenn das
Formular gesendet wird. Code, der
Farmdaten verarbeitet, sollte diese
Daten
immer auf dem Server validieren.
18. Erstelle eine Datenbank, um die Daten aus dem Formular zu speichern: Jetzt haben wir die Daten von der Farm und sie
wurden validiert. Wir können diese Daten in
eine Datenbank auf dem Server einfügen. Ich mache dies dem MariaDB-Datenbankserver , den ich lokal installiert habe, für alle Absichten und
Zwecke das gleiche ist, wie der angezeigte
MySQL-Befehl für beide DBMS
gültig ist. Sie haben ein ähnliches
Setup, wenn Sie
die vorgeschlagene Software zu Beginn
der Klasse installiert haben. Zögern Sie nicht,
jede relationale
Datenbank zu verwenden , die Sie mögen. Ich mache das in der
Kommandozeile. Aber wenn Sie möchten, können
Sie Ihren GAVI Ihrer Wahl verwenden, wie PHP, meinen Administrator
oder MySQL Workbench. Beginnen wir damit, eine
Verbindung mit dem Datenbankserver der
Befehlszeile über das Root-Konto herzustellen. Dann erstellen wir
eine neue Datenbank, die ich einfach Support dB nenne. Dann erstellen wir einen Benutzer nur für den Zugriff auf
diese Datenbank. Wir müssen es also nicht
mit dem Root-Konto tun. Der Benutzer hat volle Berechtigungen
für alle Tabellen in der neuen Datenbank,
die als User Support DB User bezeichnet wird
. Es ist auf dem lokalen Host-Server. Und wir weisen ein
zufälliges Passwort zu. Sie müssen sich
dieses Passwort notieren, wenn wir uns später von PHP aus mit der Datenbank
verbinden. Um dies zu überprüfen, können
wir die Konsole verlassen und die
Verbindung mit dem soeben erstellten Benutzer und
Passwort wiederherstellen. Dann können wir
die Datenbank mit den USA auswählen. Und das wählt es
ohne Probleme aus.
19. Erstelle eine Tabelle in der Datenbank zu erstellten, um a: Jetzt können wir
der Datenbank eine Tabelle hinzufügen, um Ticketdaten zu
speichern. Lassen Sie uns eine Tabelle namens
Ticket mit den
folgenden Spalten erstellen . Eine ID-Spalte, die eine
Ganzzahl ist, kann nicht null sein. Und wir setzen dies auf Auto-Inkrement ein, um
Werte automatisch zuzuweisen. Dann eine Namensspalte, die ein, ein,
ein 128-stelliger Varchar ist
, der nicht bekannt werden kann. Als nächstes eine Spalte für die E-Mail,
bei der es sich auch um einen
128-stelligen
Gutschein handelt, der nicht null sein darf. Dann eine Beschreibungsspalte, die Text ist und
auch nicht null sein kann. Nächste Spalte, weitere Priorität, bei der es sich um eine Ganzzahl ungleich null handelt. Und schließlich eine Spalte
namens category, die ein
32-Zeichen var char ist, das ist auch count be no. Bevor wir die
Klammern schließen, wird die ID-Spalte
zum Primärschlüssel
machen. Lasst uns das laufen lassen. Das lief fehlerfrei. Werfen wir einen Blick auf den
Tisch, den wir gerade erstellt haben. Und da ist es. Wie bereits erwähnt. Sie können dies in einer
GUI wie PHP, meinem Administrator, tun Wenn Sie dieses
SQL vorziehen, wird
diese Tabelle im herunterladbaren
Quellcode
der Klassen verfügbar sein .
20. Verbinde die Datenbank von PHP: Jetzt haben wir die Datenbank
und die Tabelle, die wir von PHP aus mit der
Datenbank verbinden
können. Wir müssen die Daten nicht mehr von der Farm
ausdrucken. Wir können diese Zeile aus
dem Prozessfarm-Skript entfernen. Erstellen wir zunächst
einige Variablen, die die Verbindungsdetails
für den Datenbankserver
enthalten. Der Host ist der gleiche wie
der Webserver localhost. Der Name der Datenbank, die wir
gerade erstellt haben, ist Support DB. Und wir erstellen
zwei weitere Variablen für den Benutzernamen und das
Passwort, die wir gerade erstellt haben,
um eine Verbindung mit der Datenbank herzustellen. Wir rufen die MySQL I
connect-Funktion geben den Host, Benutzernamen, das Passwort
und den Datenbanknamen weiter. Diese Variablen
müssen in dieser Reihenfolge sein, und es ist ein häufiger Fehler, sie in die falsche Reihenfolge zu
bringen. Wenn Sie möchten, können Sie benannte Argumente
verwenden indem Sie jedem Wert
den Namen des Arguments voranstellen. Wenn du das tust, spielt es keine
Rolle, in welcher Reihenfolge sie sich befinden. Dies gibt ein Objekt zurück, das die Verbindung
zur Datenbank
darstellt. Also weisen wir
das einer Variablen zu. Bevor wir diese
Datenbankverbindung verwenden können, müssen
wir sicherstellen, dass
wir eine Verbindung hergestellt haben, okay. Die Funktion MySQL connect
error number gibt einen Fehlercode aus den letzten
Verbindungsversuchen zurück. Wenn kein Fehler aufgetreten ist, entspricht
diese Rendite 00 Milliarde falsch. Wir können
dies überprüfen, indem wir
dies einfach als Voraussetzung
für eine if-Anweisung verwenden . Wenn ein
Verbindungsfehler aufgetreten ist, stoppen
wir das Skript wie
oben und drucken eine Nachricht aus. Wir können eine Beschreibung
des Fehlers erhalten, indem die MySQL
connect our function
aufrufen. Wenn kein Fehler aufgetreten ist. Lassen Sie uns vorerst
eine Nachricht ausdrucken, die besagt, dass die
Verbindung erfolgreich war. Probieren wir das mal aus. Wenn ich gültige Daten in
das Formular eingebe und absende, erhalten
wir die Nachricht „Verbindung
erfolgreich“. Mal sehen, was passiert, wenn ich eine der
Verbindungsdetails falsch
bekomme. Lassen Sie uns zum Beispiel das Passwort
ändern. Wenn ich jetzt das Formular abschicke, wird die
Verbindungsfehlermeldung speziell der Zugriff verweigert. Dies passiert, wenn die
Anmeldeinformationen falsch sind. Lasst uns das zurückändern. Die Angaben sind wieder korrekt. Sobald wir eine Verbindung hergestellt haben, können wir
diese Verbindung verwenden , um Datenbankabfragen zu
erstellen, wie wir in Kürze sehen werden. Nachdem wir damit fertig
sind, können wir die Verbindung optional mit der MySQL lie
close Funktion
von der Datenbank
trennen der MySQL lie
close Funktion die
Datenbankverbindung als Argument
übergeben. Dieser Schritt ist völlig optional, denn wenn wir das
Ende der Anfrage erreichen, wird
die Datenbankverbindung ohnehin automatisch
geschlossen. Sie können es
jedoch einbeziehen, wenn Sie es vorziehen.
21. Einfügen eines neuen Datensatzes in die Datenbank von PHP: Sobald wir uns erfolgreich
mit der Datenbank verbunden haben, können
wir einen neuen Datensatz einfügen. Um einen neuen Datensatz einzufügen, wird eine SQL-Insert-Anweisung
verwendet. Hier in der Datenbank. Wenn wir uns die Struktur der
von uns erstellten Tickettabelle ansehen , können
wir sehen, dass die ID-Spalte ein automatisches Inkrement-Feld
ist, sodass wir dafür keinen Wert
angeben müssen. Der Wert wird
automatisch zugewiesen. Alle anderen Spalten lassen
keine Nullwerte zu. Wir müssen Werte, die
nicht null sind, angeben. Vater. Wenn wir einen neuen Datensatz
einfügen, fügen
wir
hier direkt einen neuen
Datensatz ein, damit wir
die SQL sehen können, die wir benötigen. Wie zuvor. Sie können
dies in einer GUI wie PHP, meinem Admin, tun, wenn Sie es vorziehen. Wählen wir zuerst alle
Zeilen aus der Tickettabelle aus. Und wir können sehen, dass die
Tabelle derzeit leer ist. Fügen Sie einen Datensatz ein. Wir verwenden die Insert-Into-Anweisung , die den Namen der
Tabelle angibt, bei der es sich um Ticket handelt. In Klammern eine Liste
der Spalten, in die wir
Werte einfügen werden. Wie ich gerade erwähnt habe, müssen
wir die ID-Spalte nicht
angeben da ein Wert dafür automatisch zugewiesen
wird. Dann fügen wir das Schlüsselwort values hinzu, gefolgt von einer Liste
der Werte, die wir in Klammern einfügen
möchten. Ich gebe nur ein paar
Beispielwerte an. Beachten Sie, dass Zeichenfolgenwerte in
einfache Anführungszeichen und numerische Werte eingeschlossen werden
müssen einfache Anführungszeichen und numerische Werte eingeschlossen wie es die Prioritätsspalte nicht tun. Wenn wir dies ausführen, erhalten
wir eine Meldung, dass es in
Ordnung war und ein Datensatz eingefügt
wurde. Und wenn wir
alle Zeilen erneut auswählen, sehen
wir den Datensatz in der Tabelle, einschließlich des Wertes
, der
automatisch der ID-Spalte zugewiesen wurde . Jetzt können wir das Gleiche von PHP aus machen. Lassen Sie uns zuerst die letzten
beiden Zeilen entfernen. Dann lassen Sie uns eine Variable erstellen
, die die SQL enthält. Der erste Teil der
Insert-Anweisung, in dem wir die Spalten und
das Schlüsselwort values
angeben. Jetzt müssen wir
die Werte aus
der Farm einbeziehen , die sich
im Datenarray befinden. Es gibt mehrere Möglichkeiten, die SQL-Zeichenfolge zu erstellen. Zum Beispiel variable
Interpolation, String-Verkettung und so weiter. Lass uns mit der
String-Verkettung gehen. Wir verketten jeden
Wert mit dem nächsten trennen ihn durch Kommas. Am Ende schließen wir
die Klammern. Vergessen wir nicht, dass wir String-Werte
mit einfachen Anführungszeichen
umgeben müssen . Wir fügen das zu
den String-Werten hinzu, was alles
mit Ausnahme der Priorität ist. Bevor wir dies ausführen, drucken
wir die SQL-Zeichenfolge aus,
um zu sehen, was sie enthält. Wenn ich einige gültige Daten
übergebe, gibt es die SQL-Zeichenfolge. Anstatt
das auszudrucken, lassen Sie es uns ausführen. Um dieses SQL auszuführen, verwenden
wir die
MySQL-Abfragefunktion, die das Verbindungsobjekt und die SQL-Zeichenfolge als Argumente übergeben. Wenn dies fehlschlägt, wird Boolean false
zurückgegeben. Also lasst uns danach nachsehen. Und wenn es fehlschlägt, werden
wir das
Skript mit einer Nachricht beenden. Wir können eine Beschreibung
der Fehlermeldung mithilfe der MySQL-Fehlerfunktion erhalten ,
die das
Verbindungsobjekt
übergibt. Wenn es gelingt, drucken
wir vorerst einfach eine Nachricht aus. Probieren wir das mal aus. Wenn ich einige gültige Daten übergebe, erhalten
wir die
gespeicherte Nachricht. Die Tickettabelle
in der Datenbank. Es gibt den neuen Rekord
, den wir gerade eingefügt haben. Die Daten für diesen Datensatz in der Datenbanktabelle
stammen von der Farm im Browser. Ich werde nicht demonstrieren, was passiert, wenn das gerade
fehlschlägt. Wie wir das in Kürze behandeln werden. Es gibt jedoch ein sehr großes
Sicherheitsproblem mit diesem Code, das wir uns
im nächsten Video ansehen werden.
22. Schwer mit String-Werte, um einen: Wir haben gerade gesehen, wie das funktioniert. Wenn ich einfach einfache
Werte in die Farm eingebe, wird
ein neuer Datensatz
in die Datenbank eingefügt. Schauen wir uns jedoch an,
was passiert, wenn ich einen Wert
eingebe, der ein einzelnes Zitat
enthält. Zum Beispiel ein Nachname
wie O'Connor. Wenn ich die Farm einreiche, uns mitgeteilt, dass es
einen Fehler in der SQL gibt. Drucken wir vorübergehend
die vollständige SQL-Zeichenfolge aus , um zu
sehen, was sie enthält. Wenn wir den Code ausführen, gibt es die SQL-Zeichenfolge. Das Problem ist da. Wenn wir
die SQL-Zeichenfolge konstruieren, umgeben
wir jeden
String-Wert mit einfachen Anführungszeichen. Da dieser Wert jedoch ein einzelnes Anführungszeichen
enthält, endet
die Datenbank hier
die Zeichenfolge. Nach der Zeichenfolge
erwartet sie ein Komma und
den nächsten Wert. Der Rest des
Namens ist jedoch stattdessen da. Dies wird ungültig SQL gemacht. Im besten Fall
wird damit nur passieren dass das SQL ungültig ist. Benutzer wird eine
Fehlermeldung und der Datensatz angezeigt. Was würde es eingefügt? Im schlimmsten Fall
könnte dies jedoch verwendet werden, um etwas SQL in
die SQL-Zeichenfolge zu
injizieren, die als
SQL-Injection-Angriff bezeichnet wird. Ein Angreifer könnte etwas
SQL in die Formulareingaben einfügen, beginnend mit einem einzigen
Zitat, das
einige Werte löschen oder sogar das Admin-Passwort
aus der Datenbank
abrufen könnte einige Werte löschen oder sogar . Um dies zu vermeiden, müssen wir einfache Anführungszeichen innerhalb von
Zeichenfolgenwerten
entgehen, indem wir
ihnen ein umgekehrtes Schrägstrich voranbringen . Sie könnten dies manuell tun,
indem Sie beispielsweise die
Funktion zum Ersetzen der Zeichenfolge verwenden. Aber es gibt einen besseren Weg. Die MySQL Real
Escape-String-Funktion entgeht allen Sonderzeichen zur Verwendung in einer SQL-Anweisung. Unter Berücksichtigung
des
Zeichenrichts wird die
Datenbankverbindung berücksichtigt. Rufen wir diese Funktion für jeden Wert auf, den wir in die SQL
einfügen, übergeben das Verbindungsobjekt jedes Mal
als erstes Argument. Obwohl die Priorität
keine Zeichenfolge ist, nenne
ich sie auch weit diesen Wert. Nur um absolut
sicherzustellen, dass wir keinen nicht
vertrauenswürdigen Wert in die
SQL einfügen , ohne ihm zu entkommen. Wenn wir nun die Farm einreichen, können
wir sagen, dass dem
einzigen Zitat
entkommen wurde , indem ein Backslash
vorangestellt wurde. Lassen Sie uns die Zeile entfernen, in der
wir das SQL ausdrucken. Aktualisieren Sie die Seite im Browser. Jetzt erhalten wir die Datensatz-gespeicherte
Nachricht in der Datenbank. Es gibt den Datensatz, den wir gerade eingefügt haben und den
einzelnen Anführungswert enthält. Beachten Sie, dass es in der Datenbank nicht
entkommen ist. Der Wert dort ist, wie
er in die Farm eingegeben wurde. Beachten Sie auch, dass
es häufiger ist, eine gut formatierte Fehlerseite zu haben, wenn wir
einen Datenbankfehler erhalten es häufiger ist, eine gut formatierte Fehlerseite zu haben , wenn wir
einen Datenbankfehler im Gegensatz zu der
Fehlermeldung wie dieser. Und in einer Produktionsanwendung würde er das tun. Für die Zwecke
dieser Klasse werden
wir es jedoch einfach halten, so.
23. Verwende eine vorgestellte Anweisung, um einen neuen Datensatz zu einfügen: Wir haben gerade eine Möglichkeit gelernt, SQL-Injection-Angriffe zu
vermeiden. Und das ist, um
Sonderzeichen in
nicht vertrauenswürdigen Werten zu entkommen , wenn
wir das SQL erstellen. Das Problem
beim Erstellen
einer solchen SQL-Zeichenfolge besteht jedoch darin, dass sie zu
Code führt , der schwer
zu verstehen ist und daher schwierig
zu debuggen und zu warten ist. Es ist auch sehr leicht
zu vergessen,
einem neuen Wert zu entkommen , wenn wir beispielsweise eine
neue Spalte hinzufügen. Eine alternative Möglichkeit,
dies zu tun, die immer noch
SQL-Injection-Angriffe vermeidet , besteht darin, eine vorbereitete Anweisung zu
verwenden. Beginnen wir damit, das SQL zu ändern. Entfernt all diesen Code, in wir die
Werte manuell einfügen. Und stattdessen setzen
wir für jeden Wert einfach ein Fragezeichen. Dies wird als Platzhalter bezeichnet. Beachten Sie, dass wir keine
Anführungszeichen um die Zeichenfolgenwerte setzen müssen, sondern nur ein Fragezeichen,
wohin der Wert gehen wird. Wir werden dies nicht
mit der MySQL-Abfragemethode ausführen. können wir auch entfernen. Stattdessen rufen wir die
MySQL-Anweisung init-Funktion übergeben die Verbindung als Argument zum Erstellen
einer
vorbereiteten Anweisungsobjekte. Dann rufen wir die
MySQL-Anweisung pro Paar auf übergeben dieses Objekt
und die SQL-Zeichenfolge. Dies gibt einen booleschen
Erfolgswert zurück. Lassen Sie uns nachsehen,
ob das falsch ist. Und wenn ja, stoppt das Skript, das die
Fehlermeldung wie oben beschrieben ausgibt. An diesem Punkt alle Syntaxfehler in
der SQL abgefangen. Als Nächstes verbinden wir Werte mit
den einzelnen Platzhaltern
in der SQL-Zeichenfolge, die als Bindung bezeichnet wird. Um dies zu tun, rufen wir die MySQL-Anweisung
bind-Parameterfunktion auf. Wenn wir Werte
an die Platzhalter binden, geben
wir für
jede Variable einen Typ an, wobei eine Zeichenfolge
einzelner Zeichen verwendet wird, wobei jedes Zeichen einer der Variablen
entspricht. Die Charaktere, die wir benutzen können. Ai für ganzzahlige Werte, die vier Doppelwerte, wie für Strings und B für Blobs. Rufen wir die
Funktion auf,
die die Anweisungsvariable übergibt ,
als ersten Parameter. Der zweite Parameter ist
die Zeichenfolge von Typen. In diesem Fall wäre
es also ein S für den
Namen, da es sich um eine Zeichenfolge handelt, gefolgt von einem weiteren
s für die E-Mail, ein anderes für die Beschreibung. Ein Auge für die Priorität,
da dies eine Ganzzahl ist. Und schließlich noch ein
S für die Kategorie. Der Rest der Parameter sind die Werte dieser Variablen. Der Name, die E-Mail, die Beschreibung, Priorität und die Kategorie
aus dem Datenarray. Die Anzahl der Parameter muss mit der Anzahl der
Zeichen in der Zeichenfolge übereinstimmen. Andernfalls
wird eine Ausnahme ausgelöst. Sobald wir das gemacht haben. Um es auszuführen, rufen wir
die MySQL-Anweisungen
execute-Funktion auf,
die das Anweisungsobjekt
als Argument übergeben . Beachten Sie, dass
es im Gegensatz zu früher nicht möglich ist,
die zu
generierende SQL zu erhalten und im PHP-Code
auszudrucken. Dies liegt daran, dass die
Bindung der Variablen auf dem Datenbankserver
und nicht auf dem Webserver
erfolgt. Probieren wir das mal aus. Wenn ich einige Werte in
die Farm einfüge , die
einzelne Anführungszeichen enthalten. Wenn ich die Farm einreiche, sehen
wir die gespeicherte
Nachricht in der Datenbank. Es gibt den neuen
Datensatz , der die Werte
aus der Farm enthält. Es ist etwas
komplexer,
eine SQL-Anweisung mit
einer vorbereiteten Anweisung auszuführen. Aber das SQL selbst ist viel klarer und
daher viel weniger anfällig für Fehler, die durch
String-Verkettung verursacht werden
können , wie wir gesehen haben.
24. Verwende das Muster, um die Post-Redirect-Get: Bisher haben wir
mehrere Datensätze eingefügt, die wir hier
in der Datenbank sehen können. Für dieses Video leere ich
die Tabelle mit
den Truncate-Anweisungen
, damit es einfacher ist zu
erkennen, was los ist. Mit einem leeren Tisch. Geben wir einige Daten in die Farm ein und fügen
einen neuen Datensatz ein. Im Moment sehen wir die gespeicherte Meldung
des Datensatzes
in der Datenbank. Es gibt den neuen Rekord. jedoch die
Seite im Browser aktualisiere, Wenn ich jedoch die
Seite im Browser aktualisiere, erhalten wir
zuerst eine Nachricht, in der
wir aufgefordert werden, die Wiedervorlage erhalten wir
zuerst eine Nachricht, in der
wir aufgefordert der
Farm zu bestätigen, wenn ich die Seite im Browser aktualisiere. Dies liegt daran, dass das, was
im Browser angezeigt wird, das Ergebnis
einer Post-Anfrage ist. Und wenn wir es aktualisieren, werden
diese Daten erneut gesendet. Wir bestätigen dies. Wir sehen die
gespeicherte Nachricht des Datensatzes erneut. Die Datenbank. Es gibt jetzt zwei Datensätze mit den
Daten von der Farm. Jedes Mal, wenn wir diese Seite aktualisieren, wird
ein neuer Datensatz eingefügt. Wenn Sie gerade etwas wie
etwas gekauft oder eine Nachricht gesendet haben, möchten Sie nicht, dass dies
leicht wiederholt wird. Der übliche Weg,
dies zu vermeiden, besteht darin, das
Post-Redirect-Get-Muster nach
einer erfolgreichen Post-Anfrage zu verwenden . Anstatt mit
dem anzuzeigenden Inhalt zu antworten, wird der Browser sofort
auf eine andere Seite weitergeleitet. Fügen wir zunächst eine weitere Seite hinzu
, auf die wir umleiten können. Fügen wir eine neue Datei mit dem
Namen Success Dot HTML hinzu. Lassen Sie uns das Formular
den ersten Teil
des HTML in das Header-Element kopieren den ersten Teil
des HTML das Header-Element und in die neue Datei einfügen. Anstelle einer Farm fügen
wir einfach ein
Absatzelement hinzu, das den Text enthält. Danke. Und der schließende
Text und die HTML-Tags. Die Prozessfarm-Skripte. Anstatt diese Nachricht
auszudrucken, haben wir an
diesem Punkt erfolgreich einen neuen Datensatz
eingefügt. Hier wird
auf eine andere Seite umgeleitet. Wir tun dies, indem wir
einen Standort-Header senden ,
der die URL enthält , zu der wir umleiten. Und wir setzen den
Antwortstatuscode auch auf 303, was darauf hinweist, dass wir
zu einer Bestätigungsseite umleiten. Um den Header zu senden,
rufen wir die Header-Funktion auf und
übergeben eine
Zeichenfolge, die Position, einen Doppelpunkt und ein Leerzeichen enthält. Dann die URL, zu der wir
umleiten, die in diesem Fall
nur der relative
URL-Erfolgspunkt HTML ist . Um den Antwortcode festzulegen, verwenden
wir benannte Argumente,
um zu vermeiden, dass in diesem Funktionsaufruf andere erforderliche Argumente
festgelegt ihn auf 303
setzen. Dies ist das Ende dieses Skripts, aber es ist im Allgemeinen eine
gute Praxis, nachdem umgeleitet haben, um das Skript
unmittelbar danach zu beenden. Also werden wir einen Exit-Anruf einschließen. Probieren wir das mal aus. Jetzt mit ein paar anderen
Daten in der Farm. Wenn wir es einreichen, werden
wir auf
die Erfolgsseite weitergeleitet. Wenn ich
die Seite aktualisiere, wurde jedoch keine Nachricht angezeigt, in der wir
aufgefordert
wurden, die Einreichung
der Apotheke
in der Datenbank zu bestätigen . wurde nur ein Datensatz eingefügt.
25. Dein Kurs-Projekt: Erstelle ein Formular und speichere die Formulardaten in einer Datenbank: Jetzt bist du dran. Ihr Projekt für diese Klasse
besteht darin, eine Farm zu erstellen, um einige Daten zu erfassen und
diese Daten in einer Datenbank zu speichern. Entwerfen Sie zunächst eine Farm, die die Daten
erfasst, die Sie benötigen. Zum Beispiel ein Anmeldeformular, eine Künstlerfarm und so weiter. Verwenden Sie die relevanten Eingabetypen
für jedes Datenelement. Erstellen Sie als Nächstes ein PHP-Skript um die
übermittelten Farmdaten zu verarbeiten
und sicherzustellen, dass alle gültig sind. Erstellen Sie dann eine Datenbank mit einer Tabelle, um die
Daten aus der Farm zu speichern. Verwenden Sie verschiedene
Spaltentypen, um
jedes Datenelement nach Bedarf zu speichern . Sobald Sie die
Datenbanktabelle haben, können
Sie den
SQL- und PHP-Code schreiben , um einen Datensatz
in diese Tabelle einzufügen. Leiten Sie schließlich
zu einer Erfolgsseite um. Sobald ein Datensatz
erfolgreich eingefügt wurde. Sie können diese
Dokumentationswebsites als Referenz für den HTML-, SQL- und PHP-Code verwenden, den
Sie schreiben. Außerdem steht der in
der Klasse angezeigte Code zum Download zur Verfügung. Wenn Sie Hilfe benötigen, können Sie im Abschnitt zur
Unterrichtsdiskussion unten
eine Frage stellen. Ich freue mich auf
Ihre Projekte.
26. Schlussbemerkung: Herzlichen Glückwunsch, du hast den Kurs
beendet. In dieser Klasse haben Sie alles
gelernt, was Sie wissen
müssen, um eine Farm in
HTML zu erstellen , die Eingaben für
verschiedene Datentypen enthält, wie Sie
diese Daten in PHP validieren und wie Sie die Daten daraus
speichern wissen
müssen, um eine Farm in
HTML zu erstellen, die Eingaben für
verschiedene Datentypen enthält,
wie Sie
diese Daten in PHP validieren
und wie Sie die Daten daraus
speichern können Farm in eine
Datenbank auf dem Server. Dies ist eine der Schlüsselfähigkeiten für jeden Entwickler von
Webanwendungen. Wenn Sie gerade erst
anfangen oder
ein erfahrener Entwickler sind , der seine Fähigkeiten erweitern
möchte , Sie gerade einige
wichtige Techniken
für diese vielgefragte
Funktionalität gelernt . Vergessen Sie nicht,
Ihre Projekte in der Projektgalerie des
Kurses zu posten . Ich freue mich darauf, sie zu sehen. Endlich. Ich wollte mich nur bei dir bedanken, dass du
diesen Kurs absolviert hast. Ich hoffe, es hat dir gefallen. Wenn ja,
erwägen Sie bitte, eine Bewertung abzugeben. Und wenn es ein Thema
gibt, das ich behandeln soll, zögern
Sie bitte nicht, es mich wissen
zu lassen. Wir sehen uns in der nächsten Klasse.