Добрый день! Возможно это дупликат вопроса, но я не нашел ответа.
Начинается все с формы регистрации:
Потом в массиве POST
отправляются данные из полей email, name, gender и password. Форма имеет атрибут method: post
и action: confirm.php
.
Суть такая: есть файл confirm.php
и в нем функция mail()
. Так вот при каждом обновлении страницы email посылается снова. Надо чтобы email не приходил после каждого обновления страницы. Вот код:
session_start();
$email = htmlspecialchars($_POST['email']);
$name = htmlspecialchars($_POST['name']);
$gender = htmlspecialchars($_POST['gender']);
$password = htmlspecialchars($_POST['password']);
unset($_POST['fruit']);
unset($_POST['register']);
function createRandomStringValidationCode($randomstring){
$randomstring = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyz"), 30);
return($randomstring);
}
$randomCode = createRandomStringValidationCode($randomCode);
$_SESSION['user'] = array(
'email' => $email,
'name' => $name,
'password' => $password,
'gender' => $gender,
'validation' => $randomCode,
);
$to; $subject; $message; $headers; $from;
function sendMail(){
$headers = "Content-type: text/plain; charset: UTF-8"."\r\n";
$to = $_SESSION['user']['email'];
$from = "rayeugen@gmail.com". "\r\n";
$subject = "Thanks for youre registration on Eugen Ray\"s Website";
$message = "Thanks for your registration"." ".$_SESSION['user']['name']." "."\nTo continue usage of Eugen Ray\"s Website, you'll have toe enter code given below on validation page.\nHere's your validation code:"." ".$_SESSION['user']['validation']."\nWish you all the best.\nEugen Ray";
mail($to, $subject, $message, $from, $headers);
}
sendMail();
if(empty($_POST)){
header("Location: register");
}
Всё равно не показали код confirm.php, так что могу только сказать как надо было бы сделать, а вы уже меняйте в своем коде.
Когда пользователь отправил данные на страницу confirm.php вы их проверили, записали в базу и отправили письмо, и после всех этих действий нужно отправить пользователя на другую страницу, где то вот тут добавьте редирект:
sendMail();
//Сразу после отправки почты судя по вашему коду
//header("Location: index.php");exit();
А так получается он остается на confirm.php и при обновлении страницы снова и снова отправляет POST данные на страницу и письмо отправляется.
А если добавите в конце регистрации редирект он на эту страницу уже не попадет и письмо отправляться не будет, а если сам захочет зайти на страницу сработает ваше условие:
if(empty($_POST)){
header("Location: register");
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
В программе производится много расчетов в базе данных(сначала исходная таблица разбивается на подтаблицы, после чего в каждой подтаблице...
Нужно импортировать csv файлы в БД под управлением QSLite с использованием Qt C++? Парсинг не вариантВ гугле толком ничего не нашел
Не могу разобраться с синтаксисом, подскажитеИ правильный ли алгоритм?
Ищу самую минималистскую IDE для C++ с вот такими требованиями: