Heim >Datenbank >MySQL-Tutorial >Warum kann mein PHP-Anmeldeformular keine Verbindung zu MySQL herstellen?
Warum kann mein Anmeldeformular keine Verbindung zur MySQL-Datenbank herstellen?
Ihr Anmeldeformular kann aufgrund von keine Verbindung zur MySQL-Datenbank herstellen mehrere Gründe. Die folgenden Antworten bieten umfassende Lösungen zur Behebung potenzieller Probleme:
Sicherer Umgang mit Passwörtern:
Es ist wichtig, Benutzerpasswörter durch die Verwendung von Passwort-Hashing zu schützen sie im Klartext zu speichern. Nutzen Sie Funktionen wie „password_hash()“, um Passwörter unidirektional zu verschlüsseln und so ihre Sicherheit zu gewährleisten.
SQL-Injection-Prävention:
Vermeiden Sie die Verwendung von Benutzer- bereitgestellte Daten direkt in Ihren SQL-Abfragen. Verwenden Sie vorbereitete Anweisungen und Bindungsparameter, um böswillige SQL-Injection-Angriffe zu verhindern, die Ihre Datenbank gefährden können.
mysqli-Funktionalität mit Code Beispiele:
register.php
// DB Credentials $servername = "localhost"; $username = "root"; $password = ""; $dbname = "user_accounts2"; // Secure Connection mysqli_report(MYSQLI_REPORT_ALL); error_reporting(E_ALL); ini_set("display_errors", 1); // Database Connection $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // User Registration if (isset($_POST['register'])) { $email = mysqli_real_escape_string($conn, $_POST['email']); $password = mysqli_real_escape_string($conn, $_POST['password']); // Password Hashing $hashed_password = password_hash($password, PASSWORD_DEFAULT); // Prepared Statement and Parameter Binding $stmt = $conn->prepare("INSERT INTO user_accounts2 (email, password) VALUES (?, ?)"); $stmt->bind_param("ss", $email, $hashed_password); // Query Execution $stmt->execute(); } // Close Connection $stmt->close(); $conn->close();
login.php
// DB Credentials and Secure Connection Same as register.php // User Login if (isset($_POST['login'])) { $email = mysqli_real_escape_string($conn, $_POST['email']); $password = mysqli_real_escape_string($conn, $_POST['password']); // Prepared Statement and Parameter Binding $stmt = $conn->prepare("SELECT * FROM user_accounts2 WHERE email = ?"); $stmt->bind_param("s", $email); // Query Execution $stmt->execute(); $result = $stmt->get_result(); if ($row = $result->fetch_assoc()) { // Password Verification if (password_verify($password, $row['password'])) { echo "Logged in successfully!"; } else { echo "Invalid credentials"; } } else { echo "User not found"; } // Close Statement and Connection $stmt->close(); $conn->close(); }
pdo-Funktionalität mit Codebeispielen:
Siehe hier Ressource für ein detailliertes Beispiel der Benutzerauthentifizierung mit PDO: [Antwort: PDO-Benutzerauthentifizierung](https://stackoverflow.com/questions/5926241/php-pdo-user-authentication/5927236#5927236)
Das obige ist der detaillierte Inhalt vonWarum kann mein PHP-Anmeldeformular keine Verbindung zu MySQL herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!