2014-05-07 93 views
1

我有下面這段代碼警告在頭功能

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。這是因爲在標題中添加了一個新行。我試着做一個urlencode像在這裏stackoverflow建議,但它重定向到一個服務器沒有發現錯誤與一個奇怪的網址包含undefined index內的網址。它應該很好地工作還有什麼我可以嘗試,以保持$_REQUEST['referer_url']

+1

http://stackoverflow.com/questions/8954971/cant-redirect-with-lot的可能的複製-of-variable-header-may-not-contain-more-a-single-h – HeroFTime

+0

'var_dump($ _ REQUEST ['referer_url'])' - 你會得到什麼?另外,兩個'header'調用中的哪一個會產生警告? – deceze

+0

@HeroFTime與'rawurlencode'相同的東西 - 未找到服務器... – user3467855

回答

1

試試這個:

$redirect_url = isset($_SERVER['HTTP_REFERER']) && 
       !empty($_SERVER['HTTP_REFERER']) ? 
        $_SERVER['HTTP_REFERER'] : 'index.php'; 
header("Location: $redirect_url"); 
exit; 
+1

[爲什麼要檢查isset()和!empty()](http://stackoverflow.com/q/4559925/476) – deceze

+0

@deceze謝謝你。我會記住這一點。 – Latheesan

0

首先需要檢查你在$_REQUEST['referer_url']得到如果你有充分的網址,然後從狀態刪除http://如果空白將被重定向到的index.php嘗試

$redirect = (!empty($_REQUEST['referer_url']) ? 'http://'.$_REQUEST['referer_url'] : 'index.php'); 
header("location: $redirect"); 
exit; 
0

曾經試過只修剪引用者?

http://php.net/trim

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

與微調,您擺脫字符串的換行符)