Я никак не могу найти в интернете работоспособную форму обратной связи на PHP. Во всём, что нашёл, исправил адресс эл. почты, куда должны отправляться данные, но доставка так и не происходит. Тестировал скрипты с помощью бесплатного хостинга Hut.ru. Может быть проблемы в хостинге? Для примера вот скрипт, который должен отправлять данные: [PHP]<?
$myemail="Aleksey1989@mail.ru"; // Ваш электронный адрес $refreshpage="sendmail.php"; // Страница, куда возвращается человек после отправки сообщения $antispam="1"; // 1/0 - вкл/выкл АНТИСПАМ $maxkey=3; // Колличество символов в коде ЦИФРОЗАЩИТЫ (от 1 до 9) $maxname="30"; // Максимальное кол-во символов в имени $maxtema="50"; // максимум символов в теме $maxmsg="2000"; // Максимальное количество символов в сообщении
// Далее настраивается цвет таблицы и текста: цвет таблицы и цвет текста в заголовке таблицы // Для Выбора схемы - раскоментируйте её и закоментируйте текущую символами // //$bdcolor="#79BBEF"; $fcolor="#00293E"; // Светлоголубой //$bdcolor="#FF9A00"; $fcolor="#833C07"; // Оранжевый //$bdcolor="#FFE51A"; $fcolor="#FF8000"; // Жёлто-оранжевый //$bdcolor="#00E900"; $fcolor="#005300"; // Светло-зеленый //$bdcolor="#FB5037"; $fcolor="#620000"; // Красный //$bdcolor="#800080"; $fcolor="#350035"; // Сиреневенький $bdcolor="#007800"; $fcolor="#000000"; // Темно зеленый //$bdcolor="#D2A500"; $fcolor="#4A3406"; // Золотой //$bdcolor="#BCC0C0"; $fcolor="#646464"; // Серый //$bdcolor="#FFA8FF"; $fcolor="#800080"; // Розовый
$date=date("d.m.y"); // число.месяц.год $time=date("H:i"); // часы:минуты:секунды
// ТАБЛИЦА стилей зарыта ЗДЕСЬ !!! $shapka="<html> <head> <META http-equiv=Content-Type content='text/html; charset=windows-1251'> <style> BODY,TD {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;} .pismo {BORDER-BOTTOM:$bdcolor 1px solid;} .pismo2 {BORDER-LEFT:$bdcolor 1px solid; BORDER-BOTTOM:$bdcolor 1px solid;} .remtop {font-weight: bold; color: $fcolor; font-size:1.1em; padding:5px; border-top: 1px solid $fcolor; border-bottom: 1px solid $fcolor; background-color: $bdcolor;} .remdata {font-weight: bold; margin:0; display:inline; font-size:0.9em; color: $fcolor;} input,textarea {font-family: Verdana; font-size: 12px; text-decoration: none; color: #000000; cursor: default; background-color: #FFFFFF; border-style: solid; border-width: 1px; border-color: $bdcolor;} </style> </head> <BODY leftMargin=0 topMargin=0 rightMargin=0 bottomMargin=0 marginheight=0 marginwidth=0>";
$back="<center>Вернитесь <a href='javascript:history.back(1)'><B>назад</B></a>"; // Удобная строка
function replacer ($text) { // ФУНКЦИЯ очистки кода $text=str_replace(" ",' ',$text); $text=str_replace(">",'>',$text); $text=str_replace("<",'<',$text); $text=str_replace("\"",'"',$text); $text=preg_replace("/\n\n/",'<p>',$text); $text=preg_replace("/\n/",'<br>',$text); $text=preg_replace("/\\\$/",'$',$text); $text=preg_replace("/\r/",'',$text); $text=preg_replace("/\\\/",'\',$text); $text=str_replace("\r\n","<br> ",$text); $text=str_replace("\n\n",'<p>',$text); $text=str_replace("\n",'<br> ',$text); $text=str_replace("\t",'',$text); $text=str_replace("\r",'',$text); $text=str_replace(' ',' ',$text); do {$text=str_replace("<br><br><br>","<br>",$text);} while (preg_match("/<br><br><br><br>/i",$text)); do {$text=str_replace(" "," ",$text);} while (preg_match("/ /i",$text)); $text=str_replace("\t",' ',$text); $text=str_replace("\r",' ',$text); $text=str_replace(' ',' ',$text); $text=rtrim($text); return $text; }
// Для цифрозащиты антиспам: $absrand="82321";// Случайное число. Используется для цифрозащиты. if (isset($_GET['image'])) { // Функция с цифрами защиты $st="R0lGODlhCgAMAIABAFNTU////yH5BAEAAAEALAAAAAAKAAwAAAI"; // общая часть для всех рисунков function imgwr($st,$num){ if ($num=="0") {$len="63"; $number=$st."WjIFgi6e+QpMP0jin1bfv2nFaBlJaAQA7";} if ($num=="1") {$len="61"; $number=$st."UjA1wG8noXlJsUnlrXhE/+DXb0RUAOw==";} if ($num=="2") {$len="64"; $number=$st."XjIFgi6e+QpMPRlbjvFtnfFnchyVJUAAAOw==";} if ($num=="3") {$len="64"; $number=$st."XjIFgi6e+Qovs0RkTzXbj+3yTJnUlVgAAOw==";} if ($num=="4") {$len="64"; $number=$st."XjA9wG8mWFIty0amczbVJDVHg9oSlZxQAOw==";} if ($num=="5") {$len="63"; $number=$st."WTIAJdsuPHovSKGoprhs67mzaJypMAQA7";} if ($num=="6") {$len="63"; $number=$st."WjIFoB6vxmFw0pfpihI3jOW1at3FRAQA7";} if ($num=="7") {$len="61"; $number=$st."UDI4Xy6vtAIzTyPpg1ndu9oEdNxUAOw==";} if ($num=="8") {$len="63"; $number=$st."WjIFgi6e+QpMP2slSpJbn7mFeWDlYAQA7";} if ($num=="9") {$len="64"; $number=$st."XjIFgi6e+QpMP0jinvbT2FGGPxmlkohUAOw==";} header("Content-type: image/gif"); header("Content-length: $len"); echo base64_decode($number); } // Вывод изображений на экран (все кодированы - робот не пройдёт) if (array_key_exists("image", $_REQUEST)) { $num=$_REQUEST["image"]; for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} } exit;}
//******************* Ниже лучше ничего не трогать ************************//
// Событие ОТПРАВКИ СООБЩЕНИЯ администратору if (isset($_GET['event'])) {
//sleep(1); // мелкая защита от БОТОВ
if ($antispam==TRUE) { $bada="$shapka $back <font color=red>Введённый вами код НЕ верен</font>!"; if (isset($_POST['usernum'])) {$usernum=$_POST['usernum'];} else {exit("$bada");} if (isset($_POST['xkey'])) {$xkey=$_POST['xkey'];} else {exit("$bada");} $userkey=md5("$usernum+$absrand"); if ($userkey!=$xkey) {exit("$bada");}}
// обрабатываем REPLACER'ом все данные if (!isset($_POST['name'])) {exit("$shapka $back Вы не ввели имя!");} else {$name=replacer($_POST['name']);} if (!isset($_POST['email'])) {exit("$shapka $back Вы не ввели емайл!");} else {$email=replacer($_POST['email']);} if (!isset($_POST['tema'])) {exit("$shapka $back Вы не ввели тему!");} else {$tema=replacer($_POST['tema']);} if (!isset($_POST['msg'])) {exit("$shapka $back Вы не ввели сообщение!");} else {$msg=replacer($_POST['msg']);}
// Если тема обязательна, разкоментируйте строчку ниже if ($tema=="" || strlen($tema)>$maxtema) {exit("$shapka $back Вы не ввели тему!</B></center>");}
if ($name=="" || strlen($name)>$maxname) {exit("$shapka $back Вы не ввели имя, или вввели слишком длинное имя!</B></center>");} if ($msg=="" || strlen($msg)>$maxmsg) {exit("$shapka $back Ваше сообщение или пустое или превышает $maxmsg символов.</B></center>");} if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $_POST['email']) or $_POST['email']=="") {exit("$shapka $back и введите корректный E-mail адрес!</B></center>");}
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $smailurl="http://$host$self";
// Настройки для отправки писем $headers=null; $headers.="Content-Type: text/html; charset=windows-1251\r\n"; $headers.="From: ".$name." <".$email.">\r\n"; $headers.="X-Mailer: PHP/".phpversion()."\r\n";
// Собираем всю информацию в теле письма $allmsg="$shapka <center> <table cellpadding=5 cellspacing=0> <TR><TD colspan=2><div class=remtop align=center>Сообщение c сайта \"<a href='$smailurl'>$smailurl</a>\"</div></TD></TR> <TR><TD class=pismo><P class=remdata>Имя</P></TD><TD class=pismo2><B>$name<B></TD></TR> <TR><TD class=pismo><P class=remdata>E-mail</P></TD><TD class=pismo2><a href='mailto:$email'>$email</a></td></tr> <TR><TD class=pismo><P class=remdata>Тема</P></TD><TD class=pismo2><B>$tema<B></td></tr> <TR><TD class=pismo><P class=remdata>Дата отправки:</P></TD><TD class=pismo2>$date г. в $time</td></tr> <TR><TD class=pismo><P class=remdata>Сообщение</P></TD><TD class=pismo2>$msg</td></tr> </table>";
$printmsg="$allmsg <center><BR>Ваше сообщение <B><font color=navy>успешно отправлено</font></B><BR><BR> <a href='$refreshpage'>Вернуться <B>назад</B></a>
</body></html>"; $allmsg.="<BR><BR><BR>* Это сообщение отправлено с формы обратной связи.</body></html>";
// Отправляем письмо майлеру на съедение ;-) mail("$myemail", "Обратная связь. Сообщение от $name", $allmsg, $headers);
// Пишем пользователю "Спасибо" и обновляем страницу через JavaScript print "<script language='Javascript'>function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 3000);</script>$printmsg"; exit;
} else { // Типо главной страницы
print "$shapka <center> <form action=sendmail.php?event=add method=post name=REPLIER><table> <TR><TD colspan=2><div class=remtop align=center>Задать вопрос Администратору</div></TD></TR> <TR><TD><P class=remdata>Имя</P></TD><TD><input type=text value='' maxlength=$maxname name=name size=57></TD></TR> <TR><TD><P class=remdata>E-mail</P></TD><TD><input type=text value='' maxlength=$maxname name=email size=57></td></tr> <TR><TD><P class=remdata>Тема</P></TD><TD><input type=text value='' maxlength=$maxtema name=tema size=57></td></tr> <TR><TD><P class=remdata>Сообщение</P></TD><TD> <textarea cols=57 rows=10 size=500 name=msg></textarea>";
if ($antispam==TRUE) { // если АНТИСПАМ АКТИВИРОВАН if (array_key_exists("image", $_REQUEST)) { $num=replacer($_REQUEST["image"]); for ($i=0; $i<10; $i++) {if (md5($i+$absrand)==$num) {imgwr($st,$i); die();}} } $xkey=""; mt_srand(time()+(double)microtime()*1000000); print"<TR><TD><P class=remdata>Защитный код</P></TD><TD>"; for ($i=0; $i<$maxkey; $i++) { $snum[$i]=mt_rand(0,9); $psnum=md5($snum[$i]+$absrand); $phpself=$_SERVER["PHP_SELF"]; echo "<img src=$phpself?image=$psnum border='0' alt=''>\n"; $xkey=$xkey.$snum[$i]; } $xkey=md5("$xkey+$absrand"); print"<input name='usernum' type='text' maxlength=$maxkey size=8><input name=xkey type=hidden value='$xkey'> <P class=remdata><small>(введите число, указанное на картинке)</small></P></TD></TR>"; }
print"<TR><TD colspan=2 align=center><br><input type=submit value='Отправить'></td></tr></table></form>"; }
?> [/PHP]
|
|