2013-07-12 3 views
0

Я новичок в PHP. Я пытаюсь перенаправить на страницу благодарности после того, как контактная форма была отправлена ​​на адрес электронной почты компании. Тем не менее, я получаю сообщение об ошибке:Местоположение перенаправления - «Предупреждение: невозможно изменить информацию заголовка»

Warning: Cannot modify header information - headers already sent by (output started at /home/content/86/11388686/html/contact-form-handler.php:6) in /home/content/86/11388686/html/contact-form-handler.php on line 37.

формы действительно отправить на адрес электронной почты и коды делает Validate, но редирект не работает. Как я уже сказал, это ново для меня, поэтому, пожалуйста, будьте очень конкретны с ответами. Благодаря

<?php 
/* Set e-mail recipient */ 
$myemail = "[email protected]"; 

/* Check all form inputs using check_input function */ 
$name = check_input($_POST['name'], "Enter your name"); 
$subject = check_input($_POST['subject'], "Enter a subject"); 
$email = check_input($_POST['email']); 
$message = check_input($_POST['message'], "Write your message"); 

/* If e-mail is not valid show error message */ 
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) 
{ 
show_error("E-mail address not valid"); 
} 
/* Let's prepare the message for the e-mail */ 
$message = " 

Name: $name 
E-mail: $email 
Subject: $subject 

Message: 
$message 

"; 

/* Send the message using mail() function */ 
mail($myemail, $subject, $message); 

/* Redirect visitor to the thank you page */ 
header('Location: http://www.tsunamitransport.com/contact-form-thank-you.html'); 
exit(); 

/* Functions we used */ 
function check_input($data, $problem='') 
{ 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
if ($problem && strlen($data) == 0) 
{ 
show_error($problem); 
} 
return $data; 
} 

function show_error($myError) 
{ 
?> 
<html> 
<body> 

<p>Please correct the following error:</p> 
<strong><?php echo $myError; ?></strong> 
<p>Hit the back button and try again</p> 

</body> 
</html> 
<?php 
exit(); 
} 
?> 

ответ

2

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

Причина сообщения об ошибке заключается в том, что для изменения HTTP-заголовков в PHP вы должны сделать это, прежде чем что-либо будет отправлено из ваших PHP-скриптов, даже пробелов, в браузер. Поэтому, не видя остальной части вашего кода, я бы сказал, что вы пытаетесь установить слишком поздно, что-то уже делается для отправки вывода в браузер.

+0

Где бы вы порекомендовали мне разместить его в коде, который показан? Я переместил его несколько раз, но ничего не работает. – user2577683

+0

Вы пытались переключить свою инструкцию if, чтобы сначала задать заголовок, если сообщение недействительно? –

0

Это строка, в которой вы уже сделали какой-то вывод /contact-form-handler.php:6, и ваша последующая попытка изменения заголовка не удалась в этой строке /contact-form-handler.php on line 37. Если ваш вывод в браузер at line 6 был преднамеренным, тогда вам придется структурировать свой код, потому что когда есть какой-то вывод, вы не можете изменить заголовок at line 37. Если это не было преднамеренным, проверьте и попытайтесь удалить этот вывод.