Всем привет. Кто поможет доделать скриптик с меня плюсики. Вообщем есть скрипт обратной связи с админом. Нужно сделать так, что бы с одного IP можно было отправлять второе сообщение не более чем через час после отправки первого, в противном случае выводить сообщение: Вы менее чем час назад уже отправляли письмо через эту форму, если у Вас есть какие то дополнения или вы указали неправильный обратный адрес, то свяжитесь с нами по ICQ. Заранее благодарю всех, кто откликнется. Сам скрипт: PHP: <table border="0" borderColor=#ff9933 cellpadding="0" cellspacing="0" width="80%" align=center> <tr> <td align=left valign=middle width=50% height="10"><p align="justify" class="h"> <? $stringmess = "Все поля отмеченные ( * ) являются обязательными.<br> Во избежания разных неприятностей просьба внимательно заполнять все поля формы"; $form_blok = " <center> <p class=\"text\" align=\"center\"> $stringmess</p> </center> <form method=\"post\" action=\"$PHP_SELF\"> <p> <strong class=\"text\">* Ваше имя:</strong><br> <input type=\"text\" name=\"sender_name\" size=\"30\"></p> <p> <strong class=\"text\">* E-mail:</strong><br> <input type=\"text\" name=\"sender_mail\" size=\"30\"></p> <strong class=\"text\">* Ваш ICQ</strong><br> <input type=\"text\" name=\"sender_ICQ\" size=\"30\"></p> <p><strong class=\"text\">* Сообщение:</strong><br> <textarea name=\"message\" cols=35 rows=5 wrap=virtual></textarea></p> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"200\" align=left> <tr><td align=center valign=top width=100 height=\"5\"> <input class=but4 type=\"reset\" name=\"reset\" value=\"Очистить\"></td> <td align=center valign=top width=\"100\" height=\"5\"> <input type=\"hidden\" name=\"op\" value=\"ds\"> <input class=but4 type=\"submit\" name=\"submit\" value=\"Послать\"></p> </td></tr></table> </form> </td></tr></table> "; if ($op != "ds") { echo "$form_blok"; } else if ($op == "ds"){ if ($sender_name ==""){ $name_err = "<font color=\"red\" class=\"text\">Вы не заполнили поле <b>ИМЯ</b>!</font><br>"; $send = "no"; } if ($sender_mail =="") { $mail_err ="<font color=\"red\" class=\"text\">Вы не заполнили поле <b>E-mail</b>!</font><br>"; $send = "no"; } if ($sender_ICQ =="") { $icq_err ="<font color=\"red\" class=\"text\">Вы не заполнили поле <b>ICQ</b>!</font><br>"; $send = "no"; } else if(!preg_match("/^([a-z,0-9])+\@([a-z,0-9])+(\.([a-z,0-9])+)+$/", $sender_mail)) { $mail_err1 = "<font color=\"red\" class=\"text\">Вы не правильно заполнили поле <b>E-mail</b>!</font><br>"; $send = "no"; } if ($message ==""){ $message_err = "<font color=\"red\" class=\"text\">Вы не заполнили поле <b>Сообщение</b>!</font><br>"; $send = "no"; } if ($send != "no"){ $msg= "Тема письма\n"; $msg .= "Имя отправителя:\n\t\t$sender_name\n"; $msg .= "E-mail отправителя:\n\t\t$sender_mail\n"; $msg .= "Сообщение: \n$sender_ICQ\n\n\n"; $msg .= "Сообщение: \n$message\n\n\n"; $to = "мыльник админа"; $subject = "Тема письма"; $mailheaders .="Reply-To: $mail\n\n"; mail ($to, $subject, $msg, $mailheaders); $stringmess_ok = "Уважаемый $sender_name, ваше сообщение было успешно отправленно. Администрация свяжется с Вами для уточнения всех деталей.<br>"; echo "<center><p class=\"text\">$stringmess_ok</p><br>"; echo "<a href=\"mess.php\" class=\"leftmenu\">Hазад</a><br></center>"; } else if ($send == "no") { echo "<center>"; echo "$name_err"; echo "$mail_err"; echo "$icq_err"; echo "$message_err"; echo "$mail_err1"; echo "<a href=\"mess.php\" class=\"leftmenu\">Вернитесь назад и повторите попытку</a><br>"; echo "</center>"; } } ?> </td> </tr> </table> </p> </td> </tr> </table> </td> </tr> </table>
Боишься флуда чтоли?Я чего-то не пойму,если я тебя правильно понял,то проще впихнуть капчу.Она есть в разделе "полезные скрипты"
Блин, и примитивную защиту от флуда прикрутил, и письма отправляет, только блин инфу не всё что нужно передаёт. Посмотрите пожалуйста, в чём косяк? Не передаёт поля Имя и Мэил. PHP: <?php $mailto = "my_mail"; $charset = "windows-1251"; $subject = "Письмо с сайта http://$HTTP_HOST"; $content = "text/plain"; $status=" "; $errors_name = 'Введите ваше имя'; $errors_mailfrom = 'Введите свой E-mail'; $errors_incorrect = 'Заполните правильно Ваш E-mail'; $errors_message = 'Наберите сообщение!'; $errors_code = 'Неверный код'; if (isset($_POST['message'])) { $fp = fopen('code.txt','r'); $realcode = fread($fp,4); fclose($fp); if ($_POST['code'] === $realcode) { mail("$mailto","$subject","$message","$headers"); $send = 'Ваше письмо отправлено!'; $fp = fopen('code.txt','w'); for ($i=1;$i<5;$i++) fwrite($fp,mt_rand(0,9)); fclose($fp); } else echo "Неверный код!"; } if (isset($name) && $name == "") { $status = "$errors_name"; } elseif (isset($mailfrom) && $mailfrom == "") { $status = "$errors_mailfrom"; } elseif(isset($mailfrom) && !preg_match("/^([a-z,._,0-9])+@([a-z,._,0-9])+(.([a-z])+)+$/", $mailfrom)) { $status = "$errors_incorrect"; unset($mailfrom); } elseif (isset($message) && $message == "") { $status = "$errors_message"; } elseif (!empty($_POST)) { $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: $content charset=$charset\r\n"; $headers .= "Date: ".date("Y-m-d (H:i:s)",time())."\r\n"; $headers .= "From: \"$name\" <$mailfrom>\r\n"; $headers .= "X-Mailer: My Send E-mail\r\n"; unset($name, $mailfrom, $mailto, $subject, $message); $status = "$send"; } echo " <table width=465 border=\"0\"> <tr> <td height=\"50\" align=\"center\" colspan=\"2\"><font color=\"blue\">$status</font></td> </tr> <form method=\"post\"> <tr> <td width=164><font size=\"2\">Ваше имя* </font></td> <td width=291><input type=\"text\" name=\"name\"></td> </tr> <tr> <td><font size=\"2\">Ваш e-mail* </font></td> <td width=291><input type=\"text\" name=\"mailfrom\"></td> </tr> <tr> <td><p align=\"left\"><font size=\"2\">Сообщение* </font></p> </td> <td width=291><textarea name=\"message\" cols=\"33\" rows=\"10\">Текст сообщения.</textarea></td> </tr> <tr> <td><font size=\"2\">Введите цифры с картинки* </font></td> <td width=291><input type=\"text\" name=\"code\"> </td> </tr> <tr> <td align=\"left\"></td> <td width=291 colspan=\"2\"><img src=\"code.php\"></td> </tr> <tr> <td align=\"center\" colspan=\"2\"><input type=\"submit\" value=\"Отправить\" style=\"border: 1px solid #000000\"></td> </tr> </form> </table>\r\n"; ?>
$mailfrom = isset($_POST['mailfrom']) ? $_POST['mailfrom'] : null; $name = isset($_POST['name']) ? $_POST['name'] : null; $message = isset($_POST['message']) ? $_POST['message'] : null; А вообще логика скрипта кривая На 15 строке провереем существования поля message PHP: if (isset($_POST['message'])) На 20 совпдение кода PHP: if ($_POST['code'] === $realcode) Если 2 условия совпало отправляем письмо PHP: mail("$mailto","$subject","$message","$headers"); Но сдесь не присвоено значение $message, $headers Идем дальше В 33 строке PHP: if (isset($name) && $name == "") { $status = "$errors_name"; } если я не ввел имя, у меня $status переприсваиваеться "$errors_name", и это после отправки письма, ошибка после отправки mail("$mailto","$subject","$message","$headers"); Нужно перенести mail в конец проверок и и вывести значения из $_POST массива, а еще лучше переписать все это нафих
Блин, не пойму в чём дело. Юзал скрипт обратной связи: PHP: <? print" <FORM method=\"POST\" action=\"zakaz.php?ok=send\"> <P>Ваше Имя:<br> <INPUT type=\"text\" name=\"Name\" size=30> </p> <P>Ваш e-mail:<br> <INPUT type=\"text\" name=\"Email\" size=30> </p> <P>Ваш ICQ:<br> <INPUT type=\"text\" name=\"ICQ\" size=30> </p> <P>Сообщение:<br> <textarea name=\"Message\" cols=30 rows=5></textarea> </p> <input onclick=\"submit\" name=\"image\" type=\"image\" src=\"/image.gif\" style=\"width:100px; height:100px; border:0\" /> </FORM>"; switch($ok) : default : break; case("send") : if ($Email == "") {print "<script language=JavaScript>window.alert('Введите e-mail!');</script>"; exit;} if ($ICQ == "") {print "<script language=JavaScript>window.alert('Введите ICQ!');</script>"; exit;} if ($Message == "") {print "<script language=JavaScript>window.alert('Введите текст!');</script>"; exit;} if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $Email) and $Email != "") {print "<script language=JavaScript>window.alert('Не правельный E-mail');</script>"; exit;} $er = 1; $ip = $REMOTE_ADDR; $date = date("d.m.Y"); $info = "Name:\t$Name\n"; $info .= "E-Mail:\t$Email\n"; $info .= "E-Mail:\t$ICQ\n"; $info .= "Message:\t$Message\n\n"; $send_to = "мыло доставки"; $subject = "Тема и дата $date"; $headers = "From: Ip адрес: $ip: \n"; $headers .= "Reply-To: $email\n\n"; $send = mail($send_to, $subject, $info, $headers); if($send == 1) { print ("<script language=JavaScript>window.alert('Отправлено $date');</script>"); } else print ("<script language=JavaScript>window.alert('Ошибка');</script>"); break; endswitch; ?> Всё работало норм, письма приходили, а щас чёта не работает. В чём косяк?