Войти

Показать полную графическую версию : обработка и отправка форм


MXM
29-01-2004, 09:34
Ситуация, вот форма: http://www.jpmotors.ru/mail.php
Вот ее скрипт: http://www.jpmotors.ru/mail.txt
Форма не отправляется. Не могу понять в чем дело. Думаю, что дело в:
if(!$frendemail) $errors.='*Отсутствует email друга!';
else
{$frendemail=eregi("^([_.0-9a-z-]+@)([0-9a-z][0-9a-z-]+.)+([a-z]{2,4})$",$frendemail);
if(!$frendemail) $errors.='*Email друга указан не верно!';}

А, в частности, в переменной $frendemail. После ее обработки eregi() результат нужно присвоить другой переменной, к примеру: $frendemailsend. При этом все работает. Но я не знаю правильно ли это? Как записать правильно проверки и при этом была отправка? Помогите, пожалйста, разобраться. А также я очень буду рад увидеть ваши комментарии и дополнения к данному скрипту... Спасибо!

Prisoner
29-01-2004, 16:11
Если нет register_globals=on в php.ini или в .htaccess (другой вид опции будет, правда), то переменные пришедшие из формы не будут доступны скрипту по тем же именам как в форме. То есть ваши проверки
if(!$yourname)
if(!$yourmail)
      .
      .
      .
всегда запишут в строку $errors соответствующее сообщение об ошибке со всеми вытекающими. Таких переменных в скрипте просто нет - механизм такой...

MXM
29-01-2004, 18:59
Вообщем, вроде всё прояснилось. Функция eregi () возвращяет логическую переменную.
Соответсвенно, $frendemail, как результат функции - это логическая переменная. А дальше всё ясно почему нет отправки формы, елси рузультат равен 1, то получаем:

mail(1,$subject,$message,$headers);

То есть, нужно просто напросто сделать так:

if(!$frendemail) $errors.='<FONT color=red><B>*</B></FONT>Отсутствует email друга!<BR>';
else
{$fm=eregi("^([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,4})$",$frendemail);
if(!$fm) $errors.='<FONT color=red><B>*</B></FONT>Email друга указан не верно!<BR>';

результат функции записывает в переменную $fm, а дальше все по контексту... Я правильно понимаю?
А, еще можно так:

if(!$frendemail) $errors.='<FONT color=red><B>*</B></FONT>Отсутствует email друга!<BR>';
else
{if(!eregi("^([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,4})$",$frendemail));
$errors.='<FONT color=red><B>*</B></FONT>Email друга указан не верно!<BR>';

Вот, пожалуй, всё. На практике не пробывал: работает или нет, но по логике вещей должно работать... Спасибо!

Prisoner
29-01-2004, 19:18
по логике вещей
за что спасибо не понятно :). Но гуд если все работает.




© OSzone.net 2001-2012