Проблема с формой обратной связи.

  • Автор темы passwd
  • Дата начала
P

passwd

#1
Прошу прощения за столь нелепый вопрос, но проблема вот в чем...
Имеется такой код обратной связи:

PHP:
$myemail="wwwmail@gmx.com"; // Ваш электронный адрес
$refreshpage="index-3.php"; // Страница, куда возвращается человек после отправки сообщения
$antispam="0"; // 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>return <a href='java script:history.back(1)'><B>back</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 (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>You are enter incorrect Security code</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 You have not entered name!");} else {$name=replacer($_POST['name']);}
if (!isset($_POST['email'])) {exit("$shapka $back You have not entered the mail!");} else {$email=replacer($_POST['email']);}
if (!isset($_POST['tema'])) {exit("$shapka $back You have not entered the icq!");} else {$tema=replacer($_POST['tema']);}
if (!isset($_POST['msg'])) {exit("$shapka $back You have not entered What I want!");} else {$msg=replacer($_POST['msg']);}

// Если тема обязательна, разкоментируйте строчку ниже
if ($tema=="" || strlen($tema)>$maxtema) {exit("$shapka $back You have not entered the icq!</B></center>");}

if ($name=="" || strlen($name)>$maxname) {exit("$shapka $back You have not entered or have entered is too long name!</B></center>");}
if ($msg=="" || strlen($msg)>$maxmsg) {exit("$shapka $back Your What I want is empty or more than $maxmsg characters..</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 and enter correct E-mail adress!</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>Message from site \"<a href='$smailurl'>$smailurl</a>\"</div></TD></TR>
<TR><TD class=pismo><P class=remdata>Name</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>icq</P></TD><TD class=pismo2><B>$tema<B></td></tr>
<TR><TD class=pismo><P class=remdata>Date of sending:</P></TD><TD class=pismo2>$date ã. â $time</td></tr>
<TR><TD class=pismo><P class=remdata>What I want</P></TD><TD class=pismo2>$msg</td></tr>
</table>";

$printmsg="$allmsg 
<center><BR>Your message <B><font color=navy>successfully sent</font></B><BR><BR>
<a href='$refreshpage'>Âåðíóòüñÿ <B>back</B></a>

</body></html>";
$allmsg.="<BR><BR><BR>* From site! Yahoo! You will have money =).</body></html>";

// Отправляем письмо майлеру на съедение;-)
mail("$myemail", "Yahoo! You will have money from $name", $allmsg, $headers);

// Пишем пользователю "Спасибо" и обновляем страницу через JavaScript
print "<script language='Javascript'>function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 3000);</script>$printmsg"; exit;


} else {  // Типо главной страницы



print "$shapka
<center>
<form action=order.php?event=add method=post name=REPLIER><table>
<TR><TD colspan=2><div class=remtop align=center>123123</div></TD></TR>
<TR><TD><P class=remdata>Name</P></TD><TD><input type=text value='Bill Gates' maxlength=$maxname name=name size=57></TD></TR>
<TR><TD><P class=remdata>E-mail</P></TD><TD><input type=text value='your@mail.com' maxlength=$maxname name=email size=57></td></tr>
<TR><TD><P class=remdata>icq:(or other messenger)</P></TD><TD><input type=text value='icq:123456789; skype:your-skype; etc... or (only mail)' maxlength=$maxtema name=tema size=57></td></tr>
<TR><TD><P class=remdata>What I want</P></TD><TD>
<textarea cols=57 rows=10 size=250 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>Security code</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=$ self?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>(enter the number, on picture)</small></P></TD></TR>";
}

print"<TR><TD colspan=2 align=center><br><input type=submit value='Send'></td></tr></table></form>";
}

?>

<BR><center><small>We will answer you within a day</a><br></small></body></html>
Так вот... в этом виде скрипт работает отлично, НО как только я пытаюсь добавить новую строчку в форму, заполненная в той строчке информация автоматически становиться темой письма, а в самом письме в этой строчке пусто, хоть она и заполнялась.

