PHP登录时Session已赋值但header重定向不生效问题求助
问题原因与解决方案
header跳转失效的核心原因是发送Location头后没有终止程序执行:服务器发送跳转头后依然继续输出了后续的登录页HTML内容,导致浏览器识别到响应体内存在内容,就不会执行跳转逻辑。
你的需求本身逻辑是通顺的:登录验证通过后设置SESSION登录状态,跳转当前页,跳转后的新请求检测到SESSION登录状态为true,自然会执行第24行的require_once "inc/default.php"逻辑,完全可以实现你要的「先跳转再执行引入」的效果。
修复方法
在第47行header代码后添加exit终止后续代码执行即可:
$_SESSION[ 'login' ] = 'true'; // 用户名密码正确时会执行到此处,需要跳转当前页且执行require_once "inc/default.php" /*Line 47*/ header('Location: '.URL); exit; // 新增这行,跳转后立即终止程序运行
其他代码风险提示
- 代码同时混用了早已废弃的
mysql_*系列函数和mysqli_*系列函数,建议全量替换为mysqli,并使用参数化查询拼接SQL语句,避免直接拼接用户输入导致的SQL注入漏洞 - 代码第19行执行查询时,
$kadi和$sifre还未完成定义,会抛出PHP Notice级错误 mcrypt_*加密系列函数在PHP7.1版本后已被废弃,建议替换为openssl_encrypt/openssl_decrypt实现对称加密
内容的提问来源于stack exchange,提问作者Emrah Çalışkan
相关产品推荐
相关产品推荐

