Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   обработка и отправка форм (http://forum.oszone.net/showthread.php?t=31357)

MXM 29-01-2004 09:34 214837

Ситуация, вот форма: 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 214838

Если нет register_globals=on в php.ini или в .htaccess (другой вид опции будет, правда), то переменные пришедшие из формы не будут доступны скрипту по тем же именам как в форме. То есть ваши проверки
Код:

if(!$yourname)
if(!$yourmail)
       .
       .
       .

всегда запишут в строку $errors соответствующее сообщение об ошибке со всеми вытекающими. Таких переменных в скрипте просто нет - механизм такой...

MXM 29-01-2004 18:59 214839

Вообщем, вроде всё прояснилось. Функция eregi () возвращяет логическую переменную.
Соответсвенно, $frendemail, как результат функции - это логическая переменная. А дальше всё ясно почему нет отправки формы, елси рузультат равен 1, то получаем:
[COD]
mail(1,$subject,$message,$headers);
[/COD]
То есть, нужно просто напросто сделать так:
[COD]
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>';
[/COD]
результат функции записывает в переменную $fm, а дальше все по контексту... Я правильно понимаю?
А, еще можно так:
[COD]
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>';
[/COD]
Вот, пожалуй, всё. На практике не пробЫвал: работает или нет, но по логике вещей должно работать... Спасибо!

Prisoner 29-01-2004 19:18 214840

Цитата:

Цитата MXM
по логике вещей

за что спасибо не понятно :). Но гуд если все работает.


Время: 09:56.

Время: 09:56.
© OSzone.net 2001-