К примеру: " Я добавил поле под названием (Телефон), вписываю номер телефона, отсылаю, и когда на меил приходит письмо от этой формы- поле (телефон) пустое, а сам номер вписан в теме сообщения."

Как я добавлял новое поле: "Просто добавил такие строчки здесь..."
PHP:
// обрабатываем REPLACER'ом все данные
if (!isset($_POST['name'])) {exit("$shapka $back You have not entered name!");} else {$name=replacer($_POST['name']);}
if (!isset($_POST['phone'])) {exit("$shapka $back You have not entered Telephone!");} else {$name=replacer($_POST['phone']);}
if (!isset($_POST['email'])) {exit("$shapka $back You have not entered the mail!");} else {$email=replacer($_POST['email']);}
if (!isset($_POST['tema'])) {exit("$shapka $back You have not entered the icq!");} else {$tema=replacer($_POST['tema']);}
if (!isset($_POST['msg'])) {exit("$shapka $back You have not entered What I want!");} else {$msg=replacer($_POST['msg']);}
здесь...

PHP:
// Собираем всю информацию в теле письма
$allmsg="$shapka
<center>
<table cellpadding=5 cellspacing=0>
<TR><TD colspan=2><div class=remtop align=center>Message from site \"<a href='$smailurl'>$smailurl</a>\"</div></TD></TR>
<TR><TD class=pismo><P class=remdata>Name</P></TD><TD class=pismo2><B>$name<B></TD></TR>
<TR><TD class=pismo><P class=remdata>Telephone</P></TD><TD class=pismo2><B>$phone<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>icq</P></TD><TD class=pismo2><B>$tema<B></td></tr>
<TR><TD class=pismo><P class=remdata>Date of sending:</P></TD><TD class=pismo2>$date ã. â $time</td></tr>
<TR><TD class=pismo><P class=remdata>What I want</P></TD><TD class=pismo2>$msg</td></tr>
</table>";
и здесь...

PHP:
print "$shapka
<center>
<form action=order.php?event=add method=post name=REPLIER><table>
<TR><TD colspan=2><div class=remtop align=center>Booking Request:</div></TD></TR>
<TR><TD><P class=remdata>Name</P></TD><TD><input type=text value='Bill Gates' maxlength=$maxname name=name size=57></TD></TR>
<TR><TD><P class=remdata>Telephone</P></TD><TD><input type=text value='8033322211' maxlength=$maxname name=phone size=57></TD></TR>
<TR><TD><P class=remdata>E-mail</P></TD><TD><input type=text value='your@mail.com' maxlength=$maxname name=email size=57></td></tr>
<TR><TD><P class=remdata>icq:(or other messenger)</P></TD><TD><input type=text value='icq:123456789; skype:your-skype; etc... or (only mail)' maxlength=$maxtema name=tema size=57></td></tr>
<TR><TD><P class=remdata>What I want</P></TD><TD>
<textarea cols=57 rows=10 size=250 name=msg></textarea>";
Подскажите пожалуйста, как добавить в эту форму несколько новых строчек. Спасибо! =)
 
P

passwd

#2
В смысле??
Та тут ничего сложного нет. Я уверен! Просто, что-то никак не дойдет до меня... ;)
 
P

passwd

#3
Та ладно)) Тем более там разными цветами выделяет ;)
 
P

passwd

#4
Итак...
Имеется форма.
PHP:
print "$shapka
<center>
<form action=order.php?event=add method=post name=REPLIER><table>
<TR><TD colspan=2><div class=remtop align=center>Booking Request:</div></TD></TR>
<TR><TD><P class=remdata>Name</P></TD><TD><input type=text value='Bill Gates' maxlength=$maxname name=name size=57></TD></TR>
<TR><TD><P class=remdata>E-mail</P></TD><TD><input type=text value='your@mail.com' maxlength=$maxname name=email size=57></td></tr>
<TR><TD><P class=remdata>Booking Date:</P></TD><TD><input type=text maxlength=$maxtema name=tema size=57></td></tr>
<TR><TD><P class=remdata>Comment</P></TD><TD>
<textarea cols=57 rows=10 size=250 name=msg></textarea>";
В неё хочу добавить еще одну строку. Чтобы пользователи могли оставлять телефон...

