2012-08-01 167 views
0

它是一個非常愚蠢的問題,但它不工作 我有一個函數來創建一個文件,如果它通過它我想它重定向用戶到X頁面..在這種情況下1 .php ....但不知何故不工作:S爲什麼?重定向不能正常工作

//Creates File, populates it and redirects the user. 
if (createfile($dbFile)) { 
    header('Location: 1.php'); 
     } 

回答

4

您需要exit()發送重定向報頭之後:

if (createfile($dbFile)) { 
    header('Location: http://yoursite.com/path/to/1.php', true, 302); 
    exit(); 
} 

否則,PHP繼續執行。如果您exit(),客戶在撥打電話header()後立即收到標題。

你也應該留意有關的PHP docs page for header()這樣的警告:

HTTP/1.1需要一個絕對URI作爲參數傳遞給Location:包括方案,主機名和絕對路徑,但有些客戶接受相對URI。你通常可以使用$_SERVER['HTTP_HOST']$_SERVER['PHP_SELF']dirname()從一個相對自己做的絕對URI:

<?php 
/* Redirect to a different page in the current directory that was requested */ 
$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'mypage.php'; 
header("Location: http://$host$uri/$extra"); 
exit; 
?> 
+0

良好的參考..... – Baba 2012-10-21 02:01:52

2

您是否嘗試過使用的絕對位置?

$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'mypage.php'; 
header("Location: http://$host$uri/$extra"); 
exit; 

Source

+0

yipee某人正確地使用絕對URI作爲規格要求 – 2012-08-01 08:17:28

0

我有哪裏代碼仍在頭位置後執行的發音相似的問題。這就是爲什麼我總是做exit();之後

1

嘗試;

if (createfile($dbFile)) { 
    header("Refresh: 0; URL=1.php"); 
    exit(); 
}