Warum ungültige E-Mail-Adresse?

Schumiel

Erfahrenes Mitglied
Hallo,

folgend die E-Mail-Funktion:
PHP:
function check_email($email, $tdl_check = 1)
{
  // Die Überprüfung auf Zusatszeichen ist für die de-Domain optmiert und wird bei de Domains verwendet!!
  // $tdl_check = 1 -> Es werden alle gültigen TLD überprüft
  // $tdl_check = 0 -> Es wird sind eingetragene TLD gültig
	
  // Die Liste der TLD kann erweitert werden, einfach weitere anfügen immer mit einem | dazwischen
  $tld = ($tdl_check == 1) ? '([a-zA-Z]{2,4})' : 'de|com|org|biz|info|net|eu|at|ch|nl';
	
  // Sonderzeichen
  $tld_s_zeichen = preg_match('/\.de$/isU', $email) ? 'áàâåäãæcçéèêëíìîïñóòoôöoõøoúùûüuýyÿzðþß' : '';
			
  // Allgemeine Überprüfung auf Format, Zeichenlänge und TLD
  $pattern[0] = '/^[_a-z0-9]+(\.[_a-z0-9-]+)*@[_a-z0-9-'. $tld_s_zeichen .']{3,63}+(\.[_a-z0-9-'. $tld_s_zeichen .']{3,63}+)*\.'. $tld .'$/isU';
	
  // Überprüfung auf min. ein Buchstabe
  $pattern[1] = '/@(.*[a-z'. $tld_s_zeichen .']+.*)(\..*[a-z'. $tld_s_zeichen .']+.*)*\.'. $tld .'$/isU';
	
  return (!preg_match($pattern[0], $email) || !preg_match($pattern[1], $email)) ? false : true;
}
if(!check_email($email))
{
 $ret.=$anf.'Sie haben keine gültige E-Mail-Adresse angegeben.'.$end;
}
Leider wird eine ganz normale E-Mail-Adresse (z.B. test@gmx.de) als ungültige E-Mail-Adresse ausgegeben.
Wieso?
 
Zuletzt bearbeitet:
Kann ich leider nicht reproduzieren.

PHP:
if(check_email("test@example.de"))
	echo 'OK';
else
	echo 'Nicht OK';

Liefert "OK", auch für deine Beispieladresse, welche du aber aus dem Forum entfernen solltest, sofern du nicht noch mehr Spam möchtest.
Du hast also irgendwo sonst einen Fehler. Wo wird z.B. die Variable "$email" gefüllt, welche als Parameter übergeben wird?
 
CPoly, ich nutze das bei der Registrierung und da bekomme von den Registrierungswilligen Mails, dass ihre E-Mail ungültig sei.
 

Neue Beiträge

Zurück