Но как я понял эту строку нужно добавлять в двух местах. Так как после отправки запроса, пользователю показывает результат. Вот этот скрипт в действии: http://lee-lida.zxq.net/mail/order.php
Правда на том сервере покажет ошибку, но всё же ответит... Слать можно сколько угодно, всё равно емейл несуществующий вписал...

Что я изменил? А именно вот эти фрагменты:
PHP:
print "$shapka
<center>
<form action=order.php?event=add method=post name=REPLIER><table>
<TR><TD colspan=2><div class=remtop align=center>Booking Request:</div></TD></TR>
<TR><TD><P class=remdata>Name</P></TD><TD><input type=text value='Bill Gates' maxlength=$maxname name=name size=57></TD></TR>
<TR><TD><P class=remdata>E-mail</P></TD><TD><input type=text value='your@mail.com' maxlength=$maxname name=email size=57></td></tr>
<TR><TD><P class=remdata>Booking Date:</P></TD><TD><input type=text maxlength=$maxtema name=tema size=57></td></tr>
<TR><TD><P class=remdata>Name1</P></TD><TD><input type=text value='Bill Gates1' maxlength=$maxname name=name1 size=57></TD></TR>
<TR><TD><P class=remdata>Name2</P></TD><TD><input type=text value='Bill Gates2' maxlength=$maxname name=name2 size=57></TD></TR>
<TR><TD><P class=remdata>Comment</P></TD><TD>
<textarea cols=57 rows=10 size=250 name=msg></textarea>";
и второй кусок:
PHP:
<center>
<table cellpadding=5 cellspacing=0>
<TR><TD colspan=2><div class=remtop align=center>Message from site \"<a href='$smailurl'>$smailurl</a>\"</div></TD></TR>
<TR><TD class=pismo><P class=remdata>Name</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>Booking Date:</P></TD><TD class=pismo2><B>$tema<B></td></tr>
<TR><TD class=pismo><P class=remdata>Date of sending:</P></TD><TD class=pismo2>$date ã. â $time</td></tr>
<TR><TD class=pismo><P class=remdata>Name1</P></TD><TD class=pismo2><B>$name1<B></TD></TR>
<TR><TD class=pismo><P class=remdata>Name2</P></TD><TD class=pismo2><B>$name2<B></TD></TR>
<TR><TD class=pismo><P class=remdata>What I want</P></TD><TD class=pismo2>$msg</td></tr>
</table>";
Соответственно Name1 и Name2 это те добавленные строки.
 
P

passwd

#5
УУУУРРРРАААААААААА!!!!!!!!!!!!!!!!!!!!!!!! РЕШШШИИИЛЛЛЛЛЛ!!!!!!!!!!
Ну наконецто))

sax_ol СПАСИБО большое, что хотел помочь, но я сам нашел где затупил))

Просто в третьем фрагменте в котором нужно было добавлять строчки я не заметил параметра...
PHP:
// обрабатываем REPLACER'ом все данные
if (!isset($_POST['name'])) {exit("$shapka $back You have not entered name!");} else {$name=replacer($_POST['name']);}
if (!isset($_POST['email'])) {exit("$shapka $back You have not entered the mail!");} else {$email=replacer($_POST['email']);}
if (!isset($_POST['tema'])) {exit("$shapka $back You have not entered the Booking Date:");} else {$tema=replacer($_POST['tema']);}
if (!isset($_POST['name1'])) {exit("$shapka $back You have not entered name1!");} else {$name1=replacer($_POST['name1']);}
if (!isset($_POST['name2'])) {exit("$shapka $back You have not entered name2!");} else {$name2=replacer($_POST['name2']);}
if (!isset($_POST['msg'])) {exit("$shapka $back You have not entered What I want!");} else {$msg=replacer($_POST['msg']);}
$name2=replacer и $name1=replacer!!!!!!! Здесь не узрел...

Всё! Темя закрыта! sax_ol спасибо!