PHP - перенаправление под Chrome - PullRequest
1 голос
/ 27 октября 2011

У меня проблема со следующим кодом:

<?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), на который я отправляю URL через запрос AJAX. Файл display.php устанавливает значение $ _SESSION ['location'] и возвращает содержимое страницы. В браузерах, отличных от Chrome, когда я обновляю страницу, он перенаправляет меня на правильный URL. Во время отладки я заметил, что даже когда я ставлю die (); после

unset($_SESSION['location']); 

он не выполняет его, но когда я ставлю его до того, как он заработает. Может кто-нибудь есть идеи, как решить мою проблему?

Заранее спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 27 октября 2011
<?
session_start();
$_SESSION['location'] = 'http://www.google.com';
if(isset($_SESSION['location']) && !empty($_SESSION['location'])) {
    $location = $_SESSION['location'];
    header("location: ".$location);
}
?>

У меня работает.Разверните этот код и посмотрите, когда он сломается.

0 голосов
/ 30 марта 2016

Добавьте die; сразу после вашего header:location. Это должно сработать.

0 голосов
/ 27 октября 2011

Для Chrome сначала требуется статус http:

header("Status: 200");
header('Location:' . $url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...