Мой контакт с нами PHP-форма отправляет 7 электронных писем с каждой отправкой

Ну, моя форма для связи с нами PHP слишком хорошо отправляет электронное письмо ...

Я получаю 7 писем за отправку

Моя настройка - почтовая функция файла php.ini работает ..... очевидно

Я использую сценарий из http://phpfileuploader.com/

Наряду с простой формой обратной связи на php

http://i48.tinypic.com/2ywsf0w.png

Итак, люди заполняют форму и загружают картинку.

Проблема в том, что я понятия не имею, почему я получаю 7 писем за отправку.

Я использую последнюю версию WAMP с MySQL, APACHE, PHP

Для своего почтового сервера я использую Hmail

Есть предположения?

КОД

<?php require "quickcache.php"; ?>
<?php require "ieblock.php"; ?>
<?php require_once "phpuploader/include_phpuploader.php" ?> 
<!--- BEGIN CONTACT FORM --->
<form name="contactform" method="post" action="send_form_email.php">
<table width="450px">
<tr>
<td valign="top">
<label for="first_name">First Name *</label>
</td>
<td valign="top">
<input  type="text" name="first_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top"">
<label for="last_name">Last Name *</label>
</td>
<td valign="top">
<input  type="text" name="last_name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="email">Email Address *</label>
</td>
<td valign="top">
<input  type="text" name="email" maxlength="80" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="telephone">Telephone Number</label>
</td>
<td valign="top">
<input  type="text" name="telephone" maxlength="30" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="comments">COMMENTS*</label>
</td>
<td valign="top">
<textarea  name="comments" maxlength="1000" cols="25" rows="9"></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<br>
Please upload a picture of your computer 
<?php   

            $uploader=new PhpUploader();   
            $uploader->SaveDirectory="savefiles";    
            $uploader->Render();   
        ?></td>
</tr>
</table>

<!--- END CONTACT FORM --->

<!--- BEGIN SEND CONFIRMATION --->
<?php
if(isset($_POST['email'])) {

// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "MY EMAIL HERE";
$email_subject = "Buy my used computer, PLEASE!";


function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted.  ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}

// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you   
submitted.');       
}

$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['comments']; // required

$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\n\n";

function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}

$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telephone: ".clean_string($telephone)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";


// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

<!--- END SEND CONFIRMATION --->

Это 2 отдельные страницы кода, просто fyi

еще несколько мыслей ......

В моем файле php.ini у меня есть ---

[mail function]
; For Win32 only.
SMTP = 127.0.0.1
smtp_port = 25

; For Win32 only.
sendmail_from = [email protected]

НО,

В моем contactform.php у меня есть [email protected] и в hmail, который пересылается на [email protected]

Я не использовал свои настоящие электронные письма по соображениям конфиденциальности.


person Lisa Lowery    schedule 29.07.2012    source источник
comment
Изображение вашей формы не поможет. Нам нужен код!   -  person Bailey Parker    schedule 29.07.2012
comment
Лиза, пожалуйста, отредактируйте свой пост и включите код. Только тогда мы сможем вам помочь.   -  person Akhilesh B Chandran    schedule 29.07.2012
comment
Почему у вас @mail();, это должно быть просто _2 _... (хотя это, вероятно, не вызывает проблемы) (php.net/manual/en/function.mail.php)   -  person smilly92    schedule 29.07.2012
comment
@ sim_92 Добавление @ к имени функции подавляет вывод ошибок. Обычно это плохая идея, но часто встречается в коде копирования и вставки.   -  person octern    schedule 29.07.2012
comment
Я не вижу ничего, что могло бы привести к тому, что письмо будет отправлено 7 раз. Вы можете попробовать повторить какой-то текст в разных точках скрипта, чтобы увидеть, не зацикливается ли какой-либо из них или вызывается повторно. Было бы еще полезнее использовать error_log () - таким образом, если вся страница каким-то образом перезагружается снова и снова, у вас будут доказательства этого.   -  person octern    schedule 29.07.2012
comment
Еще несколько вопросов. Возникает ли эта проблема одинаково каждый раз, когда вы используете форму? Всегда ли отправляет ровно семь раз? Есть ли различия между заголовками семи разных писем?   -  person octern    schedule 29.07.2012
comment
Ага отправляет ровно 7 до тех пор, пока я не удалил зеркало со своего сервера hmail, теперь я просто получаю 2 письма каждый раз, и mail () выдает синтаксическую ошибку, а @mail - нет.   -  person Lisa Lowery    schedule 29.07.2012
comment
Я собираюсь просто добавить учетную запись в hmail и проверить ее прямо в Outlook вместо пересылки и посмотреть, поможет ли это.   -  person Lisa Lowery    schedule 29.07.2012
comment
Хорошо, обнаружил проблему .... PHP.ini настроен на отправку на [email protected] и пересылает на учетную запись электронной почты .... и поскольку мой адрес электронной почты в сценарии формы настроен на другой адрес электронной почты, я получаю пересылку нападающих ... я верю ...   -  person Lisa Lowery    schedule 29.07.2012
comment
Не знаю, связано ли это, но скобка в if(isset($_POST['email'])) { не имеет подходящей закрывающей скобки.   -  person Barmar    schedule 29.07.2012
comment
Закрывающая скобка просто не указана в коде, который я вставил, извините, НО они оба съемные, и я так и сделал.   -  person Lisa Lowery    schedule 29.07.2012
comment
Итак, мой адрес электронной почты такой же - в hmail у меня есть учетная запись для всех… учетная запись ... [email protected] ...... В php.ini у меня есть [email protected] ..... ADMIN пересылает на MAIN в hmail, а электронное письмо с форума контактов пересылает на MAIN ..... Сейчас я получаю только 2 письма .... Я получаю двойную пересылку, вот что происходит. PHP.ini отправляет от ADMIN, который пересылает на ГЛАВНУЮ, а электронную почту с форума пересылает на ГЛАВНУЮ .... Отсюда 2 письма ...... wooooooooo все подписаны?   -  person Lisa Lowery    schedule 29.07.2012
comment
Изменили адрес электронной почты в файле php.ini, и это не имело значения.   -  person Lisa Lowery    schedule 29.07.2012


Ответы (2)


Решено редактированием почтового php скрипта

person Lisa Lowery    schedule 13.08.2012
comment
Поставьте отметку перед своим ответом, чтобы все знали, что ваша проблема решена :) - person Jocelyn; 13.08.2012

Используйте функцию php die после отправки

<!--- END SEND CONFIRMATION --->
<?php
die();
?>
person lakshya_arora    schedule 30.05.2013