Heim >Datenbank >MySQL-Tutorial >Warum kann mein PHP-Anmeldeformular keine Verbindung zu MySQL herstellen?

Warum kann mein PHP-Anmeldeformular keine Verbindung zu MySQL herstellen?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 18:50:39176Durchsuche

Why Is My PHP Login Form Failing to Connect to MySQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn