Maison > base de données > tutoriel mysql > Pourquoi mon formulaire de connexion PHP ne parvient-il pas à se connecter à MySQL ?

Pourquoi mon formulaire de connexion PHP ne parvient-il pas à se connecter à MySQL ?

Susan Sarandon
Libérer: 2025-01-03 18:50:39
original
164 Les gens l'ont consulté

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

Pourquoi mon formulaire de connexion ne peut-il pas se connecter à la base de données MySQL ?

Votre formulaire de connexion ne parvient pas à se connecter à la base de données MySQL en raison de plusieurs raisons. Les réponses suivantes fournissent des solutions complètes pour résoudre les problèmes potentiels :

Gestion sécurisée des mots de passe :

Il est crucial de protéger les mots de passe des utilisateurs en utilisant plutôt le hachage des mots de passe. de les stocker en clair. Utilisez des fonctions telles que password_hash() pour chiffrer les mots de passe de manière unidirectionnelle, garantissant ainsi leur sécurité.

Prévention des injections SQL :

Évitez d'utiliser l'utilisateur- fourni des données directement dans vos requêtes SQL. Utilisez des instructions préparées et liez des paramètres pour empêcher les attaques par injection SQL malveillantes, qui peuvent compromettre votre base de données.

Fonctionnalité mysqli avec code Exemples :

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();
Copier après la connexion

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();
}
Copier après la connexion

Fonctionnalité pdo avec exemples de code :

Référez-vous à cette ressource pour un exemple détaillé d'authentification utilisateur à l'aide de PDO : [Réponse : Authentification utilisateur PDO](https://stackoverflow.com/questions/5926241/php-pdo-user-authentication/5927236#5927236)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal