argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: E-mail валидация ? как я правите ? сами с Regular Expresion ?: )  (Прочетена 4829 пъти)

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

Едно време имаше подобна тема
лично въпроса ми се подбуди от този блог
http://www.santosj.name/programming/php-related/php/stop-doing-email-validation-the-wrong-way/
мисля че наистина повечето отговори на въпросите който той е дал са ДА :) и както казва СПРЕТЕ да го правите.
:)
лично регулярния израз дето ползвам който явно е НАПЪЛНО грешен е :
^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$
Активен

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209

Хаха значи го правя вярно :)
От тези въпроси само дето знам какво е RFC и то ми отне доста време да се сетя. Regex-а идва от менюто на студиото. Сега за първи път се загледах с него и е ето това:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu

Иван Йорданов

  • Неактивен Неактивен
  • Публикации: 175

Аз пък не правя проверка :)
Вижда ми се излишно да натоварвам сървъра с един регулярен израз повече.
Направо пращам маил. Ако не ми потвърди регистрацията до 1 ден трия акаунта
Естествено преди да вкарам майла в базата проверявм за разни инжекций.
Активен
Иван Йорданов
Поздрави от
         The Bash Master Club

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

само флуудиш сървъра с ненужни глупости да праща майлове а й така не предпазваш потребителите от самите тях...
дано не си замесен в оня сайт zamunda.bg ли кво беше за торенти че там регистрацията е нещо ужасно и надушвам някой с подобни на твоите наклонности
Активен

Иван Йорданов

  • Неактивен Неактивен
  • Публикации: 175

Не съм замесен :)
въобще не работя за БГ.

Просто си искам валидация на майла от човека. Все пак се очаква тоя майл който ми дава да го ползвам за нещо.
Например да му изпратя фактура
Активен
Иван Йорданов
Поздрави от
         The Bash Master Club

Sayos

  • Неактивен Неактивен
  • Публикации: 1366
  • The Dark side

Да смачкаме гадните торенти!
Активен

TeeRexX

  • Неактивен Неактивен
  • Публикации: 739
  • изпратете ми анонимно пари в плик :)
    • www.myspace.com/teerexx

Хаха значи го правя вярно :)
От тези въпроси само дето знам какво е RFC и то ми отне доста време да се сетя. Regex-а идва от менюто на студиото. Сега за първи път се загледах с него и е ето това:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Тоя експрешън май не е най-перфектния който може да съществува - веднъж беше "пропуснал" през себе си адрес, който когато по-късно конструирах от него класа System.Net.MailAddress хвърли exception, че не е валиден.
Между другото за .netаджиите това е начин да се проверява валидността - пробваш да конструираш обект от класа System.Net.MailAddress и ако не хвърли exception значи всичко е ОК.
Активен

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209

Е то ако е работата да сме "съвсем точни" всички сме виждали оня Regex за майл дето е на 2 екрана и е по RFC
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu

Иван Йорданов

  • Неактивен Неактивен
  • Публикации: 175

Да смачкаме гадните торенти!

Точно така до преди 3 месеца ги защитавахме сега да ги мачкаме  :sun:

Хаха значи го правя вярно :)
От тези въпроси само дето знам какво е RFC и то ми отне доста време да се сетя. Regex-а идва от менюто на студиото. Сега за първи път се загледах с него и е ето това:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Тоя експрешън май не е най-перфектния който може да съществува - веднъж беше "пропуснал" през себе си адрес, който когато по-късно конструирах от него класа System.Net.MailAddress хвърли exception, че не е валиден.
Между другото за .netаджиите това е начин да се проверява валидността - пробваш да конструираш обект от класа System.Net.MailAddress и ако не хвърли exception значи всичко е ОК.

Наистина не е правилен регулярния израз.

може да пусне адрес от рода на 123@example.com. Идеята е че един mail НЕ може да започва с цифра (до колкото си спомням RFC) а може да има и други пропуски, но това се вижда на пръв поглед.
Пропускането се отнася специално за PHP където "\w" означава "any word character", а цифрите влизат в това число според PHP.
В Пърл мисля че не е така.
Активен
Иван Йорданов
Поздрави от
         The Bash Master Club

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209

Ми не е верен много ясно. Верния е 2 екрана нали това ви се казва. Даже на онзи блог пише да се осъзнаете, че няма смисъл да се мъчите да го докарате по RFC.

P.S. В .NET \w включва цифри
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

моя не почва с \w
май като гледам сам изпуснал един + начи
^[a-zA-Z][\w\.-+]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$

невярвам да може да завърши на +@assasa нали :)
Активен

javahaterphplover

  • Неактивен Неактивен
  • Публикации: 26

Да смачкаме гадните торенти!

