E-Mail- oder Benutzername-Login
Ich würde gerne fragen. Ich habe Felder namens E-Mail und Passwort
<code>$email = $_POST['email']; $password = $_POST['password']; $login = mysql_query("SELECT * FROM `users` JOIN `users_profile` USING (id) WHERE `email` = '".$email."' AND `password` = '".$password."' OR `username` = '".$email."' AND `password` = '".$password."' </code>
Das Obige ist meine Anmeldesyntax
Angenommen, der Benutzer gibt das E-Mail- oder Passwortpaar ein, ist die Anmeldung erfolgreich:
<code>`email` = '".$email."' AND `password` = '".$password."' </code>
Aber wenn der Benutzer den richtigen Benutzernamen und das richtige Passwort eingibt, kann er sich trotzdem anmelden
<code>`username` = '".$email."' AND `password` = '".$password."' </code>
Es ist nur so, dass die obige Syntax nur zum Anmelden per E-Mail und Passwort verwendet werden kann
Wenn Sie sich mit Benutzername und Passwort anmelden, schlägt die Anmeldung fehl
Bestätigen Sie das JOIN-Benutzerprofil und verwenden Sie die ID problemlos
Was ist das Problem?
Antwortinhalt:
Ich würde gerne fragen. Ich habe Felder namens E-Mail und Passwort
<code>$email = $_POST['email']; $password = $_POST['password']; $login = mysql_query("SELECT * FROM `users` JOIN `users_profile` USING (id) WHERE `email` = '".$email."' AND `password` = '".$password."' OR `username` = '".$email."' AND `password` = '".$password."' </code>
Das Obige ist meine Anmeldesyntax
Angenommen, der Benutzer gibt das E-Mail- oder Passwortpaar ein, ist die Anmeldung erfolgreich:
<code>`email` = '".$email."' AND `password` = '".$password."' </code>
Aber wenn der Benutzer den richtigen Benutzernamen und das richtige Passwort eingibt, kann er sich trotzdem anmelden
<code>`username` = '".$email."' AND `password` = '".$password."' </code>
Es ist nur so, dass die obige Syntax nur zum Anmelden per E-Mail und Passwort verwendet werden kann
Wenn Sie sich mit Benutzername und Passwort anmelden, schlägt die Anmeldung fehl
Bestätigen Sie das JOIN-Benutzerprofil und verwenden Sie die ID problemlos
Was ist das Problem?
Achten Sie darauf, Klammern hinzuzufügen, wenn Sie OR
verwenden.
SELECT * FROM `users` JOIN `users_profile` USING (id) WHERE (`email` = '".$email."' AND `password` = '".$password."') OR (`username` = '".$email."' AND `password` = '".$password."')
Es wird jedoch nicht empfohlen, ein solches SQL zu verwenden.
Sie können zunächst reguläre Ausdrücke im Code verwenden, um festzustellen, ob der Benutzer eine E-Mail-Adresse oder einen Benutzernamen eingibt. Wenn es sich um eine E-Mail handelt, verwenden Sie das E-Mail-Feld zur Abfrage, andernfalls verwenden Sie das Benutzernamensfeld.
Referenz: http://tool.oschina.net/regex#
Zuallererst Ihr Code kann problemlos mit SQL injiziert werden , also verwenden Sie bitte zumindest mysqli, ich persönlich empfehle PDO wärmstens.
Dann gehe ich persönlich davon aus, dass das Formular auf der Startseite eine Eingabe ähnlich dieser hat:
<code><input name="login" type="text" class="form-control" placeholder="用户名或者邮箱"></code>
Wir verwenden hier name="login"
, um email
oder username
zu ersetzen, dann:
<code>$field = filter_var($_POST['login'],FILTER_VALIDATE_EMAIL) ? 'email':'username'; // 这里的 $field 就是你的 欄位 (这边翻译为 字段 )</code>
Dann sieht die SQL-Anweisung wahrscheinlich so aus:
<code>$email = $_POST['email']; WHERE `".$field."` = '".$email."'</code>
Wieder einmal ist die Art, wie du schreibst, sehr gefährlich.
Informationsreferenz: http://php.net/manual/en/func...

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Wie verbinde ich mit PhpMyAdmin mit MySQL? Die URL zum Zugriff auf phpmyadmin ist normalerweise http: // localhost/phpmyadmin oder http: // [Ihre Server -IP -Adresse]/Phpmyadmin. Geben Sie Ihren MySQL -Benutzernamen und Ihr Passwort ein. Wählen Sie die Datenbank aus, mit der Sie eine Verbindung herstellen möchten. Klicken Sie auf die Schaltfläche "Verbindung", um eine Verbindung herzustellen.
