2013-09-17 2 views
0

По какой-то причине моя страница контакта не переместится на thanks.html. Он просто остается на странице контакта, и контактная форма исчезает.Страница перенаправления перенаправления почты

<?php 
if (empty($_POST) === false) { 
$errors = array(); 

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

if (empty($name) === true || empty($email) === true || empty($message) === true) { 
    $errors[] = 'Name, email, and message are required.'; 
} else { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
     $errors[] = 'Please enter a valad email address.'; 
    } 
} 
if (empty($errors) === true) { 
    mail('[email protected]', 'Contact Form' ,'$message', 'From: ' . $email); 
    header('Location: thanks.html'); 
    exit(); 
} 
} 
?> 

Вот мой код из формы.

<?php 
if (empty($errors) === false) { 
echo '<ul>'; 
foreach($errors as $error) { 
    echo '<li>', $error, '</li>'; 
} 
echo '<ul>'; 


} 
?> 




</div> 
<div id="content"> 






<form action="" method="post"> 

<p> 
<label for="name">Name:</label><br /> 
<input type="text" name="name" id="name" <?php if (isset($_POST['name']) === true) {   echo    'value="', strip_tags($_POST['name']), '"'; } ?> /> 
</p> 
<p> 
<label for="email">Email:</label><br /> 
<input type="text" name="email" id="email" <?php if (isset($_POST['email']) === true) { echo 'value="', strip_tags($_POST['email']), '"'; } ?>/> 
</p> 
<p> 
<label for="message">Message:</label><br /> 
<textarea name="message" id="message"><?php if (isset($_POST['message']) === true) { echo strip_tags($_POST['message']), ''; } ?></textarea> 
</p> 
<p> 
<input type="submit" /> 
</p> 


</form> 







</div> 

У кого-нибудь есть быстрое решение? Это сводит меня с ума. Я пытался различные вариации этих линий в приведенном выше, но ничего не работает код ...

if (empty($errors) === true) { 
mail('[email protected]', 'Contact Form' ,'$message', 'From: ' . $email); 
header('Location: thanks.html'); 
exit(); 
+0

согласно вашей логике, управление никогда не будет идти в эту часть кода: если (пусто ($ ошибок) === верно) {С вы заполняете $ errors в обоих случаях выше этой строки. поэтому перенаправление никогда не произойдет. – Maximus2012

+0

Я получаю письма в строке «почта», хотя ..? –

+0

В этом случае могут возникнуть проблемы с вызовом функции header(). – Maximus2012

ответ

0

я думаю, что вы близки,

РЕШЕНИЕ

дать ему полный адрес для перенаправления после

, если ее делать по электронной почте, то просто изменить


header ('Местоположение: thanks.html');

к

заголовка ('Location: http://www.example.com/thanks.html');

Также замените

пустым ($ название) === верно опорожнить ($ имя)

вам не нужно указать на истину, он будет принимать по умолчанию


+0

Это не сработало. Никто из них. –

+0

добавь меня на skype: zainzain185, давайте сделаем это в прямом эфире –

+0

также удалим exit(); вам не нужно это –

0

, как PHP manual page for header указывает, вы действительно должны использовать полные URL-адреса для перенаправления:

Note: HTTP/1.1 requires an absolute URI as argument to Location: including the scheme, hostname and absolute path, but some clients accept relative URIs. You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative one yourself: 

вы с также использовать javascript для перенаправления на страницу благодарности следующим образом:

if (empty($errors) === true) { 
    mail('[email protected]', 'Contact Form' ,'$message', 'From: ' . $email); 
    echo '<script type="text/javascript">' 
     , 'window.location.replace('thanks page complete url');' 
     , '</script>'; 
} 
+0

Если вы имеете в виду использование http://www.sitename.com/folder/thanks.html, это не работает. –

+0

предложил другой способ перенаправления с помощью javascript –

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