PHP重定向无法加载链接问题求助
问题分析与解决方案
先把你的两个PHP文件代码整理出来,方便排查:
链接处理文件(假设命名为link_selector.php)
<?php session_start(); $link=$_GET['redirect']; if ($link == '1'){ $_SESSION['link'] = 'https://www.google.com/'; header('Location: selection_handler.php'); exit; } if ($link == '2'){ $_SESSION['link'] = 'https://www.facebook.com/'; header('Location: selection_handler.php'); exit; } if ($link == '3'){ $_SESSION['link'] = 'https://www.twitter.com/'; header('Location: selection_handler.php'); exit; } ?>
selection_handler.php
<?php session_start(); $link= $_SESSION['link']; if(isset($_SESSION['user_id'])) { header("Location: " .$link); exit; } else { echo $_SESSION['link']; } ?>
你遇到的跳转后空白问题,大概率是这几个常见坑导致的,我给你一步步梳理解决:
1. 检查文件是否存在意外输出(最常见原因)
HTTP跳转头(Location)要求必须在任何内容输出之前发送,哪怕是<?php标签前的一个空格、换行,或者UTF-8文件自带的BOM头(三个隐藏字符),都会破坏头信息的发送,最终导致跳转失败、页面空白。
- 打开两个PHP文件,确保
<?php是文件的第一个字符,前面没有任何空格、换行或其他字符; - 把文件编码改成UTF-8无BOM(VS Code右下角可直接切换,Notepad++选「编码」→「UTF-8无BOM」)。
2. 修复header的错误写法
你提到测试时把header改成了带<a>标签的格式,这完全错了!Location头只需要纯URL字符串,不需要任何HTML标签。正确写法应该是:
header("Location: https://www.google.com");
3. 开启错误提示快速定位问题
在selection_handler.php的最顶部加上错误排查代码,这样能直接看到脚本的错误信息,不用瞎猜:
<?php error_reporting(E_ALL); ini_set('display_errors', 1); session_start(); // 后续代码... ?>
4. 确认session是否正常工作
可以在跳转前临时打印$_SESSION的内容,看看user_id和link是否正确存储:
var_dump($_SESSION); // 测试完成后记得删掉这行
如果user_id没正确存入session,或者link丢失,也会导致逻辑异常。
按照这几步排查,基本能解决跳转空白的问题。
内容的提问来源于stack exchange,提问作者zoenightshade
相关产品推荐
相关产品推荐

