Latest web development tutorials
×

PHP Kurs

PHP Kurs PHP Kurze Einführung PHP installieren PHP Grammatik PHP Variable PHP echo/print PHP Datentypen PHP Konstante PHP Schnur PHP Die Betreiber PHP If...Else PHP Switch PHP Feld PHP Sortieren eines Array PHP Superglobals PHP While Verkehr PHP For Verkehr PHP Funktion PHP Magische Variablen PHP Namespaces PHP Objektorientiert

PHP Form

PHP Form PHP Formularauthentifizierung PHP Form - Erforderliche Felder PHP Form - Überprüfung E-Mail und URL PHP Komplette Formularinstanz PHP $_GET Variable PHP $_POST Variable

PHP Erweiterte Tutorial

PHP Mehrdimensionale Arrays PHP Datum PHP enthalten PHP Datei PHP Datei-Upload PHP Cookie PHP Session PHP E-mail PHP Sicherheit E-mail PHP Error PHP Exception PHP Filter PHP Erweiterte Filter PHP JSON

PHP 7 Neue Funktionen

PHP 7 Neue Funktionen

PHP Datenbank

PHP MySQL Kurze Einführung PHP MySQL Verbindung PHP MySQL Erstellen einer Datenbank PHP MySQL Erstellen Sie eine Datentabelle PHP MySQL einfügen von Daten PHP MySQL Legen Sie mehrere Daten PHP MySQL Prepared Statements PHP MySQL Lesen Sie Daten PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX Kurze Einführung AJAX PHP AJAX Datenbank AJAX XML AJAX Echtzeitsuche AJAX RSS Reader AJAX Abstimmung

PHP Referenzhandbuch

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Bildverarbeitung PHP RESTful

PHP Formular-Validierung

In diesem Kapitel wird erklärt, wie unsere PHP Formulardaten vom Client Validierung vorgelegt zu verwenden.


PHP Formular-Validierung

Note Im Umgang mit PHP Form brauchen wir Sicherheit zu berücksichtigen.

In diesem Kapitel werden wir Sie PHP Formularverarbeitung Datensicherheit, um zeigen Hacker zu verhindern und Spam müssen wir die Form der Datenvalidierung zu sichern.

HTML-Formular in diesem Abschnitt beschrieben enthält folgende Eingabefelder: müssen mit den optionalen Textfelder, Optionsfelder und einreichen Tasten verwendet werden:

Code anzeigen >>

Über Form sind Validierungsregeln wie folgt:

Feld Validierungsregeln
Name Muss. + Nur Buchstaben und Leerzeichen
E-Mail Muss. + Geben Sie eine gültige E-Mail-Adresse (einschließlich "@" und ".")
Standort Muss. Falls vorhanden, muss es eine gültige URL enthalten
Bemerkung Muss. Multi-line-Eingabefeld (Textfeld)
Geschlecht Muss. Sie müssen wählen

Lassen Sie uns zunächst auf der Ebene HTML-Formular Code aussehen:


Textfeld

"Name", "E-Mail" und "URL" Feld ein Texteingabeelement ist, ist die "Notizen" Feld ein Textfeld. HTML-Code wie folgt:

“名字”: <input type="text" name="name">
E-mail: <input type="text" name="email">
网址: <input type="text" name="website">
备注: <textarea name="comment" rows="5" cols="40"></textarea>

Radioknopf

"Gender" Feld ist ein Radio-Button, HTML-Code sieht wie folgt aus:

性别:
<input type="radio" name="gender" value="female">女
<input type="radio" name="gender" value="male">男

Formularelemente

HTML-Formular Code wie folgt:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Verwenden Sie dieses Formularmethod = "post" Methode , um Daten zu übermitteln.

Note Was ist $ _SERVER [ "PHP_SELF"] Variablen?

$ _SERVER [ "PHP_SELF"] ist ein super globale Variable liefert den aktuell ausgeführten Skripts Dateinamen mit dem Document-Root verbunden.

Also, $ _SERVER [ "PHP_SELF"] wird die Formulardaten an die aktuelle Seite zu senden, anstatt auf eine andere Seite zu springen.

Note Was ist htmlspecialchars () Methode?

htmlspecialchars () Funktion zu einigen vordefinierten Zeichen in HTML-Entitäten.

Die vordefinierten Zeichen sind:

  • & (Ampersand) wird & amp;
  • "(Doppelte Anführungszeichen) wird & quot;
  • '(Einfaches Anführungszeichen) wird & # 039;
  • <(Kleiner als) wird & lt;
  • > (Größer als) wird & gt;


PHP Form zu verursachen Aufmerksamkeit erforderlich, wo?

$ _SERVER [ "PHP_SELF"] Variablen könnten von Hackern verwendet werden!

