2012-01-10 6 views
2

У меня есть простой PHP скрипт, который должен перенаправить на другой документ после выполнения какой-то код, например, так:Сервер не работает PHP скрипт

if...{ 
     $_SESSION['username'] = $_POST['username']; 
     $_SESSION['login_status'] = true; 
     header('location: index.php'); 
    } 
    else{... 

Сценарий отлично на одном из серверов, которые я попробовал это работает но не с другой. Как кажется, другой сервер не идет в строку «header», а просто останавливается на полпути. Все, что у меня осталось, - это пустая страница с названием предыдущей страницы. Почему это? Есть идеи?

Версия PHP на сервере, который запускает скрипт, - это 5.1.6, сервер, который не имеет 4.3.9, а не тот, который, как я полагаю, имеет какое-либо отношение к нему.

+0

, если вы можете включить отчет об ошибках и «просмотреть источник» в своем браузере. Если есть какой-либо результат, предшествующий заголовку(), скрипт остановится. –

+0

Вы проверили заголовок ответа? это «200 OK»? Или, возможно, произошла внутренняя ошибка сервера? Кроме того, вы должны убедиться, что ошибки настроены для отображения. Проверьте настройки для 'error_reporting' и' display_errors' ... –

+0

Holy camoly! Шестилетняя [версия PHP] (http://www.php.net/ChangeLog-4.php#4.3.9) ?! – konsolenfreddy

ответ

0

Выполнить код с сообщения об ошибках, так что вы получите некоторое представление об ошибке

error_reporting(E_ALL); 

См PHP Error reporting

+0

Все еще не уверен, что вызвало проблему, но отчет об ошибках действительно сделал трюк. У меня появилось сообщение об ошибке, которое пошло что-то в строках: «заголовки уже отправлены», Я переместил php и html-часть, которая должна была отобразить форму в один и тот же php-файл, и voila, она работала на обоих серверах ... – Matte

+0

Итак, может возникнуть пустое пространство, созданное при рендеринге перед заголовком строки ('location: index.php'); Может быть, вы можете найти его, когда проверите всю указанную выше строку в своем коде :) –

1

Вы начали сеанс? Или ваш сервер может быть просто неправильно сконфигурирован. Прочитайте журналы.

+0

Сессия запущена. Проблема связана с отправкой заголовков несколько раз, что, похоже, не одобряет другой сервер. Спасибо за ответ, хотя! – Matte

1

Проверьте настройки php, разрешено ли session.auto_start.

Возможно, устаревшая версия PHP не знает, как разбирать строку location: .... Так изменить его в верхний регистр (так что соответствует спецификации HTTP):

header('Location: index.php') 
+0

Как вы, наверное, проблема связана с заголовками, но не стандарт, используемый ... Спасибо за ответ, хотя! – Matte

Смежные вопросы