You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现PHP中trigger_error触发后重定向至指定页面?

解决方案:替换trigger_error为自定义重定向

首先得说清楚,你之前的尝试没成功是因为**trigger_error()是用来抛出PHP错误/警告的,不是用来处理页面重定向的**——它的第一个参数只是错误消息文本,没法直接传重定向指令。

要实现你要的效果,直接把trigger_error()的部分替换成HTTP重定向代码就行,具体如下:

<?php
if(!$user->data['is_registered']) {
    if ($user->data['user_id'] != ANONYMOUS) {
        // 可选:保留错误记录,和原trigger_error的日志功能对齐
        error_log('NOT_AUTHORISED: 用户未注册且非匿名,已重定向到自定义错误页');
        // 发送重定向指令给浏览器
        header('Location: error.php');
        // 必须终止后续代码执行,避免页面输出干扰重定向
        exit;
    }
    login_box('', $user->lang['NOT_AUTHORISED']);
}
?>

关键细节说明:

  • header('Location: error.php'):这是PHP实现页面重定向的标准方式,注意路径要根据你的项目结构调整——如果error.php不在当前脚本所在目录,要写绝对路径(比如/error.php)。
  • exit/die():发送重定向头后必须立刻终止脚本,否则后续的login_box()或其他代码可能会输出内容,导致HTTP头发送失败(HTTP头必须在任何页面输出之前发送)。
  • 错误日志保留:如果需要保留原trigger_error()的错误记录功能,可以用error_log()手动写入日志,这样既实现了重定向,又不会丢失错误溯源信息。

另外要注意:如果这段代码之前已经有任何输出(比如HTML标签、空格、echo内容),header()会失效。这种情况下要么调整代码顺序,把重定向逻辑放在所有输出之前,要么开启PHP输出缓冲(在脚本开头加ob_start())。

内容的提问来源于stack exchange,提问作者user9220830

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:57:04