2012-03-06 3 views
2

У меня есть формы HTML5 настроить следующим образом:HTML Form + PHP, Page Перенаправление

<form id="contact-form" action="php/email.php"> 
      <fieldset> 
       <ul id="form"> 
        <li> 
         <label for="name">Name:</label> 
         <input id="name" name="name" type="text" placeholder="First and Last Name" required /> 
        </li> 
        <li> 
         <label for="email">Email:</label> 
         <input id="email" name="email" type="email" placeholder="Enter email address" /> 
        </li> 
        <li> 
         <label for="message">Message:</label> 
         <textarea id="message" name="message" placeholder="Leave comments here..." required></textarea> 
        </li> 
       </ul> 

       <a id="back" href="index.html"><-- Home</a> 
       <input type="submit" id="submit" value="Submit Form" class="button"/> 
      </fieldset> 
     </form> 

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

К сожалению, здесь есть PHP скрипт:

<?php 

$name = $_GET['name']; 
$visitorEmail = $_GET['email']; 
$message = $_GET['message']; 
$email_from = "[email protected]"; 
$email_subject = "New Form Submission! - From: " + $visitorEmail; 
$email_body = "Here is the message from $name: \n $message";  
$to = "[email protected]"; 
$headers = "From: $email_from \r \n"; 
$headers .= "Reply-To: $visitorEmail \r \n";  

mail($to, $email_subject, $email_body, $headers); 

echo "Success! You've sent mail!"; 

?> 

EDIT:

Хорошо, проблема, что я с этим:

~/MyMobileApp/php/email.php 

и все мое содержание:

~/MyMobileApp/ 

Я хочу перенаправить ba ck на локальную страницу, мою индексную страницу, расположенную в одной папке выше моего скрипта php. Проблема с заголовком заключается в том, что он не может находиться выше каталога, в котором он находится в данный момент; возможно, я должен добавить страницу html с благодарностью в эту папку и перенаправить? Или есть лучший способ?

+0

uh где php вы сказали, что это небольшой скрипт? – chrisjlee

+1

попробуйте этот 'header ('location: ../ thanks.php');' –

+0

Это работает! Perfect ... thanks – Brendan

ответ

3

После того как PHP отправляет электронную почту, добавьте PHP фрагмент:

header("HTTP/1.1 303 See Other"); 
header("Location: /thank-you.php"); 
exit(); 
+0

Обновлено мой вопрос – Brendan

+0

Вы можете использовать любой URL-адрес, который вы хотите после «Место:» – Jeff

0

С php перенаправления легко. После того как логика вашего маленького скрипта будет выполнена, используйте функцию header().

header('Location: http://www.yourlocation.com/there/myfile.html'); 

Это отправляет заголовок перенаправления, который приведет к загрузке целевой страницы. Вы можете настроить таргетинг на любой адрес. Тем не менее, сценарий будет продолжать выполняться, поэтому не предполагайте, что это закончится. После этого будет запущен любой код. Кроме того, заголовки должны быть отправлены перед любым выходом, поэтому нет HTML-кода и убедитесь, что вы не повторяете ничего или не имеете пробелов перед открытием <? вашего скрипта. В противном случае вы получите сообщение об ошибке.

В руководстве содержится более header().

+0

Всегда вызывайте 'exit()' после перенаправления, иначе код под вызовом 'header()' может быть выполнен. – Jeff

+0

Да, это точно так, я подробно остановился на этом. –

+0

Обновлено Мой вопрос – Brendan

1

В сценарии PHP, вы можете установить HTTP редирект заголовок следующим образом:

header('Location: thanks.php');

Есть пара предупреждений:

  1. Вы можете напечатать выходные данные перед заголовком. Так как это заголовок HTTP , содержимое печати закончит заголовок и запустит тело.
  2. Это не будет работать в сценарии AJAX, поскольку вы перенаправляете страницу, которая никогда не отображается в браузере. Если вы используете AJAX, вы можете установить window.location.href на страницу, на которую вы хотите перенаправить.
+0

Единственная причина, по которой я в этом смущен, - это почему каждый переадресационный код, который я обычно вижу в другом скрипте PHP? Я просто хочу перенаправить на другую страницу HTML, которую я не уверен, что смогу сделать. – Brendan

+0

Этого не должно быть. Просто перенаправьте его на любой URL-адрес, который вы хотите. – Jeff

+0

Редирект будет обработан Apache, поэтому вы можете перенаправить на любой URL. Это может быть PHP-скрипт, HTML-файл, изображение, видео и т. Д. –