[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка E-mail
Festivall
Вот, значит форма:

HTML
<form action="<?=$PHP_SELF;?>" method="POST">
<input type="text" name="mail" value="<?=$_POST['mail'];?>">
<input type="submit" name="sub" value="Проверить">


А вот и PHP код с регуляркой:
PHP
if(isset($_POST['sub']))
{
    $mail = $_POST['mail'];
    $mail = htmlspecialchars($mail);
    $mail = trim($mail);
    $pattern = "#^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$#i";
    if(preg_match($pattern, $mail))
    {
        echo "E-mail $mail верен";
    }
    else
    
{
        echo "E-mail $mail не верен";
    }
}


Я не въеду в логику: значит мы говорим, если при проверке e-mail адреса введенные данные являются любым не алфавитно цифровым, то е-майл верен, во всех остальных случаях не верен.

Или же все таки это выражение со знаком "^" в начале говорит о том, что выражение должно начинаться только с [0-9a-z_]?

Вот этот момент не пойму... ^[0-9a-z_] это же - \W ? Или оно отличается?



Спустя 32 минуты, 38 секунд (1.09.2009 - 16:12) ИНСИ написал(а):
Festivall
1. Можно просто, без точки с запятой писать: <?=$PHP_SELF?>
2. Это
PHP
$mail $_POST['mail'];
    
$mail htmlspecialchars($mail);
    
$mail trim($mail);

заменить на
PHP
if(isset($_POST['email'])) { $email mysql_real_escape_string(stripslashes(trim($_POST['email']))); }

3. Может тебе так сделать:
PHP
/* Защищаем от подделки и взламывания поля: Email */
        
if(preg_match("|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}|i"$email))

Спустя 5 минут, 56 секунд (1.09.2009 - 16:18) Festivall написал(а):
Если сделать так, как ты написал:
PHP
$email mysql_real_escape_string(stripslashes(trim($_POST['email'])));


А htmlspecialchars(); надо или она чем то из выше написанного заменяется?

Спустя 17 минут, 41 секунда (1.09.2009 - 16:36) ИНСИ написал(а):
mysql_real_escape_string
этим она заменяется =))

Спустя 59 секунд (1.09.2009 - 16:37) ИНСИ написал(а):
и еще, используй одинарные ковычки
PHP
echo 'Ошибка';

Спустя 7 минут, 32 секунды (1.09.2009 - 16:44) SunSet написал(а):
welbox2
Для чего эта переменная $PHP_SELF? .. rolleyes.gif

Спустя 8 минут, 16 секунд (1.09.2009 - 16:53) glock18 написал(а):
welbox2
Цитата
mysql_real_escape_string
этим она заменяется =))


научи еще чему-нибудь. сначала прочитай что делают эти функции.

Festivall
перед проверкой email никаких манипуляций с ним вообще не надо проводить.

было бы резонно убрать слеши при включенных magic_quotes, но в регулярке их (кавычек тоже) нет, так что ничего это не поменяет.

Цитата
Я не въеду в логику: значит мы говорим, если при проверке e-mail адреса введенные данные являются любым не алфавитно цифровым, то е-майл верен, во всех остальных случаях не верен.

Или же все таки это выражение со знаком "^" в начале говорит о том, что выражение должно начинаться только с [0-9a-z_]?


почитайте про регулярные выражения. ^ в начале выражения соответствует началу строки. $ в конце - концу.

\ - бэкслеш в регулярках, если пишешь это в пхп скрипте, надо удваивать.

\\. вместо \.

Спустя 2 минуты, 31 секунда (1.09.2009 - 16:55) glock18 написал(а):
Цитата
Для чего эта переменная $PHP_SELF? .


такой переменной нет вовсе. есть $_SERVER['PHP_SELF']. у welbox2 включена опция register_globals.

PS: опция включена и у Festivall.

welbox2
впредь проверяй свои "гипотезы" прежде чем постить здесь с "учительским тоном".

Спустя 3 часа, 41 минута, 39 секунд (1.09.2009 - 20:37) ИНСИ написал(а):
glock18 и чего сразу так ругаться? для начала:
1. Я не не сказал, что это одно и тоже и не стал разъяснять, так что читай правильно:
Цитата
этим она заменяется =))

2. Никого не учу, я лишь предлогаю другой вариант реализации.

SunSet я так понял что у него это
PHP
$PHP_SELF $_SERVER['PHP_SELF']

вот и просто вставил =))

Спустя 1 час, 32 минуты, 5 секунд (1.09.2009 - 22:09) glock18 написал(а):
я не ругаюсь. а некоторые очень даже поверят твоему уверенному тону.

Спустя 1 час, 32 минуты, 33 секунды (1.09.2009 - 23:42) SunSet написал(а):
welbox2
Я тут вообще не в теме ваших баталий со своими "мега" знаниями)) А про 'PHP_SELF' ... в гугле просто однозначного ответа по этой переменной не нашел, потому поинтерисовался. unsure.gif

Спустя 17 часов, 31 минута, 2 секунды (2.09.2009 - 17:13) Festivall написал(а):
$PHP_SELF - это переменная окружения, которая возвращает адрес текущей страницы. Либо полный либо не полный. Не помню, но скорее всего, к примеру index.php или какая будет. Можете вот так проверить:

PHP
echo $PHP_SELF;


Её надо врубать в .ini

Спустя 58 минут, 59 секунд (2.09.2009 - 18:12) Gabriel написал(а):
PHP
eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$"$mail)

а че такого плана регуляки для проверки мейла на правильность некатят?

Спустя 37 минут, 12 секунд (2.09.2009 - 18:49) glock18 написал(а):
Цитата
а че такого плана регуляки для проверки мейла на правильность некатят?

зачем такая? гораздо больше. плюс, домен еще перебирает. на самом деле, проверка email на валидность фактически может быть полной профанацией, поскольку любой e-mail проверяется на существование активационным письмом. Если регулярку правильную охота, то{3}:

http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Спустя 1 час, 29 минут, 5 секунд (2.09.2009 - 20:18) Gabriel написал(а):
омг скоко слешегоФ rolleyes.gif
чет я в таком ничаго непонимаю

Спустя 10 часов, 55 минут, 6 секунд (3.09.2009 - 07:13) glock18 написал(а):
Цитата
чет я в таком ничаго непонимаю


я тоже smile.gif эта регулярка для того, чтобы понимали, что дурью маюцца, пока придумывают рабочие регулярки для проверки email. самая правильная проверка - активационное письмо. регулярка только подстраховка.

Спустя 4 часа, 3 минуты, 37 секунд (3.09.2009 - 11:17) Gabriel написал(а):
glock18
+500

Спустя 39 минут, 31 секунда (3.09.2009 - 11:56) ИНСИ написал(а):
Gabriel не только ты не понимаешь, но и я =))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.