2012-05-21 3 views
1

У меня есть страница с простой формой. когда я нажимаю кнопку «Отправить», у меня есть несколько кодов sql, и в конце мне нужно перенаправить страницу на другую страницу (contact.php). Мои SQL-коды работают нормально и хранятся в базе данных, однако они не перенаправляются на другую страницу (to index.php) и показывает ту же страницу, которая имеет форму (contact.php). Я использую следующий код для перенаправления моей страницы:my php form не перенаправляет страницу на другую страницу

header('Location: index.php'); 

моих форм и PHP коды, как показано ниже:

<form name="contact" action="contact.php" id="contact_form" method="post" > 
<input type="hidden" id="ID" name="ID" value="<?php echo $yid ?>" /> 

<textarea id="Reason" name="Remark" placeholder="Write your Reason here" class="required" cols="10" rows="10"></textarea> 


    <input class="button altbutton" type="submit" name="submit" value="submit" /> 

</form> 

if (isset($_POST['submit'])) { 

     $Remark = @$_POST ['Remark']; 
     $ID= @$_POST ['ID']; 

$query=" my sql code"; 
$result = mysql_query($query); 

header('Location: index.php'); 

} 

что я должен делать или то, что я пропустил? Спасибо

+0

На какой странице вы сейчас находитесь? И вы уверены, что это правильный путь? – Bono

+0

Не могли бы вы показать нам еще какой-нибудь код? –

+0

Есть ли ошибки? В чем ваш 'error_reporting' установлен? – Sirko

ответ

0

HTTP-заголовок «Location» не работает должным образом всегда во всех браузерах (согласно моему опыту). И если вы уже «эхо-отредактировали некоторый HTML (или текст, что бы то ни было), прежде чем повторять заголовок« Location », функция« header »функции PHP не будет работать.

Используйте этот код:

<?php 
$Js_Redirect = 
"<script>"+ 
"top.location = 'index.php';"+ 
"</script>"; 

echo $Js_Redirect; 
exit(); 
?> 

вместо

<?php 
header('Location: index.php'); 
?> 
+1

Ваш пример не будет работать должным образом во всех браузерах (поскольку JS можно легко отключить). Перенаправление на стороне сервера (т. Е. Исходный код) будет работать независимо от настроек браузера. – Nick

+0

да, может быть, если вы находитесь в браузере для мобильного телефона – jondinham

+1

Я никогда не видел случая, когда заголовок HTTP-адреса не работал. Не могли бы вы рассказать об этом? – eis

1

Я предположил бы, что это потому что вы поставили его после выхода на странице, но не видя кода это просто удар ножом во тьме.

Перенаправление на новую страницу, вы должны использовать:

header("Location: index.php"); 
exit(); 

Кроме того, убедитесь, что выше перед любым выходом на странице, в противном случае он не будет работать.

Выполнение вышеуказанного, если вы получаете пустую страницу, что-то пошло не так (проверьте свой журнал ошибок или убедитесь, что сообщение об ошибках включено).

+0

Да. Используйте die() или exit() после заголовка. Это заставит его перестать обрабатывать все, что у вас есть ПОСЛЕ этой функции, возможно, еще один заголовок в конце конфликта. –

0
if(isset($your_set_values) 
    { 
     header("Location:index.php"); 
    } 

, если это делает, кажется, работает: -

Первая попытка найти там какие-либо ошибки?

использованием -

error_reporting(E_ALL & ~E_NOTICE); 

, если вы не нашли какую-либо ошибку .... попробуйте напечатать запрос и что ..

1

есть некоторые HTML послал перед заголовком? даже пробелы?

также попробовать это (от here)

$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'mypage.php'; 
header("Location: http://$host$uri/$extra"); 
0

Помните, что header() должна вызываться перед любой фактический вывод направляется, либо с помощью обычных HTML-теги, пустые строки в файле, или из PHP. Очень распространенная ошибка для чтения кода с включением или требованием, функциями или другой функцией доступа к файлам, а также пробелы или пустые строки, которые выводятся перед вызовом header(). Та же проблема существует при использовании одного файла PHP/HTML.

<html> 
<?php 
/* This will give an error. Note the output 
* above, which is before the header() call */ 
header('Location: http://www.example.com/'); 
?> 

[reference]


Решение 1: В файле, переместите PHP код в начале (т.е. выше <html> тег), а также ничего не повторяют перед использованием header() функции ,

Solution2:
Если у вас возникли проблемы, чтобы реорганизовать свой код, то вам нужно использовать буферизацию. Поместите ob_start() в качестве самой первой строки вашей страницы php и используйте ob_end_flush() или ob_end_clean() после использования header(). Это эффективно буферизирует весь вывод, который позволяет вам вызывать функцию заголовка до того, как будет напечатан любой вывод. Примечание:забудьте всегда exit или die() после установки Location заголовка.

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