Код отправителя электронной почты php не работает должным образом

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

if(isset($_POST['send'])) { 

$name = $_POST['fname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$interested = $_POST['interested'];
$message = $_POST['message'];
if(!empty($name) && !empty($email) && !empty($message) )

{
        $from="From: $name<$email>\r\nReturn-path: $email"; 
        $subject="Regoora Message Center"; 
         $message1 = "Customer Name :".$name."
                    Customer Email :".$email." 
                    Customer Phone :".$phone." 
                    Customer interested :".$interested ." 
                    Customer message :".$message." ";
        mail("[email protected]",$subject,$message1); 
        $mess = "Successfully sent your inquiry";
    }
    else{



$mess = 'We are sorry, but there appears to be a problem with the form you submitted.';     




}}

person user3694563    schedule 12.02.2015    source источник
comment
Используйте условный оператор с именованной кнопкой отправки и выполните перенаправление с заголовком. Кроме того, $from — это случайная переменная, поэтому добавьте ее в свои заголовки.   -  person Funk Forty Niner    schedule 12.02.2015
comment
Здесь =› php.net/manual/en/function.header.php плюс вы также можете использовать сеансы и токены, которые предотвратят повторную отправку.   -  person Funk Forty Niner    schedule 12.02.2015


Ответы (1)


Если ваш код работал правильно в первый раз, это потому, что он работает нормально. Во второй раз вы только что обновили страницу, и она отправила еще одно электронное письмо, потому что «Обновить» всегда будет повторять ваше последнее действие. Если последним действием была «Отправить электронное письмо», при обновлении страницы будет предпринята попытка повторно отправить электронное письмо.

Чтобы избежать этого, после отправки нажмите на адресную строку (http://localhost/xxxx) и нажмите Ввод. Это сбросит страницу.

person EddyTheDove    schedule 12.02.2015
comment
А как насчет других людей, кроме ОП? Они не собираются следовать этому. Это не сработает. - person Funk Forty Niner; 12.02.2015
comment
У вас есть много вариантов, чтобы люди не отправляли письмо повторно. Первый вариант — сделать unset($_POST['send']); после отправки письма. Второй вариант — перенаправить пользователя на другую страницу. - person EddyTheDove; 12.02.2015