如何为这段PHP页面密码保护代码添加多个可用密码?
修改步骤
你需要修改代码中的两处判断逻辑,把单一密码验证改成多密码验证:
- 修改登录提交时的密码验证
找到这段代码:
if($pass=="1234") { $_SESSION['password']=$pass; }
改成用数组存储允许的密码,再检查提交的密码是否在数组内:
// 定义允许的密码列表,把你要加的3个密码填在这里 $allowed_passwords = ["1234", "5678", "abcd", "wxyz"]; if(in_array($pass, $allowed_passwords)) { $_SESSION['password']=$pass; }
- 修改页面加载时的会话验证
找到这段代码:
if($_SESSION['password']=="1234") {
同样改成检查会话中的密码是否在允许的数组里(额外加isset是避免未登录时变量不存在报错):
$allowed_passwords = ["1234", "5678", "abcd", "wxyz"]; if(isset($_SESSION['password']) && in_array($_SESSION['password'], $allowed_passwords)) {
修改后的完整代码
<?php session_start(); // 定义所有允许的密码 $allowed_passwords = ["1234", "5678", "abcd", "wxyz"]; if(isset($_POST['submit_pass']) && $_POST['pass']) { $pass=$_POST['pass']; if(in_array($pass, $allowed_passwords)) { $_SESSION['password']=$pass; } else { $error="Incorrect Password"; } } if(isset($_POST['page_logout'])) { unset($_SESSION['password']); } ?> <?php // 验证会话中的密码是否有效 if(isset($_SESSION['password']) && in_array($_SESSION['password'], $allowed_passwords)) { ?> <form method="post" action="" id="logout_form"> <input type="submit" name="page_logout" value="Logout"> </form> <?php } else { ?> <form method="post" action=""> <div>Protected Content</div> <br /> <input type="password" name="pass" placeholder="Type your password"> <input type="submit" name="submit_pass" value="Login"> <br /><br /> <div><?php echo isset($error) ? $error : '';?></div> </form> <?php } ?>
(注:优化了错误信息输出,避免未提交时$error未定义的警告)
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

