Все работает нормально, кроме перенаправления на страницу благодарности. Я могу отправить письмо в обе стороны, но после отправки контактной формы я не могу перенаправить страницу на 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 разные.
оба стреляют, но $mailMessage разные @Script47
exit; в первом if (md5($captcha) == $img_session){ если его уволят, вы никогда не дойдете до header() утверждения
http://helloworld/contact/thankyou.html это правильно?
это правильно @devpro
что такое helloworld местная среда? или виртуальный? или равно localhost ???
@devpro это сервер
helloworld это правильный домен?
первая и вторая почта отправляют mailMessage, также я попробовал заголовок в первом тоже, он также не перенаправляется
@devpro это очень правильно,
без ДВУ? ??
exitПрервал скрипт на этой строке!!!!! Так что либо это не настоящий код, либо он не отправляет оба письма
он отправляет оба письма!!!!!! и это настоящий код. кстати, я также пробовал заголовок в первом письме вместо выхода, все еще не перенаправляющего.... @RiggsFolly
и я удалил выход... все та же проблема!?
ЕДИНСТВЕННЫЙ СПОСОБ, которым вы достигнете второго mail() утверждения, — это если первое mail() утверждение НЕ УДАЛОСЬ. Поэтому оба письма не могут быть отправлены
хорошо, я удалил выход и попробовал так... все равно не перенаправляет? Вы видите какую-то другую проблему? @RiggsFolly
Вы уверены, что проверка капчи действительна?
да, на самом деле я могу отправлять письма без проблем. единственная проблема в том, что я не могу перенаправить страницу... @Script47
Код, который вы разместили, это точно, как это? Есть ли что-то еще поверх этого кода? Этот файл php включен в другой?






Потому что вы используете "выход" после первого письма!
на самом деле это неправда, первая и вторая почта отправляют mailMessage, также я пробовал заголовок в первом, он также не перенаправляется
Разговор TXT не поощряется на SO. Помните, что не у всех английский язык является родным
php.net: exit — вывести сообщение и завершить текущий скрипт
Попробуйте использовать этот код, если он не дает, попробуйте использовать другой браузер. это может быть из
echo '<META HTTP-EQUIV = "refresh" CONTENT = "0;url=http://helloworld/contact/thankyou.html">';
на самом деле это сработало, но почему заголовок не работает, я действительно не понял.
в этом коде "заголовок", он работает, возможно, вы звоните по https, и он может не дать. возможно, вам следует называть его толькоthankyou.html, если эта страница находится в другой папке, вы можете использовать ../thankyou.html. сеанс_старт(); if (isset($_SESSION['userSession'])! = "") { header("Расположение: home.php?page=1"); } require_once 'dbconnect.php';
на самом деле, файлthankyou.html находится в той же папке, что и index.html. Я пытался указать «header(«Расположение:thankyou.html») и т. д., но это не сработало...
попробуйте протестировать свой код с помощью «эха», чтобы увидеть, входит ли он в ваше «если». Или это может быть из вашей капчи, если вы используете v3, у вас будет тайм-аут 3 минуты, и ваши данные не смогут быть отправлены, лучше всего изменить его на v2, чтобы пользователь мог активировать ключ капчи.
Дважды проверять капчу не нужно.
После проверки капчи создайте и отправьте оба письма, сохраняя статус во временной переменной. После отправки 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;
Почему у тебя два
if (md5($captcha) == $img_session){и какой из них стреляет?