Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyemak tingkah laku log masuk pengguna dalam PHP

Bagaimana untuk menyemak tingkah laku log masuk pengguna dalam PHP

PHPz
PHPzasal
2023-03-31 09:05:331216semak imbas

Dalam pembangunan laman web, log masuk adalah fungsi penting. Artikel ini akan memperkenalkan cara menyemak tingkah laku log masuk pengguna dalam PHP.

1. Konsep asas menyemak log masuk pengguna
1.1 Pengesahan identiti pengguna
Pengesahan identiti pengguna secara amnya merujuk kepada menyemak sama ada nama pengguna dan kata laluan yang dimasukkan oleh pengguna sepadan dengan data yang disimpan dalam sistem. Nama pengguna dan kata laluan yang dimasukkan oleh pengguna biasanya memerlukan beberapa semakan asas pada klien (pelayar), seperti sama ada nama pengguna kosong atau sama ada panjangnya memenuhi keperluan.

1.2 Kawalan Sesi
Kawalan sesi merujuk kepada menggunakan beberapa mekanisme untuk memastikan pengguna boleh mengekalkan status log masuk mereka apabila memasuki pelbagai halaman tapak web selepas pengguna berjaya log masuk. Dalam PHP, kawalan sesi boleh dicapai melalui teknologi sesi.

2. Pelaksanaan kod untuk menyemak log masuk pengguna dalam PHP
Pelaksanaan kod untuk menyemak log masuk pengguna dalam PHP, biasanya pada halaman log masuk pengguna, menerima nama pengguna dan kata laluan yang dimasukkan oleh pengguna, dan menyemak kesahihannya di latar belakang. Berikut ialah contoh mudah:

index.php (halaman log masuk)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>用户登录</title>  
</head>  
<body>  
<form action="login.php" method="post">  
<label>用户名:</label><input type="text" name="username" required><br>  
<label>密码:</label><input type="password" name="password" required><br>  
<input type="submit" value="登录">  
</form>  
</body>  
</html>

log masuk.php (halaman semak log masuk)

<?php  
session_start();    // 启用 session  
$username = $_POST[&#39;username&#39;];    // 获取用户输入的用户名  
$password = $_POST[&#39;password&#39;];    // 获取用户输入的密码  

if ($username == &#39;admin&#39; && $password == &#39;123456&#39;) {    // 假设 admin 为合法用户,密码为 123456  
    $_SESSION[&#39;username&#39;] = $username;    // 存储用户名到 session 中  
    header(&#39;Location: welcome.php&#39;);    // 跳转到欢迎页面  
} else {  
    echo "用户名或密码错误,请重新登录。";  
}  
?>

selamat datang.php ( Selamat Datang halaman)

<?php  
session_start();    // 启用 session  
if (isset($_SESSION[&#39;username&#39;])) {    // 判断是否已登录  
    echo "欢迎" . $_SESSION[&#39;username&#39;] . "登录成功!";  
} else {  
    header(&#39;Location: index.php&#39;);    // 如果未登录,跳转回登录页面  
}  
?>

Dalam contoh di atas, apabila pengguna memasukkan nama pengguna dan kata laluan pada halaman log masuk dan menyerahkan borang ke halaman login.php, halaman ini akan mengesahkannya Jika nama pengguna dan kata laluan adalah betul, ia akan Simpan dalam sesi dan lompat ke halaman alu-aluan welcome.php. Dalam halaman alu-aluan, ia akan menyemak sama ada pengguna sudah log masuk. Jika ya, mesej alu-aluan boleh dipaparkan, jika tidak, pengguna akan dialihkan semula ke halaman log masuk.

3. Teknik semakan log masuk PHP
3.1 Melindungi kata laluan
Untuk melindungi kata laluan pengguna daripada dibocorkan, kata laluan tersebut secara amnya perlu disulitkan dan disimpan. Dalam PHP, kata laluan boleh disulitkan menggunakan fungsi md5() atau fungsi sha1(). Contohnya:

$password = md5($_POST['password']);    // 将密码用 md5() 函数加密后存储

3.2 Mencegah serangan CSRF
Serangan CSRF (Cross-site request forgery) bermaksud penyerang berpura-pura menjadi pengguna dan menghantar permintaan kepada pelayan dengan memalsukan permintaan pengguna. Secara umumnya, untuk mengelakkan serangan CSRF, anda boleh menambah token yang dijana secara rawak pada borang dan kemudian menyemak kesahihannya di latar belakang. Contohnya:

index.php (halaman log masuk)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>用户登录</title>  
</head>  
<body>  
<form action="login.php" method="post">  
<input type="hidden" name="token" value="<?php echo uniqid(); ?>">     <!-- 添加随机 token -->
<label>用户名:</label><input type="text" name="username" required><br>  
<label>密码:</label><input type="password" name="password" required><br>  
<input type="submit" value="登录">  
</form>  
</body>  
</html>

log masuk.php (halaman semak log masuk)

<?php  
session_start();    // 启用 session  
$username = $_POST[&#39;username&#39;];    // 获取用户输入的用户名  
$password = $_POST[&#39;password&#39;];    // 获取用户输入的密码  

if ($_POST[&#39;token&#39;] !== $_SESSION[&#39;token&#39;]) {    // 检查 token 是否合法  
    echo "非法请求!";  
} elseif ($username == &#39;admin&#39; && $password == &#39;123456&#39;) {    // 假设 admin 为合法用户,密码为 123456  
    $_SESSION[&#39;username&#39;] = $username;    // 存储用户名到 session 中  
    header(&#39;Location: welcome.php&#39;);    // 跳转到欢迎页面  
} else {  
    echo "用户名或密码错误,请重新登录。";  
}  
?>

3.3 Mencegah serangan XSS
XSS ( Serangan skrip merentas tapak merujuk kepada penyerang yang menyuntik beberapa kod berniat jahat untuk mencuri maklumat pengguna atau mencapai kerosakan tertentu. Untuk mengelakkan serangan XSS, anda boleh menggunakan fungsi htmlspecialchars() untuk memproses input pengguna. Contohnya:

$username = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');    // 对用户名进行处理

4. Ringkasan
Artikel ini memperkenalkan konsep asas dan pelaksanaan kod untuk menyemak log masuk pengguna dalam PHP, serta beberapa teknik untuk menghalang serangan CSRF dan XSS. Dalam proses pembangunan sebenar, pelarasan dan pengoptimuman yang sepadan perlu dibuat mengikut keadaan tertentu.

Atas ialah kandungan terperinci Bagaimana untuk menyemak tingkah laku log masuk pengguna dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn