Поддержка Проблемы и решения Форма отправки маила

  • Решено mrguseynov

    (@mrguseynov)


    Здравствуйте. хочу создать форму отправки меила со страницы поста. Создал email.php в директории шаблона, подключил в loop-single.php путем
    <?php include_once( dirname(__FILE__) . '/email.php'); ?>
    Код отправки(email.php):

    
    $to  = 'чтото@gmail.com';
    	$error=0;
    	echo '<form enctype="multipart/form-data" 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>';
    
    	if (isset($_POST['isk_submit'])){
    		get_header();
    		if(trim($_POST['emailfrom']) == '')  {
    			$error=1;
    		} else {
    			$from = trim($_POST['emailfrom']);
    			//echo '<script type="text/javascript">alert("zzzzz")</script>';
    		}
    		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;
    			wp_mail($to, $subject, $body, $headers);
    		}
    		
    	}	
    

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

    • Тема изменена 7 лет, 2 месяца назад пользователем mrguseynov.
Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    хочу создать форму отправки меила со страницы поста

    Можно использовать специально предназначенные для этого плагины — например, Contact Form 7.

    Sergey Biryukov, извините, но мне не нужен плагин. Я написал форму и она почему-то не работает. Мне интересно в чем проблема

    • Ответ изменён 7 лет, 2 месяца назад пользователем mrguseynov.
    • Ответ изменён 7 лет, 2 месяца назад пользователем mrguseynov.
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    после первой посылки почты, при обновление страницы, посылается повторное письмо

    После отправки можно сделать перенаправление на ту же страницу, чтобы очистить массив $_POST. Перенаправления срабатывают только до вывода на экран, поэтому код проверки и отправки стоит перенести в начало шаблона, а лучше — вынести в функцию и привязать к действию init.

    не работает четвертый параметр меила

    В чём это выражается? Проверил скрипт на локальной установке — заголовки From и Reply-To попадают в письмо и соответствуют заданным.

    и не работает четвертый параметр меила. Т.е.
    $headers = 'From: My Site <'.$from.'>'

    Вангую что хостер озабочен ограничением спама и безопасностью, поэтому From, не принадлежащий домену идёт на прогулку.

    но мне не нужен плагин.

    И категорически зря!

    Может кому-то понадобится`<?php
    $to = ‘меил’;
    $error=0;
    echo ‘
    <form enctype=»multipart/form-data» method=»post» action=»/’.str_replace(network_home_url(), », get_permalink()) .'» id=»contactform»>
    <label for=»isk_name»>’.__( ‘Name’, ‘twentyten’ ). ‘:</label>
    <input class=»form-control» type=»text» name=»isk_name»>
    <label for=»isk_surname»>’.__( ‘Surname’, ‘twentyten’ ). ‘:</label>
    <input class=»form-control» type=»text» name=»isk_surname»>
    <label for=»emailfrom»>Email:</label>
    <input class=»form-control» type=»email» name=»emailfrom»>
    <label for=»subjectsubjectsubject»>’.__( ‘Subject’, ‘twentyten’ ). ‘:</label>
    <input class=»form-control» type=»text» name=»subject»>
    <label for=»message»>’.__( ‘Additional information’, ‘twentyten’ ). ‘:</label>
    <textarea rows=»5″ cols=»50″ name=»message» id=»message» class=»form-control»></textarea>
    <button class=»btn btn-primary btn-lg btn-block btn-ex» type=»submit» name=»isk_submit»>’.__( ‘Send’, ‘twentyten’ ). ‘</button>
    </form>
    ‘;
    if (isset($_POST[‘isk_submit’])){
    get_header();
    if(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[‘isk_surname’]) == ») {
    $error=1;
    }else {
    $isk_surname = trim($_POST[‘isk_surname’]);
    }
    if(trim($_POST[‘message’]) == ») {
    $error = 1;
    } 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 = ‘
    <div style=»-moz-box-sizing: border-box;box-sizing: border-box;»>
    <div style=»background:#00abd7;text-align:center;-moz-box-sizing: border-box;box-sizing: border-box;padding:10px 0;color:#fff;»>’.__( ‘Order’, ‘twentyten’ ). ‘</div>
    <div style=»width:30%; border:1px solid #ccc; border-top:none; float:left; padding: 8px; -moz-box-sizing: border-box; box-sizing: border-box;»>’.__( ‘Name’, ‘twentyten’ ). ‘</div>
    <div style=»border-right:1px solid #ccc; border-bottom:1px solid #ccc; padding: 8px; margin: 0 0 0 30%; -moz-box-sizing: border-box; box-sizing: border-box;»>$isk_name</div>
    <div style=»width:30%; border:1px solid #ccc; border-top:none; float:left; padding: 8px; -moz-box-sizing: border-box; box-sizing: border-box;»>’.__( ‘Surname’, ‘twentyten’ ). ‘</div>
    <div style=»border-right:1px solid #ccc; border-bottom:1px solid #ccc; padding: 8px; margin: 0 0 0 30%; -moz-box-sizing: border-box; box-sizing: border-box;»>$isk_surname</div>
    <div style=»width:30%; border:1px solid #ccc; border-top:none; float:left; padding: 8px; -moz-box-sizing: border-box; box-sizing: border-box;»>’.__( ‘Email’, ‘twentyten’ ). ‘</div>
    <div style=»border-right:1px solid #ccc; border-bottom:1px solid #ccc; padding: 8px; margin: 0 0 0 30%; -moz-box-sizing: border-box; box-sizing: border-box;»>$from</div>
    <div style=»width:30%; border:1px solid #ccc; border-top:none; float:left; padding: 8px; -moz-box-sizing: border-box; box-sizing: border-box;»>’.__( ‘Subject’, ‘twentyten’ ). ‘:</div>
    <div style=»border-right:1px solid #ccc; border-bottom:1px solid #ccc; padding: 8px; margin: 0 0 0 30%; -moz-box-sizing: border-box; box-sizing: border-box;»>$subject</div>
    <div style=»width:30%; border:1px solid #ccc; border-top:none; float:left; padding: 8px; -moz-box-sizing: border-box; box-sizing: border-box;»>’.__( ‘Additional information’, ‘twentyten’ ). ‘</div>
    <div style=»border-right:1px solid #ccc; border-bottom:1px solid #ccc; padding: 8px; margin: 0 0 0 30%; -moz-box-sizing: border-box; box-sizing: border-box;»>$comments</div>
    <div style=»clear:both»></div>
    </div>
    ‘;
    $headers .= «MIME-Version: 1.0\r\n»;
    $headers .= «Content-Type: text/html; charset=utf-8\r\n»;
    wp_mail($to, $subject, $body, $headers);
    ?>
    <script type=»text/javascript»>document.location.href=»<?php echo get_permalink(); ?>»;</script>
    <?php
    exit;
    }
    }
    ?>`

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Форма отправки маила» закрыта для новых ответов.