Да бе, ама ти се регистрираш в тях нали:

http://plovdivtorrents.com/userdetails.php?id=4346  :-D :-D :-D


Btw, ако трябва да сме педантични, освен на сървърно ниво, може и чрез Javascript преди това да проверяваме:

.......
.......
var reg=/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;
var textval = document.form1.text1.value; var result = reg.test(textval);if(!result) alert("no match, cannot cantinue"); else alert("Match")
......
......
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

ами глупости това на нормалните framework-ове се генерира само да няма да го пиша кат гламав php-аджия :)
Активен

Sayos

  • Неактивен Неактивен
  • Публикации: 1366
  • The Dark side

javahaterphplover, точно този тракер ме отказа от торентите, я като си тръгнал дай ми линк към форума на free zone?
Активен

javahaterphplover

  • Неактивен Неактивен
  • Публикации: 26

ами глупости това на нормалните framework-ове се генерира само да няма да го пиша кат гламав php-аджия :)

еми в някои го има, ама ако ги ползваш, защо тогава си пуснал темата  :hihi: :hihi: :hihi:
Активен

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209

Да то си личи, че е гузен. Аз примерно не пасвах на никое от условията посочени в статията (освен, че знаех какво е RFC) и изобщо нямаше да ми хрумне да занимавам хората с нея, но явно някой е отговарял смело с "да" :)
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

ами глупости това на нормалните framework-ове се генерира само да няма да го пиша кат гламав php-аджия :)

еми в някои го има, ама ако ги ползваш, защо тогава си пуснал темата  :hihi: :hihi: :hihi:
Мноу си зле ;)
обяаснявам веднъж
Struts :
избираш си да кажем Regular Expression валидатор
пишеш израза
пишеш кой е мессаге-а за грешка

и той ти генерира както Check на сървърната страна при събмит така и JavaScripta за клиент сайд
имах предвид че генерира JScript за check на regex а не че има Email Validator
Активен

javahaterphplover

  • Неактивен Неактивен
  • Публикации: 26

E-mail валидация ? как я правите ? сами с Regular Expresion ?

Това е заглавието на темата, след последния ти пост, сам реши кой е зле  :D

Нали искаш да знаеш кой как я прави, ако искаш да спорим относно кой начин е по-добър, пусни друга тема!!!

Друго, сравни:

това:

1. избираш си да кажем Regular Expression валидатор
2. пишеш израза
3. пишеш кой е мессаге-а за грешка

4.и той ти генерира както Check на сървърната страна при събмит така и JavaScripta за клиент сайд

с това:

1.
var reg=/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;
var textval = document.form1.text1.value; var result = reg.test(textval);if(!result) alert("no match, cannot cantinue"); else alert("Match")

 :no:
« Последна редакция: 10.08.2007, 01:24:17 от javahaterphplover »
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

E-mail валидация ? как я правите ? сами с Regular Expresion ?

Това е заглавието на темата, след последния ти пост, сам реши кой е зле  :D

Нали искаш да знаеш кой как я прави, ако искаш да спорим относно кой начин е по-добър, пусни друга тема!!!

Друго, сравни:

това:

1. избираш си да кажем Regular Expression валидатор
2. пишеш израза
3. пишеш кой е мессаге-а за грешка

4.и той ти генерира както Check на сървърната страна при събмит така и JavaScripta за клиент сайд

с това:

1.
var reg=/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;
var textval = document.form1.text1.value; var result = reg.test(textval);if(!result) alert("no match, cannot cantinue"); else alert("Match")

 :no:

Всъщност не си показал как да се взимат съобщенията от ресурсен файл :) тва MATCH е много добро ! :)
хаха отделно супер лесно е за поддръжка мале добре че никой не пише на php
за сравнение на струтс :
<field
    property="emailAddress"
    depends="required,mask">
    <msg
        name="mask"
        key="registrationForm.email.maskmsg"/>
    <arg0 key="registrationForm.email.displayname"/>
    <var>
        <var-name>mask</var-name>
<var-value>^[a-zA-Z][\w\.-+]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$</var-value>
    </var>
</field>

като за всяко поле с copy пасте в XML файл се сменя името на property + 2ta key-а
Активен

NeshtoSeSluchi

  • Неактивен Неактивен
  • Публикации: 209

Отварям си дизайнера. Drag&drop RegularExpressionValidator - пиша му там някакви съобщения ако искам ако не оставям тези дето са по подразбиране. Избирам му кой контрол да валидира. Избирам си от менюто E-mail валидация (през това време виждаме, че са ни направили 20тина други полезни неща като URL,  френски/немски/американски телефонен номер и прочие) и сме готови. Програмирането трябва да е само с мишка.
Активен
Форум на свободата в ПУ: http://smfc.xaxa.eu