Mengapa Borang Log Masuk Saya Tidak Boleh Bersambung ke Pangkalan Data MySQL?
Borang log masuk anda tidak dapat menyambung ke pangkalan data MySQL kerana beberapa sebab. Respons berikut menyediakan penyelesaian yang komprehensif untuk menangani isu yang berpotensi:
Pengendalian Kata Laluan Selamat:
Adalah penting untuk melindungi kata laluan pengguna dengan menggunakan pencincangan kata laluan. menyimpannya dalam teks biasa. Gunakan fungsi seperti password_hash() untuk menyulitkan kata laluan secara satu arah, memastikan keselamatannya.
Pencegahan Suntikan SQL:
Elakkan menggunakan pengguna- data yang dibekalkan secara langsung dalam pertanyaan SQL anda. Gunakan pernyataan yang disediakan dan ikat parameter untuk menghalang serangan suntikan SQL yang berniat jahat, yang boleh menjejaskan pangkalan data anda.
Fungsi mysqli dengan Kod Contoh:
daftar.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();
log masuk.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(); }
Kefungsian pdo dengan Kod Contoh:
Rujuk sumber ini untuk contoh terperinci pengesahan pengguna menggunakan PDO: [Jawapan: Pengesahan Pengguna PDO](https://stackoverflow.com/questions/5926241/php-pdo-user -pengesahan/5927236#5927236)
Atas ialah kandungan terperinci Mengapa Borang Log Masuk PHP Saya Gagal Menyambung ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!