标头功能中的警告

时间:2014-05-07 07:14:33

标签: php php-5.3

我有以下代码

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']

4 个答案:

答案 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)

曾经试图修剪引用者吗?

http://php.net/trim

$myRefererUrl = trim($_REQUEST['referer_url']);    
header('location: '.(($myRefererUrl=='')?'index.php':$myRefererUrl));
exit;

使用修剪,你可以摆脱字符串中的换行符;)

答案 3 :(得分:-1)

首先尝试对您的网址进行编码,它应该可以正常运行:http://php.net/manual/en/function.rawurlencode.php