Rumah >pembangunan bahagian belakang >masalah PHP >PHP melaksanakan pangkalan data log masuk
PHP melaksanakan pangkalan data log masuk
Dalam aplikasi web moden, pengesahan pengguna adalah amat penting. Kaedah pengesahan yang biasa adalah untuk pengguna memasukkan nama pengguna dan kata laluan Selepas menerima permintaan, pelayan akan mengesahkan sama ada maklumat yang dimasukkan oleh pengguna adalah betul Hanya selepas pengesahan berjaya, maklumat yang berkaitan boleh diakses dengan jayanya. Semasa proses ini, kedua-dua pihak perlu bekerjasama untuk mencapai pengesahan pengguna biasa. Antaranya, menggunakan pangkalan data untuk menyimpan maklumat pengguna di bahagian pelayan pada masa ini merupakan salah satu kaedah pelaksanaan yang paling biasa.
Jadi bagaimana untuk menggunakan PHP untuk melaksanakan log masuk pengguna pangkalan data? Artikel ini akan menerangkan proses ini untuk anda.
Pertama sekali, kami perlu menjelaskan dengan jelas bahawa proses pengesahan pengguna biasanya termasuk langkah berikut:
Di bawah ini kami akan memperkenalkan langkah demi langkah bagaimana untuk log masuk ke pangkalan data.
Langkah 1: Cipta pangkalan data
Sebelum kita mula melaksanakan fungsi log masuk, kita perlu mencipta pangkalan data terlebih dahulu. Dalam artikel ini, kami menggunakan pangkalan data MySQL sebagai contoh. Mula-mula kita perlu memasang MySQL, kemudian log masuk ke MySQL dan buat pangkalan data bernama "ujian".
CIPTA ujian PANGKALAN DATA;
Selepas penciptaan selesai, kita perlu mencipta jadual pengguna. Dalam jadual pengguna ini, kita perlu menyimpan nama pengguna dan kata laluan pengguna.
BUAT pengguna JADUAL (
id INT(6) KUNCI UTAMA AUTO_INCREMENT TIDAK BERTANDA,
nama pengguna VARCHAR(30) BUKAN NULL,
kata laluan VARCHAR(30) BUKAN NULL
);
Langkah 2: Sambungkan ke pangkalan data
Sebelum menyambung ke pangkalan data, kami perlu mengkonfigurasi maklumat sambungan yang berkaitan terlebih dahulu. Maklumat ini termasuk nama pengguna, kata laluan, nama hos, port, dsb. pangkalan data. Kami boleh menyimpan maklumat konfigurasi ini dalam fail berasingan dan kemudian memasukkan fail ini jika diperlukan.
Fail konfigurasi, seperti config.php:
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "test";
?>
Seterusnya kita perlu menyambung ke pangkalan data dan memilih pangkalan data yang perlu kita gunakan. Proses ini biasanya memerlukan penggunaan objek mysqli dalam PHP.
include('config.php');
// Cipta sambungan
$conn = new mysqli($servername, $username, $password, $dbname) ;
//Kesan sambungan
jika ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
?>
Langkah3: Laksanakan log masuk pengguna
Seterusnya kita perlu melaksanakan fungsi log masuk pengguna. Dalam contoh ini, kita perlu mendapatkan nama pengguna dan kata laluan daripada borang yang dimasukkan oleh pengguna. Kemudian hantar nama pengguna ke pangkalan data dan tanya sama ada pengguna itu wujud. Jika pengguna wujud, sahkan bahawa kata laluan adalah betul. Jika kata laluan adalah betul, maklumat kejayaan dikembalikan kepada pengguna, jika tidak maklumat kegagalan dikembalikan.
Pertama, kita perlu mencipta borang HTML yang mudah untuk mendapatkan nama pengguna dan kata laluan yang dimasukkan oleh pengguna.
Borang di atas menggabungkan nama pengguna dan kata laluan dihantar ke halaman login.php.
Seterusnya, kita perlu menggunakan kod PHP untuk mendapatkan nama pengguna dan kata laluan yang dimasukkan oleh pengguna daripada borang dan menghantar nama pengguna ke pangkalan data. Jika pengguna ditemui, sahkan sama ada kata laluan itu betul. Jika kata laluan adalah betul, maklumat pengguna disimpan dalam sesi dan maklumat kejayaan dikembalikan, jika tidak maklumat kegagalan dikembalikan.
include('config.php');
// Semak sama ada borang diserahkan
if($_SERVER["REQUEST_METHOD"] == "POST" ) {
// 主动设置编码,防止中文出现乱码 header('Content-type:text/html;charset=utf-8'); $input_username = mysqli_real_escape_string($conn,$_POST['username']); $input_password = mysqli_real_escape_string($conn,$_POST['password']); // SQL语句 $sql = "SELECT * FROM users WHERE username = '$input_username'"; $result = mysqli_query($conn,$sql); $row = mysqli_fetch_array($result,MYSQLI_ASSOC); $count = mysqli_num_rows($result); // 如果查询到了该用户,检查密码是否正确 if($count == 1) { if(password_verify($input_password, $row['password'])) { // 密码正确,将用户信息存入session中 session_start(); $_SESSION["username"] = $row['username']; $_SESSION["login_time"] = time(); echo '登陆成功'; } else { // 密码错误,返回错误信息 echo '密码错误'; } } else { // 没有查询到该用户,返回错误信息 echo '用户名不存在'; }
}
?>
Dalam kod di atas, fungsi mysqli_real_escape_string digunakan untuk melepaskan rentetan untuk mengelakkan kelemahan suntikan SQL. Pada masa yang sama, kami menggunakan fungsi password_verify untuk mengesahkan sama ada kata laluan yang dimasukkan oleh pengguna adalah betul Fungsi ini akan membandingkan sama ada kata laluan yang dimasukkan dan kata laluan yang disulitkan adalah sama.
Langkah 4: Pertimbangan Keselamatan
Selepas melengkapkan langkah di atas, kami boleh melaksanakan log masuk pengguna. Tetapi dalam aplikasi praktikal, kita juga perlu mempertimbangkan beberapa isu keselamatan, seperti: bagaimana untuk memastikan keselamatan kata laluan pengguna dalam pangkalan data, cara mencegah suntikan SQL, dsb.
Untuk memastikan keselamatan kata laluan pengguna dalam pangkalan data, kami perlu menyulitkannya. PHP menyediakan banyak kaedah penyulitan, seperti MD5, SHA1, Bcrypt, dll. Dalam artikel ini, kami menggunakan fungsi password_hash dan password_verify yang disertakan dengan PHP, yang membolehkan kami menyulitkan dan menyahsulit kata laluan dengan lebih mudah sambil memastikan keselamatannya.
Pada masa yang sama, kita juga perlu mempertimbangkan cara untuk mencegah kelemahan suntikan SQL. Dalam kod di atas, kami menggunakan fungsi mysqli_real_escape_string untuk mengelakkan kelemahan suntikan SQL. Pada masa yang sama, kami juga boleh menggunakan PHP PDO untuk melaksanakan operasi pangkalan data PDO menyediakan cara yang lebih selamat dan boleh dipercayai untuk mencegah serangan suntikan SQL dengan berkesan.
Dalam artikel ini, kami memperkenalkan cara menggunakan PHP untuk melaksanakan log masuk pengguna pangkalan data, yang merangkumi proses menyambung ke pangkalan data, mendapatkan input pengguna dan menanyakan pangkalan data. Melalui pengenalan artikel ini, saya percaya semua orang dapat memahami dengan lebih jelas cara melaksanakan fungsi log masuk pengguna dalam PHP, dan pada masa yang sama dapat melihat isu keselamatan yang terlibat.
Atas ialah kandungan terperinci PHP melaksanakan pangkalan data log masuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!