Форма отправки почты

392
30 января 2017, 20:16

Здравствуйте. Делаю форму отправки почты в постах wordpress.

$to  = 'Мой_меил@gmail.com';
$error=0;
if (isset($_POST['isk_submit'])){
    if(trim($_POST['emailfrom']) == '')  {
        $error=1;
    } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['emailfrom']))) {
        $error=1;
    } else {
        $from = trim($_POST['emailfrom']);
    }
    if(trim($_POST['subject']) == '')  {
        $error=1;
    }else {
        $subject = trim($_POST['subject']);
    }
    if(trim($_POST['isk_name']) == '')  {
        $error=1;
    }else {
        $isk_name = trim($_POST['isk_name']);
    }
    if(trim($_POST['message']) == '') {
    $hasError = true;
    } else {
        if(function_exists('stripslashes')) {
            $comments = stripslashes(trim($_POST['message']));
        } else {
            $comments = trim($_POST['message']);
        }
    }
    if ($error==1) {
        echo '<script type="text/javascript">alert("Error")</script>';
    }else {
        $body = "Name: $isk_name \n\nEmail: $from \n\nSubject: $subject \n\nComments:\n $comments";
        $headers = 'From: My Site <'.$from.'>' . "\r\n" . 'Reply-To: ' . $to;
        mail($to, $subject, $body, $headers);
    }
}
echo '<form method="post" action="/'.str_replace(network_home_url(), '', get_permalink()) .'" id="contactform">
<label for="isk_name">Name:<input type="text" name="isk_name"></label>
<label for="emailfrom">Email:<input type="email" name="emailfrom"></label>
<label for="subjectsubjectsubject">Subject:<input type="text" name="subject"></label>
<label for="message"><strong>Сообщение:</strong></label>
        <textarea rows="5" cols="50" name="message" id="message" class="required"></textarea>
<button type="submit" name="isk_submit">Send</button>
 </form>';

Но после первой посылки почты, при обновление страницы, посылается повторное письмо. и не работает четвертый параметр меила. Т.е. $headers = 'From: My Site <'.$from.'>' . "\r\n" . 'Reply-To: ' . $to;Помогите решить проблему

Answer 1

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

   $headers = 'From: webmaster@example.com' . "\r\n" .
        'Reply-To: webmaster@example.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
Answer 2

в последней строке if пропишите редирект на эту же страницу

if (isset($_POST['isk_submit'])){
/// ваш код отправки
header('Location:' . $_SERVER['REQUEST_URI']); // последняя буква i
}

тогда при обновление страницы браузер не будет предлогать отправить его снова.

READ ALSO
Нет прав доступа к группе

Нет прав доступа к группе

Хочу получить забаненных пользователей группыНо выдает ошибку

442
Как записать скидку к покупке в сессию? Opencart 2

Как записать скидку к покупке в сессию? Opencart 2

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

413
несколько php-fpm версий

несколько php-fpm версий

Для работы в основном нужен php56

425