转载请注明出处,如有问题请联系我们! PHP 页面加密访问教程:给指定页面增加访问密码

PHP 页面加密访问教程:给指定页面增加访问密码 这篇文章适合想给某个页面加一层简单密码保护的站长。例如内部资料页、临时下载页、客户专属说明页、测试页面,不想公开给所有人访问,但又暂时不想做完整会员权限系统。

一、这种页面加密适合什么场景

  • 临时给客户查看的演示页面。
  • 内部教程、软件使用说明、下载地址。
  • 不适合公开收录的测试页面。
  • 不想做复杂用户系统,只需要一个访问密码。

注意:这种方式适合轻量保护,不适合保护高价值数据。如果涉及订单、支付、用户隐私,应该使用完整登录权限系统。

二、最简单的 Session 密码验证

下面是一个基础示例。用户输入正确密码后,Session 记录已通过,刷新页面不会重复输入。

<?php
session_start();

$page_password = "Yueshen2026";

if(isset($_POST["page_pass"])){
    if($_POST["page_pass"] === $page_password){
        $_SESSION["page_auth"] = 1;
        header("Location: ".$_SERVER["REQUEST_URI"]);
        exit;
    }else{
        $error = "密码错误,请重新输入";
    }
}

if(empty($_SESSION["page_auth"])){
?>
<form method="post">
  <input type="password" name="page_pass" placeholder="请输入访问密码">
  <button type="submit">进入页面</button>
  <p><?php echo isset($error) ? $error : ""; ?></p>
</form>
<?php
    exit;
}
?>

三、不要把密码写得太简单

很多人喜欢用 123456、admin888 这类密码,这种很容易被猜到。建议至少包含大小写字母和数字,例如:

Yueshen@2026
Source#7288
Tool@9527

如果页面长期使用,建议把密码放到数据库或配置文件里,而不是直接写在模板页面中。

四、多个页面使用不同密码

如果多个页面都要加密,不建议每个文件复制一份代码。可以写一个公共方法:

function check_page_password($key, $password){
    session_start();

    if(isset($_POST["page_pass"]) && $_POST["page_pass"] === $password){
        $_SESSION["page_auth_".$key] = 1;
        header("Location: ".$_SERVER["REQUEST_URI"]);
        exit;
    }

    if(empty($_SESSION["page_auth_".$key])){
        echo "<form method="post">";
        echo "<input type="password" name="page_pass" placeholder="请输入访问密码">";
        echo "<button>进入</button>";
        echo "</form>";
        exit;
    }
}

页面里调用:

check_page_password("download_001", "Yueshen@2026");

五、加密下载页面要注意什么

如果你只是保护了 HTML 页面,但真实下载文件地址是公开的,用户拿到链接后仍然可以直接访问。所以下载文件最好不要放在公开目录,或者下载时也通过 PHP 判断权限。

if(empty($_SESSION["page_auth"])){
    exit("无权限下载");
}

$file = "/data/private/demo.zip";
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=demo.zip");
readfile($file);

六、常见错误

  • Session 不生效:检查 session_start() 是否在输出 HTML 前执行。
  • 输入正确仍然跳回:可能是浏览器禁用 Cookie,或者 Session 目录不可写。
  • 页面出现 headers already sent:说明 header 跳转前已经输出内容。
  • 下载地址被绕过:真实文件放在公开目录,没有二次验证。

七、总结

PHP 页面加密访问适合轻量场景,核心是 Session + 表单验证。真正要保护下载文件或会员内容,不能只保护入口页面,还要保护真实资源地址。对于源码资源站来说,这种方法可以用于临时资源、内部教程和客户专属页面。

标签云