2 Stimmen

Dynamische Validierung eines HTML-Formulars mit PHP

Ich habe ein Kundenformular mit HTML und PHP entworfen. Aber jetzt ist das Problem, das Formular zu validieren. Ich möchte, dass die Validierung wie eine asp.net-Seite es tut: Sobald das Textfeld-Steuerelement seinen Fokus verliert, zeigt der Validator den Status.

Ist das in php möglich?

1voto

Jakub Punkte 20232

Nein, das ist ohne Javascript-Unterstützung nicht möglich, selbst ASP.NET verwendet Javascript, um die Validierung von Eingabefeldern in einem Formular zu unterstützen.

Sie sehen entweder eine AJAX-Lösung oder eine JS-Validierung auf der Client-Seite + PHP-Validierung auf der Server-Seite (Sie müssen immer Client- und Server-Validierung durchführen).

Aber nein, es gibt kein reines PHP für die clientseitige Validierung, PHP ist serverseitig.

0voto

George Velez Punkte 79

Wenn Sie sagen, dass Sie die Validierung auftreten möchten, "wenn das Textfeld den Fokus verliert", bedeutet dies, dass Ihre Absicht ist, Client-seitige Validierung zu tun. Ich rate Ihnen dringend davon ab, dies zu tun, wie Client-Seite "alles" sollte nicht vertrauenswürdig sein. Alle Validierung sollte serverseitig durchgeführt werden.

Nun, Sie können einige Jquery verwenden, um die "User Experience" Ihres Formulars zu verbessern, indem Sie die Validierung im Browser, aber machen Sie keinen Fehler, das ist nur für die Show.

Der folgende Code sollte Sie in die richtige Richtung führen

// $clean_post: Assumes you already sanitized for SQL injection attack vectors and
// that you have already ensured proper character encoding.

// Example is for a hypothetical first name
if( empty( $clean_post[ 'first_name' ] ) )
{
    // Do something to let the user know that first name is required
}
else
{
    // They entered a first name, this is good. Now check for
    // invalid characters. We will allow A-Z , backtick, apostrophe, space and dash
    if( preg_match( "/[^a-zA-Z `'\-]/" , $clean_post[ 'first_name' ] ) )
    {
        // Do something because they have illegal characters.
    }

}

0voto

ckimbrell Punkte 537

Sie müssen Javascript/JQuery verwenden, um in Echtzeit zu validieren. Wenn Sie PHP zur Validierung der Eingabe verwenden müssen, können Sie einen AJAX-Aufruf an ein PHP-Skript verwenden, das die Eingabe validiert und zurückgibt. Unten sehen Sie, wie der AJAX-Aufruf aussehen würde, der den Wert aus Ihrem Eingabefeld nimmt und ihn an ein PHP-Skript weitergibt. Wenn das PHP-Skript "passed" ausgibt, ist alles in Ordnung, wenn nicht, wird der Wert entfernt und der Benutzer gewarnt.

$.ajax({
    type:'post',
    data:'value='+$('#inputFieldID').val();
    url:'path-to-validate-script.php',
    success:function(msg){
        if (msg != "passed") {
            $('#inputFieldID').val('');
            alert("Invalid Input!");
        }
    }
});

0voto

bpeterson76 Punkte 12812

Die Sache mit der Validierung ist die: Die clientseitige Validierung sieht gut aus und kann sehr schnell eingerichtet werden. Es ist besser für den Benutzer, weil es "mehr" tun kann, um Probleme anzuzeigen (im Vergleich zu nur php ohne javascript)

Aber, und das ist ein großes Aber, es ist nicht narrensicher. Wenn Sie Javascript abschalten, ist Ihre Validierung im Eimer. Wenn Sie sich auf Javascript oder jQuery verlassen, gehen Sie unverantwortlich mit Ihren Daten um ..... Daher müssen Sie sich auf eine Hybridlösung verlassen - Frontend und Backend. Und vergessen Sie nicht die Datenbereinigung, entweder....oder Sie enden mit kleine Bobby-Tische als einen Ihrer Website-Benutzer.

Mein Unternehmen macht Formulare als Kernstück seiner Tätigkeit. Wenn ich eine benutzerdefinierte Validierung durchführen würde, würde ich durchdrehen und mich vom Dach stürzen. I dieses Skript verwenden um Zeit zu sparen....es ist schnell, effektiv und narrensicher, nur ein oder zwei Zeilen Code und ein paar Worte in der Klasse, damit es funktioniert. Auch hier handelt es sich nur um den Front-End-Teil des zweigleisigen hybriden Ansatzes.

Am hinteren Ende, wenn Sie übermitteln, müssen Sie nur Ihre Funktion die Problemeingaben zurückgeben, wenn es Validierungen fehlschlägt und zurück zur UI anzeigen, so dass es Warnungen ausgeben kann. Auf meine apps, ich habe eine zentrale "Problem" Warnbereich oben auf dem Formular, das zunächst ausgeblendet ist, die alle Back-End-Validierung Probleme von PHP fängt und zeigt sie an einer Stelle. Wenn sie sich die Zeit nehmen, meine Front-End-Validierung zu überschreiben, verdienen sie es, sich durch eine große Fehlermeldung durchzuarbeiten, denke ich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X