PHP创建用户后无法正常跳转至登录页问题求助
问题根因与解决方案
根因定位
你遇到的跳转地址出现ROOT字符串的核心原因是业务代码执行时,ROOT常量还未被定义:
- PHP在未开启严格错误模式时,遇到未定义的常量会直接将常量名作为字符串处理,所以
ROOT . "login"实际被拼接成了字符串ROOTlogin - 浏览器识别到相对路径跳转规则,会自动把该字符串拼在当前访问路径前缀
https://localhost/TEST/后,最终得到你看到的异常跳转地址。
其他影响跳转的错误代码
echo header;属于无效代码:header是PHP内置的HTTP头处理函数,不是可输出的常量,这行代码会额外输出字符串header,导致header跳转触发「HTTP头已发送」的报错,直接失效。- 如果
$result != ""的分支先执行了div内容输出,后续即使走到else分支,header跳转也会因为已经有输出内容而失效。
修复步骤
- 在业务代码所在文件的最顶部,引入定义ROOT常量的路由配置文件,示例:
require '你的路由配置文件路径.php';,确保使用ROOT前常量已经被正确定义。 - 删除
echo header;这行无效代码,同时保证header跳转前没有任何输出(包括文件开头的空格、UTF-8 BOM头、其他echo/print输出)。 - 临时加测试代码验证ROOT常量是否正确:在header跳转代码前加
var_dump(ROOT);die;,访问页面确认输出的路径是你预期的https://localhost/TEST/后,再删除测试代码即可。
内容的提问来源于stack exchange,提问作者justRyan
相关产品推荐
相关产品推荐

