HTML Form + PHP, перенаправление страницы - PullRequest
2 голосов
/ 06 марта 2012

У меня есть форма HTML5, настроенная так:

<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:

<?php

$name = $_GET['name'];
$visitorEmail = $_GET['email'];
$message = $_GET['message'];
$email_from = "lesniakbj@jay.washjeff.edu";
$email_subject = "New Form Submission! - From: " + $visitorEmail;
$email_body = "Here is the message from $name: \n $message";    
$to = "lesniakbj@jay.washjeff.edu";
$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/

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

Ответы [ 3 ]

3 голосов
/ 06 марта 2012

После того, как ваш php отправит письмо, добавьте этот фрагмент php:

header("HTTP/1.1 303 See Other");
header("Location: /thank-you.php");
exit();
1 голос
/ 06 марта 2012

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

header('Location: thanks.php');

Однако есть пара предостережений:

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

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

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

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

В руководстве также содержится более подробная информация о header () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...