2012-04-15 6 views
1

Этот код ниже отлично работает, когда я пытаюсь на моем локальном хосте, но когда я загрузить его на моем сервере он не работаетзаголовок PHP не работает на сервере, но отлично работает на локальном хосте

$sendquery = "INSERT INTO `message` (`from`, `to`, `subject`, `date`,`message`) VALUES ('".$_SESSION['UID']."', '".$toarray['Uid']."', '$subject','$d', '$message')"; 
$sendresult = mysql_query($sendquery); 

if($sendresult) 
{ 
    header('Location: home.php?action=inbox&success=1'); 

} 
else 
{ 
    header("Location: home.php?action=inbox&success=2"); 
} 

ли это проблема с моим сервером или кодом?

+0

вы видите ошибку после SQL Если эхо-нибудь (например, сообщение об ошибке) вы.? – gulyan

+0

Ваш сервер подключен к одной базе данных? – Rooster

+0

Я исправил ваш кодовый блок. См. http://meta.stackexchange.com/questions/22186/how-do-i-format-my -код-блоки о том, как отправлять код в stackoverflow. – MitMaro

ответ

0

В локальном и веб-сервере есть много различий. Я предполагаю, что проблема должна быть разработана на windows и размещена на linux.

Строчные все струнные заголовка и остановить выполнение после того, как

header("location: home.php?action=inbox&success=2"); 
exit(); 
+0

спасибо да, вы противны о windows и linux , но я просто пробовал с нижним регистром, он все еще не перенаправляет мой сервер на ubuntu я пробовал как с нижним регистром, так и с выходом еще не перенаправляя страницу – user1334969

1

Может быть, у Вас есть ошибка в SQL.

Если вы что-то повторите (как сообщение об ошибке), вы больше не можете изменять заголовок.

Заголовок отправляется перед эхом и устанавливает местоположение после того, как оно не действует.

+0

Спасибо за ответ, проблема заключается в том, что sql работает отлично после того, как sql запускает страницу, не перенаправляется, она остается на странице с датой, нет сообщения об ошибке, она просто не перенаправляет страницу, но когда я нахожусь на локальном хосте, она перенаправляет страница на сервере не перенаправляет страницу, она просто обновляет страницу – user1334969

1

Убедитесь, что в вашем коде не было начато вывод перед установкой заголовка «Местоположение».
Убедитесь, что вы используете абсолютный URL (в соответствии с требованием HTTP specification)

Пример:

header('Location: http://' . $_SERVER['HTTP_HOST'] . '/Home.php'); 

Если это так, то ваш редирект должен работать.

Некоторые распространенные причины, почему выход уже начали:

  • BOM (отметка порядка байтов) не обрабатываются правильно
  • Предупреждение или информации
  • пробельные или любой другой HTML-разметку, прежде чем ваш первый <?php ... ?>
+0

спасибо mista ke был, я начал вывод перед настройкой местоположения, но есть ли какой-либо путь вокруг php, где я могу указать местоположение даже после начала вывода страницы, и следующее сомнение в том, как оно работает на локальном хосте. – user1334969

+0

Нет. Если вы возьмете Познакомьтесь с протоколом HTTP, вы поймете, что не имеет смысла отправлять код состояния 30x с заголовком «Location:» и все еще писать вывод (тело HTTP). Выход полностью бесполезен, потому что все браузер делает запрос на новый URL. Вы должны улучшить свой код, чтобы все, что могло вызвать перенаправление, было выполнено до начала вывода. – CodeZombie

0

Проверить

var_dump ($ sendresult); Выход();

Включить отчет об ошибках. У вас может быть другая ошибка. Путь

$ sendresult = 1;

если ($ sendresult) {

заголовок ('Location: home.php действие = Входящие & успех = 1');

} еще {

заголовок ("Location: home.php?Действие = Входящие & успех = 2");

}

Это отлично работает для меня

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