Как перенаправить на страницу после отправки контактной формы?

Все работает нормально, кроме перенаправления на страницу благодарности. Я могу отправить письмо в обе стороны, но после отправки контактной формы я не могу перенаправить страницу на thankyou.html Я делаю что-то не так в коде?

session_start();
$serverMail = '[email protected]';

$email = isset($_POST['email']) ? $_POST['email'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$message = isset($_POST['message']) ? $_POST['message'] : '';
$captcha = isset($_POST['captcha']) ? $_POST['captcha'] : '';
$img_session = isset($_SESSION['img_session']) ? $_SESSION['img_session'] : '';
$website = $_SERVER['mysite'];

$headers = "From: $serverMail\r\n";
$toAdmin = "some example";
$toGuest = "some example";

    if (empty($email) or empty($name) or empty($email) or empty($message)){
        $output = "All fields are required!";
    }
    else{

        //to server side
        if (md5($captcha) == $img_session){
            $mailMessage = "
$name 
some message";

            if (mail($serverMail, $toAdmin, $mailMessage, $headers)) {

            }
        }

        // to guests side
        if (md5($captcha) == $img_session){
            $mailMessage = "
$name 
some message";

            if (mail($email, $toGuest, $mailMessage, $headers)) {
                header('Location:https://stackoverflow.com/');
                exit();
            }
        }
        else{
            $output = "Wrong Captcha Code!";
        }
    }

echo $output;

Я должен if (md5($captcha) == $img_session), потому что $mailMessage разные.

Почему у тебя два if (md5($captcha) == $img_session){ и какой из них стреляет?

Script47 01.04.2019 17:04

оба стреляют, но $mailMessage разные @Script47

user10828115 01.04.2019 17:05
У вас естьexit; в первом if (md5($captcha) == $img_session){ если его уволят, вы никогда не дойдете до header() утверждения
RiggsFolly 01.04.2019 17:05
http://helloworld/contact/thankyou.html это правильно?
devpro 01.04.2019 17:06

это правильно @devpro

user10828115 01.04.2019 17:06

что такое helloworld местная среда? или виртуальный? или равно localhost ???

devpro 01.04.2019 17:07

@devpro это сервер

user10828115 01.04.2019 17:08
helloworld это правильный домен?
devpro 01.04.2019 17:08

первая и вторая почта отправляют mailMessage, также я попробовал заголовок в первом тоже, он также не перенаправляется

user10828115 01.04.2019 17:09

@devpro это очень правильно,

user10828115 01.04.2019 17:09

без ДВУ? ??

devpro 01.04.2019 17:10
exitПрервал скрипт на этой строке!!!!! Так что либо это не настоящий код, либо он не отправляет оба письма
RiggsFolly 01.04.2019 17:10

он отправляет оба письма!!!!!! и это настоящий код. кстати, я также пробовал заголовок в первом письме вместо выхода, все еще не перенаправляющего.... @RiggsFolly

user10828115 01.04.2019 17:12

и я удалил выход... все та же проблема!?

user10828115 01.04.2019 17:13

ЕДИНСТВЕННЫЙ СПОСОБ, которым вы достигнете второго mail() утверждения, — это если первое mail() утверждение НЕ УДАЛОСЬ. Поэтому оба письма не могут быть отправлены

RiggsFolly 01.04.2019 17:14

хорошо, я удалил выход и попробовал так... все равно не перенаправляет? Вы видите какую-то другую проблему? @RiggsFolly

user10828115 01.04.2019 17:15

Вы уверены, что проверка капчи действительна?

Script47 01.04.2019 17:16

да, на самом деле я могу отправлять письма без проблем. единственная проблема в том, что я не могу перенаправить страницу... @Script47

user10828115 01.04.2019 17:16

Код, который вы разместили, это точно, как это? Есть ли что-то еще поверх этого кода? Этот файл php включен в другой?

Cid 01.04.2019 17:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
19
115
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Потому что вы используете "выход" после первого письма!

на самом деле это неправда, первая и вторая почта отправляют mailMessage, также я пробовал заголовок в первом, он также не перенаправляется

user10828115 01.04.2019 17:09

Разговор TXT не поощряется на SO. Помните, что не у всех английский язык является родным

RiggsFolly 01.04.2019 17:09

php.net: exit — вывести сообщение и завершить текущий скрипт

MaybeIamWrong 01.04.2019 17:11
Ответ принят как подходящий

Попробуйте использовать этот код, если он не дает, попробуйте использовать другой браузер. это может быть из

echo '<META HTTP-EQUIV = "refresh" CONTENT = "0;url=http://helloworld/contact/thankyou.html">';

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

user10828115 01.04.2019 17:55

в этом коде "заголовок", он работает, возможно, вы звоните по https, и он может не дать. возможно, вам следует называть его толькоthankyou.html, если эта страница находится в другой папке, вы можете использовать ../thankyou.html. сеанс_старт(); if (isset($_SESSION['userSession'])! = "") { header("Расположение: home.php?page=1"); } require_once 'dbconnect.php';

Michael Luis 01.04.2019 18:33

на самом деле, файлthankyou.html находится в той же папке, что и index.html. Я пытался указать «header(«Расположение:thankyou.html») и т. д., но это не сработало...

user10828115 02.04.2019 02:37

попробуйте протестировать свой код с помощью «эха», чтобы увидеть, входит ли он в ваше «если». Или это может быть из вашей капчи, если вы используете v3, у вас будет тайм-аут 3 минуты, и ваши данные не смогут быть отправлены, лучше всего изменить его на v2, чтобы пользователь мог активировать ключ капчи.

Michael Luis 02.04.2019 10:37

Дважды проверять капчу не нужно.

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

session_start();
$serverMail = '[email protected]';

$email = isset($_POST['email']) ? $_POST['email'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$message = isset($_POST['message']) ? $_POST['message'] : '';
$captcha = isset($_POST['captcha']) ? $_POST['captcha'] : '';
$img_session = isset($_SESSION['img_session']) ? $_SESSION['img_session'] : '';
$website = $_SERVER['mysite'];

$headers = "From: $serverMail\r\n";
$toAdmin = "some example";
$toGuest = "some example";

if (empty($email) or empty($name) or empty($email) or empty($message)){
    $output = "All fields are required!";
} else{

    if (md5($captcha) == $img_session){

        //to server side
        $mailMessage = "\n$name\n\nsome message";

        $m1 = mail($serverMail, $toAdmin, $mailMessage, $headers)) {

        // to guests side
        $mailMessage = "\n$name\n\nsome other message";

        $m2 = mail($email, $toGuest, $mailMessage, $headers)) {

        if ( $m1 && $m2 ) {
            header('Location:https://stackoverflow.com/');
            exit;
        } else {
            // one or both emails failed to send
            if ( ! $m1 ) {
                // error message for server mail failure
            }
            if ( ! $m2 ) {
                // error message for guest mail failure
            }
    } else {
        $output = "Wrong Captcha Code!";
    }
}

echo $output;

Другие вопросы по теме