Wenn Hacker Cross-Site-Scripting-HTTP-Verbindung mit angreifen, wird $ _ SERVER [ "PHP_SELF"] Variable in der Server-Skript implantiert werden. Der Grund dafür ist, dass Cross-Site-Scripting-ausführbare Datei auf den Pfad hinter angebracht ist, so $ _SERVER [ "PHP_SELF"] String HTTP-Links hinter dem JavaScript-Code enthalten.

Note XSS auch als CSS (Cross-Site - Script), Cross-Site - Scripting - Attacken bekannt. Ein böswilliger Angreifer manipulierte Webseite in HTML - Code einzufügen, wenn ein Benutzer die Seite eingebettete Web , das in den HTML - Code das Surfen auf der Kriminellen spezifischen Zweck zu erreichen ausgeführt.

Geben Sie das folgende Formular aus Datei "test_form.php" genannt:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Jetzt nutzen wir die URL der angegebenen Adresse "test_form.php" zu unterbreiten, wie in dem oben gezeigten Code wird wie folgt geändert:

<form method="post" action="test_form.php">

Doing so gut.

Allerdings wird der Benutzer unter Berücksichtigung der folgenden Adresse in Ihrem Browser-Adressleiste eingeben:

http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

Die obige URL wird als dem folgenden Code interpretiert und führen Sie es aus:

<form method="post" action="test_form.php/"><script>alert('hacked')</script>

Fügen Sie ein Skript-Tag Code und Alarmbefehl. Wenn die Seite geladen wird den Javascript-Code ausführen (der Benutzer wird ein Pop-up sehen). Dies ist nur ein einfaches Beispiel PHP_SELF Variable zu veranschaulichen werden von Hackern genutzt werden.

Bitte beachten Sie, dass jeder JavaScript - Code kann mit dem <script> -Tag hinzugefügt werden! Hacker diese Seite verwenden, können auf einen Server auf einer anderen Seite, der Seite Codedatei umleiten bösartigem Code zu schützen, kann der Code geändert werden, um die Benutzer-globalen Variablen oder Formulardaten zu erhalten.


Wie die $ _SERVER [ "PHP_SELF"] ausgebeutet zu vermeiden?

$ _SERVER [ "PHP_SELF"] von htmlspecialchars () Funktion zu vermeiden, ausgenutzt zu werden.

bilden Code wie folgt:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars (), um einige vordefinierte Zeichen in HTML-Entitäten. Wenn nun der Benutzer PHP_SELF Variablen verwenden möchte, sind die Ergebnisse wie folgt ausgegeben:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Die Sicherheitsanfälligkeit Versuch fehlgeschlagen!


Verwenden Sie PHP Form Datenvalidierung

Zunächst einmal wir Daten an den Benutzer () Funktion abgegeben haben wird über die PHP htmlspecialchars verarbeitet.

Wenn wir die htmlspecialchars () Funktion zu verwenden, versucht der Benutzer die folgenden Textfelder einreichen:

<script>location.href('http://www.w3big.com')</script>

Der Code wird nicht ausgeführt werden, weil es als HTML-Escape-Code gespeichert werden soll, wie folgt:

&lt;script&gt;location.href('http://www.w3big.com')&lt;/script&gt;

Der obige Code ist sicher und kann die Nachricht auf der Seite angezeigt oder einfügen werden.

Wenn der Benutzer das Formular abschickt, werden wir folgende zwei Dinge tun:

  1. Verwenden Sie PHP trim () Funktion, um die Benutzereingabedaten unnötige Zeichen (wie zum Beispiel: Leerzeichen, Tabulator, Newline) zu entfernen.
  2. Verwenden Sie PHP strip () Funktion, um die Benutzereingabedaten Backslash (\) zu entfernen

Lassen Sie diese Filterfunktionen in Abhängigkeit von unserer eigenen Definition geschrieben, dies erheblich die Wiederverwendbarkeit von Code verbessern können.

Die Funktion mit dem Namen test_input ().

Jetzt können wir test_input () Funktion alle Variablen in $ _POST zu erkennen, ist Script-Code wie folgt:

Beispiele

<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Ausführung einer Instanz »

Beachten Sie, dass, wenn wir das obige Skript ausführen, die von $ _SERVER [ "REQUEST_METHOD"] zu erkennen, ob das Formular abgeschickt wird. Wenn REQUEST_METHOD POST ist, wird das Formular abgeschickt - werden die Daten überprüft. Wenn das Formular nicht überspringt Überprüfung vorgelegt und zeigt einen leeren.

Verwenden Sie sind die Eingabeelemente in den obigen Beispielen optional, auch wenn der Benutzer eingeben keine Daten korrekt angezeigt werden können.

Im nächsten Abschnitt werden wir beschreiben, wie die Daten vom Benutzer eingegeben zu validieren.