login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Eregi voor e-mail

Offline Dark_Paul - 27/03/2007 22:07
Avatar van Dark_PaulPHP ver gevorderde He,

Ik loop even vast met deze eregi. Ik ben nooit een held geweest in (moeilijkere) reg-exes.
Het gaat hier om een reg-ex voor een e-mailadres.
Mijn bedoeling is om te controleren op 4-20tekens (a-z, 0-9, '.', '-' en '_') vóór het '@'-teken, een '@'-teken.
Na de @ een tekenreeks van (a-z, 0-9, '.' en '-'), dan weer een punt (.) en daarna een reeks van (a-z en '.') van lengte 2-5.
Deze regel heb ik daar nu voor:
  1. eregi("^([a-z0-9\.\-_]){2,20)@([a-z0-9\.\-])+\.([a-z\.]){2,5}$", $email)

Maar ik krijg een error:
Warning: eregi() [function.eregi]: REG_BADBR in C:\apache\www\tcb\includes\functions.inc.php on line 55
en ik kan niet vinden waarom.. (misschien omdat ik te moe ben..)

6 antwoorden

Gesponsorde links
Offline vinTage - 27/03/2007 22:11 (laatste wijziging 27/03/2007 22:30)
Avatar van vinTage Nieuw lid Geen idee ik ben een regex lul, maar als je dan toch bezig bent een mooie regex te maken, een email kan maar 255 karaters bevatten (dacht ik toch) dus dat dan ook nog even inbakken )
Offline phpfreak - 27/03/2007 22:44
Avatar van phpfreak PHP beginner Ik snap niet veel van regexes maar dit zou je moeten zien, de eerste {2,20} word afgesloten met ene ) niet met een }, zoals zou moeten..
  1. eregi("^([a-z0-9\.\-_]){2,20}@([a-z0-9\.\-])+\.([a-z\.]){2,5}$", $email)

moet het zijn
Offline Ibrahim - 28/03/2007 07:54
Avatar van Ibrahim PHP expert http://www.site...mp;id=1230
Offline Dark_Paul - 28/03/2007 09:07 (laatste wijziging 03/04/2007 08:39)
Avatar van Dark_Paul PHP ver gevorderde @vinTage
Bedankt voor de tip! Dat gaan we indedaad dus ff inbakken.
@phpfreak
Daar ik heb ik dus totaal overheen gekeken, ik verwacht dat dat ook de fout is..
@siliecom14
Bedankt voor het script! Daar staat wat handige informatie in!
Ik ga die reg-ex uit het script niet gebruiken. Ik ga hem zelf schrijven (op basis van de gegeven info) omdat ik beter wil worden met reg-exes.

Edit:
Deze regel gebruik ik nu, maar er komt geeneen adres doorheen (ik gebruik eregi()).
  1. ^(([a-z]{1}[a-z0-9\-_\.]){2,20}@([a-z\-]){3,}\.([a-z\.]){2,6}){0,255}$


Edit
Ik gebruik nu de regel van siliecom14, enigzins aangepast.
  1. ^([a-z]{1}[a-z0-9\-_]+(\.[a-z0-9\-_]+)*@[a-z0-9\-_]+\.[a-z]{2,6}){0,255}$

Toch komen mijn e-mailadressen niet door.
Mijn volledige e-mailfunctie:
  1. <?php
  2. function emailcheck($email) {
  3. $ret = true;
  4. if (eregi("^([a-z]{1}[a-z0-9\-_]+(\.[a-z0-9\-_]+)*@[a-z0-9\-_]+\.[a-z]{2,6}){0,255}$", $email) === TRUE) {
  5. list($local, $host) = explode('@', $email);
  6. if (checkdnsrr('http://www.'.$host, ANY) === FALSE) {
  7. print 'foute host';
  8. $ret = false;
  9. }
  10. }
  11. else {
  12. print 'foute shizzle';
  13. $ret = false;
  14. }
  15. return $ret;
  16. }

Ik krijg steeds 'foute shizzle' te zien..

Door 'if (eregi(..) === TRUE)' te vervangen door 'if (eregi(..) !== FALSE) werkt het wel, alleen nog problemen met de functie checkdnsrr();
Blijkbaar is deze functie niet standaard aanwezig. Heeft iemand een alternatief voor deze functie, om te kijken of een hostnaam bestaat. Eventueel een ping uitvoeren ofzo.
Op PHP.net staat wel een commentaar met een exex(); regel, maar daar snap ik vrij weinig van.

Edit 2:
Ik heb die checkdnsrr() opgelost door er gethostbynamel() van te maken. Ik wilde namelijk een functie die FALSE teruggaf bij een ongeldige host.
Maar nu komen mijn e-mailadressen nog steeds niet door de eregi heen.
  1. <?php
  2. if (eregi("^([a-z]{1}[a-z0-9\-_]+(\.[a-z0-9\-_]+)*@[a-z0-9\-_]+\.[a-z]{2,6}){0,255}$", $email) !== FALSE) {
  3. // check host
  4. }
Offline Ibrahim - 03/04/2007 08:38
Avatar van Ibrahim PHP expert Waarom zou je kijken of de host bestaat ? Als iemand een foute email adres geeft, zal hij bij mij ook geen toegang krijgen, want hij moet zich nog activeren 
Offline Dark_Paul - 03/04/2007 08:41
Avatar van Dark_Paul PHP ver gevorderde @siliecom14
Heb je gelijk in, je bij mij ook activeren met dat e-mailadres. Maar op deze manier hou je mensen die constant met onzin adressen gaan registreren deels buiten de deur.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.229s