Seite 1 von 2

Explode um E-Mailadresse zu testen[UPDATE]

Verfasst: 08.02.2006 20:59
von witzigerkiller
Hallo Liebe Mitglieder,

ich weiß, E-Mails überprüfen, macht man mit regulären Ausdrücken, aber da ich diese nicht kann, hatte ich zuerst die e-mail mit stristr(); geprüft, auf @ und .

Aber man konnte dadurch auch nur @ und . eingeben, und schon wurde man registriert.

So, vorauf ich eigentlich hinaus will, ist das, dass es mir damit zu gefährlich war, vor spamern und allem, deshalb habe ich mich mal entschlossen, eine größere Fehlerbehebung zu machen, und habe mir dieses Script zusammengebastelt:

Code: Alles auswählen

<?PHP
// E-Mail 
$Mail = "witzigerkiller@aol.com";

if (check_mail($Mail) !== true)
{
  echo "Falsche E-Mailadresse";
}
else
{
  echo "Richtige E-Mailadresse";
}

function check_mail($mail_addy)
{
  // Mail Zerlegen
  $mail_zerlegt_at = explode("@",$mail_addy);
  $mail_zerlegt_dot = explode(".",$mail_zerlegt_at[1]);

  // Abfrage
  if (strlen($mail_zerlegt_at[0]) >= 4 && strlen($mail_zerlegt_dot[0]) >= 3 
      && strlen($mail_zerlegt_dot[1]) >= 2)
  {
    return true;
  }
  else
  {
    return false;
  }
}
?>
Nun eine kleine Erklärung:

Es wird an die Funktion die E-Mailadresse übergeben, danach wird diese durch explode geprüft, ob vor dem @ die zeichenlänge mind. 4 zeichen hat, nach dem @ mind. 3 zeichen kommen, und nach dem . müssen auch mind. 3 zeichen kommen.
Zusätlich wird durch das explode auch noch nach dem @ und . gesucht, ob es auch vorhanden ist...

Meine Frage, ist, ob ihr das Script, für den gebrauch im Netz Empfehlen könntet, ob es sicherer ist, oder ob ich noch was verbessern könnte..

Ich bedanke mich herzlich im voraus...

Verfasst: 08.02.2006 22:36
von PhilippK
Mit Google lassen sich gut und bequem hervorragende Vorlagen finden, die das über Regular Expressions lösen. Wo ist also das Problem?

Gruß, Philipp

Verfasst: 09.02.2006 09:11
von chriss713
Du hast einiges an Denkfehlern drin...deshalb empfehle ich Dir auch die google-Recherche!
Worauf Du aber achten solltest: Viele alte Regex-Ausdrücke checken nur auf Topleveldomains mit 2 oder 3 Buchstaben (.de, .com, ...) mittlerweile gibt es jedoch auch TLDs mit 4 Buchstaben (z.B. .info)

Gruß
Chriss

Verfasst: 09.02.2006 09:14
von larsneo
...und natürlich auch die idna domains nicht vergessen - nahezu alle 'klassischen' regexps (inklusive die beim phpbb) validieren umlautdomains nicht korrrekt.

Verfasst: 09.02.2006 13:48
von witzigerkiller
Ersteinmal DAnke für euere Antoworten

problem habe ich keins, wollte nur mal hören, ob das script so für nen einsatz im netz geeignet wäre...

Vllt könntet ihrs mal mit anderen e-mail addys testen, ob es bei anderen eigentlichen korrekten mails, einen fehler gibt.

Ich weiß google...Aber ich habe schon gesucht, und gefunden, und haufen seiten gelesen, doch nichts verstanden, deswegen halt so...

Soweit ich weiß, kann man e-mails irgendwie so prüfen:

Code: Alles auswählen

{A-Za-z0-9}{A-Za-z0-9}{A-Za-z0-9}{A-Za-z0-9}+@{A-Za-z0-9}{A-Za-z0-9}{A-Za-z0-9}{A-Za-z0-9}(/./){A-Za-z0-9}{A-Za-z0-9}{A-Za-z0-9}{A-Za-z0-9}
das soll dann irgendwie prüfen oderso, aber ich blick das net, mit dem klammergewirr, aber werde es nochmal nachlesen, vllt mehr damit üben und das dann benutzen...

Verfasst: 09.02.2006 13:59
von chriss713
Was ist so schwierig daran 'regex email' bei http://www.google.de einzugeben?!!!!?? :evil:

Verfasst: 09.02.2006 14:01
von witzigerkiller
ich glaube ihr versteht das nicht. ich will selber was machen, und das lernen, nichts fertiges.

Verfasst: 09.02.2006 14:24
von chriss713
Ok, dann lege ich Dir den RegEx-Coach (http://www.weitz.de/regex-coach/) ans Herz.

Tipp: Wenn Du ein Zeichen mehrmals (oder gar nicht, oder genau einmal, ...) erlauben möchtest, schau Dir mal "Quantoren" an (http://de.wikipedia.org/wiki/Regex#Quan ... olungen.29)

Verfasst: 09.02.2006 14:47
von witzigerkiller
ok, danke euch, aber ich denke ich bleibe lieber bei dem explode, es funzt bei mir zumindestens einbandfrei mit jeder mailadresse, oder könnt ihr das wiederlegen?

EDIT: Was für e-mailendungen gibts denn so? kenne nur de und com...
Das wäre sehr hilfreich zu wissen, dann kann ich mein script bisschen besser ausbauen

Verfasst: 09.02.2006 15:54
von chriss713
witzigerkiller hat geschrieben:Es wird an die Funktion die E-Mailadresse übergeben, danach wird diese durch explode geprüft, ob vor dem @ die zeichenlänge mind. 4 zeichen hat, nach dem @ mind. 3 zeichen kommen, und nach dem . müssen auch mind. 3 zeichen kommen.
- Ein Mail-Alias kann auch weniger als 4 Zeichen haben! Da hakelts bei Dir
- Eine Domain muss mind. 3 Zeichen haben, das passt also.
- Eine Liste mit TLDs findest Du hier: http://de.wikipedia.org/wiki/Top_Level_Domain