我遇到以下代码的问题:
<?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']);
它没有执行它,但是当我把它放在它工作之前。任何人都可以知道如何解决我的问题?
提前感谢您的帮助。
答案 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);