Я не очень хорошо разбираюсь в php, и мой друг помог мне с этим скриптом php. Но это не похоже на отправку писем на нужный адрес. Подскажите, пожалуйста, в чем может быть проблема с этим скриптом?
Я очень ценю это. Спасибо
<?php
$error = array();
if(!empty($_POST['contact_submit']) && ($_POST['contact_submit'] == 'submit') ) {
if(!empty($_POST['name'])) {
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
} else {
$error[] = 'Please enter your name.';
}
if(!empty($_POST['email'])) {
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
} else {
$error[] = 'Please enter a correct email address.';
}
} else {
$error[] = 'Please enter your email address.';
}
if(!empty($_POST['phone'])) {
if(filter_var($_POST['phone'], FILTER_VALIDATE_INT)) {
$phone = filter_var($_POST['phone'], FILTER_SANITIZE_NUMBER_INT);
} else {
$error[] = '<i>Phone number</i> only expects number';
}
} else {
$error[] = 'Please enter your email address.';
}
if(!empty($_POST['time'])) {
$time = filter_var($_POST['time'], FILTER_SANITIZE_STRING);
} else {
$error[] = 'Please enter your best time to contact.';
}
if(!empty($_POST['msg'])) {
$msg = filter_var($_POST['msg'], FILTER_SANITIZE_STRING);
} else {
$error[] = 'Please enter your message.';
}
if(empty($error)) {
$to = '[email protected]';
$subject = 'from contact form';
$message = $phone . "\r\n";
$message .= $time . "\r\n";
$message .= $msg;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$name.' <'. $email.'>' . "\r\n" .
'Reply-To: '.$name.' <'. $email . '>' ."\r\n";
//echo '<pre>'; var_dump($to, $subject, $message, $headers); echo '</pre>'; die();
mail($to, $subject, $message, $headers);
}
}
?><?php
if(!empty($error)) {
echo '<ul class="error">';
echo '<li>' . implode('</li><li>', $error) . '</li>';
echo '</ul>';
}
?>
<form method="post" action="">
<input type="text" name="name" value="" placeholder="Enter your name" class="email_form"/>
<input type="text" name="email" value="" placeholder="Enter your email address" class="email_form"/>
<input type="text" name="phone" value="" placeholder="Phone number" class="email_form"/>
<input type="text" name="time" value="" placeholder="Best time to contact. e.g. 3 am" class="email_form"/>
<textarea name="msg" placeholder="Your message" class="email_form"></textarea>
<input type="image" value="submit" name="contact_submit" src="images/submit.png" width="96" height="43" class="email_button">
</form>
Измените эту строку:
if(!empty($_POST['contact_submit']) && ($_POST['contact_submit'] == 'submit') ) {
в
if(isset($_POST['contact_submit']) ) {
а также
<input type="image" value="submit" name="contact_submit" src="images/submit.png" width="96" height="43" class="email_button">
в
<input type = "submit" value="submit" name="contact_submit">
PHP ищет тип отправки, а вы используете тип изображения.
Вам нужно будет изменить:
if(!empty($_POST['contact_submit']) && ($_POST['contact_submit'] == 'submit') )
в другое условное утверждение.
Например:
if(!empty($_POST['email'])){
Вы всегда можете добавить к этому условному оператору другие поля, которые вы хотите проверить, установлены ли они / не заполнены.
Например:
if(!empty($_POST['email']) || !empty($_POST['name'])){
Нотабене: Если почта по-прежнему не отправляется / не поступает, вам необходимо убедиться, что mail()
действительно доступен для использования и / или проверки ваших журналов и окна спама.
добавлять Отчет об ошибках к началу вашего файла (ов), которые помогут во время производственного тестирования.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Примечания:
В поле телефона должны быть все номера, иначе произойдет сбой.
т.е .: 555-234-5678
не сработало, но 5552345678
сделал, поэтому вам нужно будет информировать своих пользователей о том, как это должно быть введено.
Редактировать: (полный код) — копировать точно так, как показано при изменении [email protected]
на свой адрес электронной почты.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$error = array();
if(isset($_POST['contact_submit']) ) {
if(!empty($_POST['name'])) {
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
} else {
$error[] = 'Please enter your name.';
}
if(!empty($_POST['email'])) {
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
} else {
$error[] = 'Please enter a correct email address.';
}
} else {
$error[] = 'Please enter your email address.';
}
if(!empty($_POST['phone'])) {
if(filter_var($_POST['phone'], FILTER_VALIDATE_INT)) {
$phone = filter_var($_POST['phone'], FILTER_SANITIZE_NUMBER_INT);
} else {
$error[] = '<i>Phone number</i> only expects number';
}
} else {
$error[] = 'Please enter your email address.';
}
if(!empty($_POST['time'])) {
$time = filter_var($_POST['time'], FILTER_SANITIZE_STRING);
} else {
$error[] = 'Please enter your best time to contact.';
}
if(!empty($_POST['msg'])) {
$msg = filter_var($_POST['msg'], FILTER_SANITIZE_STRING);
} else {
$error[] = 'Please enter your message.';
}
if(empty($error)) {
$to = '[email protected]';
$subject = 'from contact form';
$message = $phone . "\r\n";
$message .= $time . "\r\n";
$message .= $msg;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$name.' <'. $email.'>' . "\r\n" .
'Reply-To: '.$name.' <'. $email . '>' ."\r\n";
//echo '<pre>'; var_dump($to, $subject, $message, $headers); echo '</pre>'; die();
mail($to, $subject, $message, $headers);
}
}
?><?php
if(!empty($error)) {
echo '<ul class="error">';
echo '<li>' . implode('</li><li>', $error) . '</li>';
echo '</ul>';
}
?>
<form method="post" action="">
<input type="text" name="name" value="" placeholder="Enter your name" class="email_form"/>
<input type="text" name="email" value="" placeholder="Enter your email address" class="email_form"/>
<input type="text" name="phone" value="" placeholder="Phone number" class="email_form"/>
<input type="text" name="time" value="" placeholder="Best time to contact. e.g. 3 am" class="email_form"/>
<textarea name="msg" placeholder="Your message" class="email_form"></textarea>
<input type = "submit" value="submit" name="contact_submit">
</form>
Вы также можете показать сообщение, если оно было успешно отправлено, заменив:
mail($to, $subject, $message, $headers);
с:
if(mail($to, $subject, $message, $headers)){
echo "Mail sent, thank you.";
}
else{
echo "There was an error.";
}
Вы также можете зарегистрировать ошибку:
Сообщение 0 отправляется системному журналу PHP с использованием механизма регистрации операционной системы или файла, в зависимости от того, на что установлена директива конфигурации error_log. Это опция по умолчанию. 1 сообщение отправляется по электронной почте на адрес в параметре адресата. Это единственный тип сообщения, в котором используется четвертый параметр extra_headers. 2 Больше не вариант. 3 сообщение добавляется к месту назначения файла. Новая строка автоматически не добавляется в конец строки сообщения. 4 сообщение отправляется непосредственно обработчику журналов SAPI.
т.е .:
if(mail($to, $subject, $message, $headers)){
echo "Mail sent, thank you.";
}
else{
error_log("Error!", 3, "/var/tmp/mail-errors.log");
}
Других решений пока нет …