Prüfe, ob der Benutzername in der Datenbank mit AJAX existiert

8

Grundsätzlich möchte ich meinem Anmeldeformular eine Funktion hinzufügen, die ich prüfen werde, ob dieser Benutzername bereits in der Datenbank vorhanden ist.

Ich habe ein paar Fragen über AJAX -

1) Ich möchte eine AJAX-Anfrage on_change-Funktion, so etwas wie das -

erstellen %Vor%

Also, so weit ich es verstanden habe, muss ich alle Validierungen in PHP innerhalb der validation.php-Datei vorgenommen haben, richtig? Ist eine spezielle Validierung erforderlich oder kann es nur eine einfache Validierung mit einer SQL-Anweisung sein - SELECT * FROM 'users' WHERE 'username' = '. $_POST['username'];

2) So wie ich verstanden habe, muss ich die POST-Werte auch über $ .ajax übergeben, richtig? Wenn ja, wie kann ich über die Datei validation.php darauf zugreifen?

3) Nachdem ich die Ergebnisse in der Datei validation.php erhalten habe, wie kann ich sie zurückgeben (wahr oder falsch - existiert oder existiert nicht)? Ich muss sie zurückgeben, und dann eine if-Prüfung, wenn es wahr ist - zeigen Sie einen Fehler, dass der Benutzername bereits existiert, sonst zeigen Sie nichts?

Hoffe, du hast verstanden, was ich erschaffen werde. Ich weiß, dass es viele Tutorials über das Internet gibt, aber ich mag es nicht, etwas über Tutorials zu erstellen, denn wenn ich es selbst erstelle, wird es beim nächsten Mal leichter zu verstehen sein;)!

EDIT: Außerdem erstelle ich meine Website mit CodeIgniter-Framework, also wie würde ich das URL-Attribut in AJAX an ein CodeIgniter-Modul übergeben?

    
Vdas Dorls 18.03.2012, 21:32
quelle

4 Antworten

10

Bevor Sie fortfahren, bittet SELECT * FROM 'users' WHERE 'username' = '. $_POST['username']; gerade um eine SQL-Injektion. Ich schlage vor, Sie verwenden PHP Data Objekte - Ссылка .

So wie ich verstanden habe, muss ich die POST-Werte auch über $ .ajax übergeben, richtig? Wenn ja, wie kann ich über die Datei validation.php darauf zugreifen?

Da dies eine einfache Anfrage ist, schlage ich vor, dass Sie JQuerys Methode $.post() verwenden. Hier ist ein Beispiel basierend auf dem, was Sie versuchen zu tun.

%Vor%

jQuerys Post-Methode benötigt 4 Parameter $.post(url, data, callback, datatype) . Im obigen Beispiel werden wir den Benutzernamen mit $('#username').val() auf validation.php schreiben und eine JSON Antwort erwarten. Wenn die Anfrage beendet ist, wird die Callback-Funktion mit data als Antwort von der Anfrage ausgeführt. Da wir angegeben haben, dass diese Antwort JSON sein wird, können wir genau wie ein natives Objekt in Javascript darauf zugreifen. Jetzt gehen wir in die validation.php

Wie oben erwähnt, habe ich vorgeschlagen, dass Sie PDO für Ihren Datenbanktreiber verwenden. In diesem Beispiel zeige ich Ihnen eine grundlegende Verwendung davon.

%Vor%

Nun zur Erinnerung, unser jQuery-Skript schreibt nach validation.php , wo es einen Benutzernamen aus der Datenbank auswählt. Es wird ein JSON -Objekt zurückgegeben, das einen Schlüssel von exists hat. Dies ist ein boolescher Wert, der angibt, ob der Benutzername bereits als Zeile in Ihrer Datenbank existiert. Wenn die Anforderung über jQuery abgeschlossen wurde, können Sie basierend auf dem Ergebnis der Abfrage das tun, was Sie benötigen. Ich hoffe, dies ist eine gründliche Erklärung und führt Sie zu dem, was Sie erreichen möchten.

    
Austin Brunkhorst 18.03.2012, 22:14
quelle
4

Wenn Sie Tutorials im Internet lesen, können Sie viele Dinge lernen. Ich empfehle Ihnen, die Anweisungen auf der folgenden Seite zu befolgen: Ссылка

Sie senden den Benutzernamen per Post an die angegebene PHP-Datei, die nach dem von Ihnen angegebenen Benutzernamen sucht.

Bitte verwenden Sie die Funktion mysql_real_escape_string für die Eingabezeichenfolge, damit Hacker keine sql-Injection-Attacke auf Ihrer Website verwenden können. Es funktioniert so:

%Vor%

Dann können Sie den Antwortwert in Ihrer Ajax jquery Funktion überprüfen. Wenn die Website den Wert "inuse" zurückgibt, wird eine Fehlermeldung angezeigt, dass der Benutzername bereits verwendet wird. Wenn nicht, ist der Benutzername verfügbar.

Aber wie gesagt, sehen Sie sich das Tutorial und das Wichtigste an: Verwenden Sie mysql_real_escape_string, um SQL-Injection-Angriffe zu verhindern

    
Bhawk1990 18.03.2012 21:45
quelle
0

Hier ist, was ich auf einer meiner Website getan habe: auf validation.php Ich zähle die Anzahl der Mitglieder mit dem Benutzernamen, dann ist hier das jquery-Skript:

%Vor%     
romainberger 18.03.2012 21:44
quelle
-2
  1. if (mysql_num_rows(mysql_query("SELECT * FROM users WHERE username='".$_POST['username']."'")) < 1) { 
        true; 
    } else { 
        false; 
    }
    
  2. Sie können es mit get oder post Methoden übergeben. In validation.php musst du nur $somevar=$_POST['somevar'];

  3. schreiben
  4. Wie ich gerade gesagt habe, können Sie Variablen nicht per Post weitergeben oder Methoden erhalten - um diese Aufgabe zu erfüllen, müssen Sie uns GET holen.

Ich hoffe, ich war hilfreich;)

    
Mindaugas Jakubauskas 18.03.2012 21:37
quelle

Tags und Links