Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка в регулярном выражении проверки почты
 
 автор: Nickson   (06.04.2006 в 23:17)   письмо автору
 
 

Помогите, что-то не так у меня. :(
Это скрипт отправки данных из формы по e-mail. Проверка первых трёх полей (имя, WMID, кошелёк) идёт нормально. Но при проверке правильности записи адреса e-mail возникает следующая ошибка:
<b>Warning:</b> preg_match(): Compilation failed: range out of order in character class at offset 17 in <b>f:\home\localhost\www\form.php</b> on line <b>48</b>

И даже если ввести e-mail правильно, то все равно ошибка.
Ну а вот сам скрипт:

<?
$action
=$HTTP_POST_VARS['action'];
if (!empty(
$action))
{
 if (!empty(
$name))
 {
  
$name=substr($HTTP_POST_VARS['name'],0,30);
 }
 else
 {
  require 
"form.htm";
  echo 
"<br><b><font color=red>Введите имя!</font></b>";
  exit;
 }

if (!empty(
$wmid)) {
        if (!
preg_match("/^[0-9]{12}$/",$wmid)) {
                require 
"form.htm";
                echo 
"<br><b><font color=red>WMID должен состоять 12 из цифр!</font></b>";
                exit;
        }
} else {
        require 
"form.htm";
        echo 
"<br><b><font color=red>Введите свой WMID!</font></b>";
        exit;
}

 if (!empty(
$wmz))
 {
  If (!
preg_match("/^Z[0-9]{12}$/",$wmz))
  {
   require 
"form.htm";
   echo 
"<br><b><font color=red>Ваш Z-кошелёк должен состоять из буквы Z и 12-ти цифр!</font></b>";
   exit;
  }
  
$wmz=substr($HTTP_POST_VARS['wmz'],0,13);
 }
 else
 {
  require 
"form.htm";
  echo 
"<br><b><font color=red>Введите ваш Z-кошелёк!</font></b>";
  exit;
 }


if (!empty(
$email))
{
if (!
preg_match("/[0-9a-z_]+@[0-9a-Z_^\.]+\.[a-z]{2,3}/i"$email))
{
require 
"form.htm";
echo 
'<br><b><font color=red>Введите e-mail в виде your_name@server.com</font></b>'//  Вот тут проблема!
exit;
}
}
else
{
require 
"form.htm";
echo 
'<br><b><font color=red>Введите свой e-mail!</font></b>';
exit;
}

 if (!empty(
$referer))
 {
  
$referer=trim($referer);
 }
 else
 {
  
$referer='Нет реферера';
 }

 
$name=trim($name);
 
$wmid=trim($wmid);
 
$wmz=trim($wmz);
 
$email=trim($email);
 
$msg='Заявка от пользователя: <br> Имя: ' .$name'<br> WMID: ' .$wmid'<br> WM(Z): ' .$wmz'<br> e-mail: ' .$email'<br> Referer: ' .$referer'<br>' .$comments'';

 if (
mail('homebusiness@bk.ru''Заявка'$msg))
 {
  echo (
'Ваши данные успешно отправлены!');
 }
 else
 {
  echo 
'Ошибка!';
 }
}
?>

   
 
 автор: cheops   (07.04.2006 в 00:36)   письмо автору
 
   для: Nickson   (06.04.2006 в 23:17)
 

Исправьте регулярное выражение для проверки e-mail следующим образом
"/[-0-9a-z_]+@[-0-9a-z_^\.]+\.[a-z]{2,6}/i"

   
 
 автор: Nickson   (07.04.2006 в 20:34)   письмо автору
 
   для: cheops   (07.04.2006 в 00:36)
 

Вот спасибо! Работает!
А вы не могли бы подсказать, что же всё таки означают добавленные чёрточки, - ведь в книгах такого не находил.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования