Rumah >pembangunan bahagian belakang >masalah PHP >Cara menggunakan PHP untuk melaksanakan fungsi kod pengesahan log masuk pengguna
Dengan perkembangan teknologi rangkaian, isu keselamatan laman web telah menarik lebih banyak perhatian. Sebagai pembangun laman web, kami perlu memastikan keselamatan maklumat akaun pengguna dan privasi peribadi. Antaranya, keselamatan proses log masuk pengguna juga sangat penting. Untuk melindungi keselamatan akaun pengguna, kami perlu menambah fungsi kod pengesahan pada halaman log masuk pengguna. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi kod pengesahan log masuk pengguna.
Kod pengesahan ialah teknologi yang membezakan manusia dan program komputer, yang boleh menghalang penyerang berniat jahat daripada menggunakan program automatik untuk melancarkan serangan pada tapak web dengan berkesan. Kod pengesahan biasa datang dalam bentuk yang berbeza seperti nombor, huruf, grafik, dsb. Pengguna perlu memasukkan kod pengesahan dengan betul semasa log masuk untuk mengesahkan identiti pengguna.
Dalam pembangunan tapak web, kod pengesahan biasanya dibenamkan dalam sistem log masuk untuk menghalang pengguna berniat jahat daripada mendapatkan kebenaran sistem melalui pemecahan kekerasan dan kaedah lain. Pada masa yang sama, kod pengesahan juga boleh menghalang pengguna yang berniat jahat daripada menggunakan program automatik untuk menyerang dan menyikat data.
Dalam PHP, anda boleh menggunakan perpustakaan sambungan GD untuk melukis pelbagai kod pengesahan, termasuk nombor, huruf, grafik, dsb. Di bawah ini kami mengambil kod pengesahan berangka dan abjad sebagai contoh untuk memperkenalkan cara membuat kod pengesahan dalam PHP.
2.1. Penjanaan kod pengesahan digital
Kod pengesahan digital ialah bentuk paling asas untuk membuat kod pengesahan dan yang paling biasa. Kod pengesahan berangka boleh dijana menggunakan fungsi dalam pustaka GD. Di bawah ialah kod sampel yang menjana kod pengesahan 4 digit rawak.
<?php session_start(); // 开启 session header('Content-type: image/png'); // 设置 Content-type $im = imagecreatetruecolor(80, 40); // 创建一个宽为80,高为40的验证码背景图 $bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色 imagefill($im, 0, 0, $bgColor); // 绘制背景 $code = rand(1000, 9999); // 随机生成一个 4 位数的验证码 $_SESSION['code'] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用 $textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色 imagestring($im, 5, 20, 12, $code, $textColor); // 绘制验证码 imagepng($im); // 输出 PNG 图片 imagedestroy($im); // 释放内存 ?>
Analisis:
2.2. Penjanaan kod pengesahan bercampur abjad angka
Kod pengesahan berangka terdedah kepada serangan, jadi untuk meningkatkan keselamatan, kami boleh menggunakan borang kod pengesahan bercampur abjad angka. Begitu juga, kita boleh melukis captcha alfanumerik menggunakan perpustakaan GD PHP. Di bawah ialah kod sampel yang menjana kod pengesahan alfanumerik 4 digit rawak.
<?php session_start(); // 开启 session header('Content-type: image/png'); // 设置 Content-type $im = imagecreatetruecolor(100, 40); // 创建一个宽为100,高为40的验证码背景图 $bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色 imagefill($im, 0, 0, $bgColor); // 绘制背景 // 字母数字集 $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $len = strlen($chars); $code = ''; for ($i = 0; $i < 4; $i++) { $code .= $chars[rand(0, $len-1)]; } $_SESSION['code'] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用 $textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色 // 使用随机字体和位置,绘制验证码 for ($i = 0; $i < 4; $i++) { $font = rand(1, 5); // 随机选择字体 $angle = rand(-20, 20); // 随机旋转角度 $x = $i * 20 + rand(0, 10); // 规定较小的x坐标值和x步进值,y的值也可以自定义 $y = rand(20, 30); $fontColor = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255)); $char = substr($code, $i, 1); imagettftext($im, 18, $angle, $x, $y, $fontColor, __DIR__.'/font'.$font.'.ttf', $char); } imagepng($im); // 输出 PNG 图片 imagedestroy($im); // 释放内存 ?>
Analisis:
Selepas menjana kod pengesahan, anda hanya perlu memperkenalkan program untuk menjana kod pengesahan dalam log masuk pengguna muka surat. Semasa mengesahkan input pengguna bagi maklumat akaun dan kata laluan, ia juga perlu untuk mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul.
Berikut ialah contoh kod untuk halaman log masuk pengguna.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form action="login.php" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br> <label for="code">Code:</label> <input type="text" id="code" name="code"><br> <img src="captcha.php" alt="Captcha"> <button type="submit">Submit</button> </form> </body> </html>
Sama seperti halaman log masuk pengguna biasa, kami menambah bahagian kod pengesahan semasa memasukkan akaun dan kata laluan, dan memperkenalkan program penjanaan kod pengesahan captcha.php. Selepas pengguna memasukkan nombor akaun, kata laluan dan kod pengesahan, klik butang hantar, dan sistem akan menyerahkan maklumat yang dimasukkan oleh pengguna untuk login.php untuk pengesahan.
Berikut ialah kod dalam login.php, yang digunakan untuk mengesahkan sama ada nombor akaun, kata laluan dan maklumat kod pengesahan yang dimasukkan oleh pengguna adalah betul.
<?php session_start(); $username = $_POST['username']; $password = $_POST['password']; $code = $_POST['code']; // 验证用户输入的验证码是否正确 if (strtolower($code) !== strtolower($_SESSION['code'])) { echo 'Invalid Code.'; exit; } // 验证用户输入的账号和密码是否正确 if ($username === 'admin' && $password === 'admin') { echo 'Login Successfully.'; } else { echo 'Invalid Username or Password.'; } ?>
Dalam login.php, kami mula-mula mengesahkan sama ada kod pengesahan yang dimasukkan oleh pengguna adalah betul. Jika kod pengesahan tidak sepadan, pengguna digesa untuk memasukkan kod pengesahan yang tidak sah dan keluar dari pengesahan log masuk. Jika tidak, kami mengesahkan sama ada maklumat akaun dan kata laluan yang dimasukkan oleh pengguna adalah betul. Jika betul, pengguna akan digesa untuk log masuk dengan jayanya, jika tidak, ia akan digesa bahawa nama pengguna atau kata laluan adalah tidak sah.
Artikel ini memperkenalkan cara menggunakan perpustakaan PHP dan GD untuk menjana kod pengesahan angka dan abjad angka bercampur, dan menggunakan kod pengesahan dalam tapak web untuk memastikan log masuk pengguna Keselamatan maklumat. Melalui mengkaji artikel ini, anda telah mempelajari cara untuk menghalang pengguna berniat jahat daripada menggunakan program automatik untuk menyerang tapak web anda, dan melindungi akaun dan privasi peribadi pengguna tapak web.
Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan fungsi kod pengesahan log masuk pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!