Kawalan kebenaran ialah keperluan pembangunan web biasa, yang membolehkan aplikasi web memberikan hak akses yang berbeza kepada pengguna yang berbeza. Dalam PHP, kawalan kebenaran boleh dicapai dalam pelbagai cara Artikel ini akan menumpukan pada penggunaan Sesi dan pangkalan data untuk mencapai kawalan kebenaran.
1. Gunakan Sesi untuk melaksanakan kawalan kebenaran
Sesi ialah teknologi pengurusan keadaan yang biasa digunakan dalam pembangunan web Dengan menyimpan maklumat pengguna dalam Sesi, kami boleh menggunakannya pada berbilang halaman aplikasi. kongsi maklumat ini. Untuk melaksanakan kawalan kebenaran, kami boleh menyimpan maklumat pengguna dalam Sesi selepas pengguna log masuk dan menyemak sama ada Sesi wujud dalam halaman yang memerlukan kawalan kebenaran untuk menentukan sama ada pengguna mempunyai kebenaran untuk mengakses halaman.
Berikut ialah contoh mudah menggunakan Sesi untuk melaksanakan kawalan kebenaran:
<?php session_start(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { // 验证登录 $username = $_POST['username']; $password = $_POST['password']; if ($username == 'admin' && $password == '1234') { // 登录成功,保存用户信息到Session $_SESSION['user'] = array( 'username' => $username, 'role' => 'admin' // 权限角色 ); header('Location: index.php'); exit; } else { // 登录失败 $error = '用户名或密码错误'; } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <h1>登录</h1> <form method="post"> <label>用户名:</label><input type="text" name="username"><br> <label>密码:</label><input type="password" name="password"><br> <input type="submit" value="登录"><br> <?php if (isset($error)) { echo $error; } ?> </form> </body> </html>
<?php session_start(); // 检查Session是否存在,判断用户是否登录 if (!isset($_SESSION['user'])) { header('Location: login.php'); exit; } // 检查用户角色,判断用户是否有权限访问该页面 if ($_SESSION['user']['role'] != 'admin') { header('Location: unauthorized.php'); exit; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1>欢迎您,<?php echo $_SESSION['user']['username']; ?></h1> <p>这是管理员页面,只有管理员才能访问。</p> <a href="logout.php">退出登录</a> </body> </html>
<?php session_start(); // 销毁Session,用户退出登录 session_destroy(); header('Location: login.php'); exit; ?>
2. Gunakan pangkalan data untuk melaksanakan kawalan kebenaran
Dalam contoh menggunakan Sesi untuk melaksanakan kawalan kebenaran, maklumat pengguna disimpan dalam Sesi Jika aplikasi web mempunyai berbilang pelayan pada masa yang sama, perkongsian maklumat Sesi boleh menyebabkan masalah. Pada masa ini, kami boleh menyimpan maklumat pengguna dalam pangkalan data untuk mencapai kawalan kebenaran dalam persekitaran yang diedarkan.
Berikut ialah contoh mudah menggunakan pangkalan data MySQL untuk melaksanakan kawalan kebenaran:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `role` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<?php session_start(); $user = null; if ($_SERVER['REQUEST_METHOD'] == 'POST') { // 验证登录 $username = $_POST['username']; $password = $_POST['password']; // 查询用户信息 $con = mysqli_connect('localhost', 'root', '', 'test'); $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($con, $sql); $user = mysqli_fetch_assoc($result); mysqli_close($con); // 验证用户信息,保存用户信息到Session if ($user != null) { $_SESSION['user'] = $user; header('Location: index.php'); exit; } else { // 登录失败 $error = '用户名或密码错误'; } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <h1>登录</h1> <form method="post"> <label>用户名:</label><input type="text" name="username"><br> <label>密码:</label><input type="password" name="password"><br> <input type="submit" value="登录"><br> <?php if (isset($error)) { echo $error; } ?> </form> </body> </html>
<?php session_start(); // 检查Session是否存在,判断用户是否登录 if (!isset($_SESSION['user'])) { header('Location: login.php'); exit; } // 检查用户角色,判断用户是否有权限访问该页面 if ($_SESSION['user']['role'] != 'admin') { header('Location: unauthorized.php'); exit; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1>欢迎您,<?php echo $_SESSION['user']['username']; ?></h1> <p>这是管理员页面,只有管理员才能访问。</p> <a href="logout.php">退出登录</a> </body> </html>
<?php session_start(); // 销毁Session,用户退出登录 session_destroy(); header('Location: login.php'); exit; ?>
Ringkasan:
Artikel ini memperkenalkan cara melaksanakan kawalan kebenaran menggunakan Sesi dan pangkalan data. Kawalan kebenaran yang dilaksanakan menggunakan Sesi adalah mudah dan sesuai untuk aplikasi Web kecil yang dilaksanakan menggunakan pangkalan data adalah lebih fleksibel dan lebih sesuai untuk aplikasi Web yang besar. Tidak kira kaedah yang digunakan, kuncinya ialah memahami prinsip dan kaedah pelaksanaan kawalan kebenaran untuk memastikan keselamatan dan kestabilan aplikasi web.
Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan fungsi kawalan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!