Добавление комментариев отключено
Не работает антифлуд (пустой файл antiflood.txt лежит в папке со скриптом и в корне).
Также письма не отправляются, если адрес получателя такого вида:
<?php
function show_form()
{
?>
<form action="" method=post enctype="multipart/form-data">
<br />Имя*<br />
<input type="text" name="name" value="<?=substr(htmlspecialchars(trim($_POST['name'])), 0, 50);?>" size="40" maxlength=50>
<br />Город<br />
<input type="text" name="city" value="<?=substr(htmlspecialchars(trim($_POST['city'])), 0, 50);?>" size="40" maxlength=50>
<br />Контактный телефон<br />
<input type="text" name="tel" value="<?=substr(htmlspecialchars(trim($_POST['tel'])), 0, 50);?>" size="40" maxlength=50>
<br />Контактный email*<br />
<input type="text" name="email" value="<?=substr(htmlspecialchars(trim($_POST['email'])), 0, 50);?>" size="40" maxlength=50>
<br />Teма<br />
<input type="text" name="title" value="<?=substr(htmlspecialchars(trim($_POST['title'])), 0, 200);?>" size="83" maxlength=200>
<br />Сообщение*<br />
<textarea rows="10" name="mess" cols="80" wrap="soft" maxlength=10000><?=substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);?></textarea>
<br /><p><input type="submit" value="Отправить" name="submit"><br />
* Отмечены поля, которые необходимо заполнить</p>
</form>
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 200);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 50);
$_POST['city'] = substr(htmlspecialchars(trim($_POST['city'])), 0, 50);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 50);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_.]+@[0-9a-z^\-.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов ;-)
$mess = '
Имя: '.$_POST['name'].'
Город: '.$_POST['city'].'
Контактный телефон: '.$_POST['tel'].'
Контактный email: '.$_POST['email'].'
'.$_POST['mess'];
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = $_POST['email']; // от кого
$mail->FromName = $_POST['name']; // от кого
$mail->AddAddress('mail@my-domain.ru'); // кому - адрес
$mail->IsHTML(false); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
$mail->Body = $mess;
// отправляем наше письмо
$filename = "antiflood.txt";
chmod($filename, 0644);
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
if($contents != $mess){
$file = fopen("antiflood.txt", "w");
fputs ($file, $mess);
fclose ($file);
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
}
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
chmod($filename, 0644);
Попробуйте, может поможет.
Вопрос был задан на этой странице. Но если Вам это не интересно, могу предложить Вам почитать какой купить виртуальный платный хостинг mysql.