如何将PHP登录校验逻辑封装为外部函数并正确调用?
解决PHP会话校验函数封装与文件引入问题
1. 封装校验函数到独立文件
新建一个名为session-utils.php的文件,把会话校验逻辑封装成DoAnonymousCheck()函数:
<?php function DoAnonymousCheck() { // 确保Session已启动 if (!session_id()) { session_start(); } // 校验用户是否登录,未登录则跳转 if (!isset($_SESSION['logged_in']) || !$_SESSION['logged_in']) { header('Location: loginregister.html'); exit; // 跳转后立刻终止脚本,防止后续代码执行 } } ?>
注:这里的$_SESSION['logged_in']替换成你实际用来判断登录的Session键名即可
2. 在目标PHP文件中引入并调用函数
在PurchaseSiteLoggedIn.php的最开头(必须在任何HTML输出、echo之前),用PHP的文件包含语法引入函数文件,然后调用校验函数:
<?php // 引入封装好的函数文件,路径根据实际文件位置调整 require_once 'session-utils.php'; // 执行登录校验 DoAnonymousCheck(); // 下面是你原有的PurchaseSiteLoggedIn.php业务代码 // ... ?>
关键说明
- 为什么
<script>标签不行?:<script>是前端HTML标签,仅用于加载JavaScript文件,PHP是服务器端脚本,必须通过PHP的文件包含机制(require/include系列函数)引入,这样服务器才能解析执行PHP代码。 - 务必在输出前操作:
header()跳转要求页面没有任何输出(包括空格、HTML标签),所以引入和调用函数的代码必须放在文件最顶部,避免触发"headers already sent"错误。 exit不能省:跳转后如果不终止脚本,后续代码仍会执行,可能导致未授权内容泄露。
内容的提问来源于stack exchange,提问作者Coffee
相关产品推荐
相关产品推荐

