我有以下代码
if ($_REQUEST['referer_url'] == "" ) {
header("location: index.php");
exit;
}
header('location: http://' . $_REQUEST['referer_url']);
exit;
我收到错误Warning: Header may not contain more than a single header, new line detected
。这是因为在标题中添加了一个新行。我尝试在stackoverflow上执行此类建议urlencode
,但它将我重定向到服务器未找到错误,并在网址中包含一个包含undefined index
的奇数网址。我还可以尝试什么来维持$_REQUEST['referer_url']
答案 0 :(得分:1)
试试这个:
$redirect_url = isset($_SERVER['HTTP_REFERER']) &&
!empty($_SERVER['HTTP_REFERER']) ?
$_SERVER['HTTP_REFERER'] : 'index.php';
header("Location: $redirect_url");
exit;
答案 1 :(得分:0)
首先需要检查$_REQUEST['referer_url']
中的内容,如果您有完整的网址,然后从条件中移除http://
,如果空白,它将重定向到index.php尝试
$redirect = (!empty($_REQUEST['referer_url']) ? 'http://'.$_REQUEST['referer_url'] : 'index.php');
header("location: $redirect");
exit;
答案 2 :(得分:0)
曾经试图修剪引用者吗?
$myRefererUrl = trim($_REQUEST['referer_url']);
header('location: '.(($myRefererUrl=='')?'index.php':$myRefererUrl));
exit;
使用修剪,你可以摆脱字符串中的换行符;)
答案 3 :(得分:-1)
首先尝试对您的网址进行编码,它应该可以正常运行:http://php.net/manual/en/function.rawurlencode.php