如何实现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
相关产品推荐
相关产品推荐

