PHP - Chrome下的重定向

时间:2011-10-27 11:54:26

标签: php html google-chrome

我遇到以下代码的问题:

<?php
session_start();
require_once("config.php");

if(isset($_SESSION['location']) && !empty($_SESSION['location'])) {
   $location = $_SESSION['location'];
   $url = ABS_PATH . $location;
   unset($_SESSION['location']); 
   header('Location: ' . $url);
}

$ url的值是:

http://www.domain.eu/somepage

传递给header()的值是:

Location: http://www.domain.eu/somepage

在Opera,IE(7,8,9)和Firefox下可以,但遗憾的是它不能在Chrome下工作,我不明白为什么。提到的代码示例来自文件index.php,每次加载页面时都会执行它。我有其他文件(display.php)我通过AJAX请求发送url。文件display.php设置$ _SESSION ['location']的值并返回页面内容。在刷新页面时,在Chrome以外的浏览器中,它会将我重定向到正确的URL。在debuging期间,我注意到即使我把die();之后

unset($_SESSION['location']); 

它没有执行它,但是当我把它放在它工作之前。任何人都可以知道如何解决我的问题?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

<?
session_start();
$_SESSION['location'] = 'http://www.google.com';
if(isset($_SESSION['location']) && !empty($_SESSION['location'])) {
    $location = $_SESSION['location'];
    header("location: ".$location);
}
?>

适合我。展开该代码,看看它何时中断。

答案 1 :(得分:-1)

die;之后立即添加header:location。这应该可以解决问题。

答案 2 :(得分:-3)

Chrome首先需要http状态:

header("Status: 200");
header('Location:' . $url);