Marc Reichelt: Endergebnis & Danke

Beitrag lesen

Hallo nochmals,

vielen Dank für alle Antworten!

Meine Funktion zum Prüfen auf ungültige Zeichen sieht derzeit wie folgt aus:

function testMail($str) {  
	if (!is_string($str) || strlen($str) > 255) {  
		// variable must be a string with a max. length of 255  
		return false;  
	} else if (strpos($str, '@') === false) {  
		// there must be an @  
		return false;  
	} else {  
		// check for invalid characters  
		for ($i = 0; $i < strlen($str); $i++) {  
			$c = $str[$i];  
			$cCode = ord($c);  
			  
			if ($cCode < 32 || $cCode > 127) {  
				// control characters and non-ascii characters not allowed  
				return false;  
			}  
			  
			if (strpos('<>,; :\'"', $c) !== FALSE) {  
				// invalid characters  
				return false;  
			}  
			  
			if ($i == (strlen($str) - 1) && $c == '.') {  
				// last character should be no dot  
				return false;  
			}  
		}  
	}  
	  
	return true;  
}

Ich habe zu den anderen Zeichen noch die drei Zeichen : ' und " mit in die Liste der verbotenen Zeichen eingefügt - da diese in der Praxis kaum vorkommen.

Alles in allem zeigt auch dieser Thread, dass die Syntax von E-Mail-Adressen ziemlich kompliziert ist und aufmerksam vor Verwendung in der mail()-Funktion geprüft werden sollte.

WICHTIG (für's Archiv): Wer diese Funktion nutzt, sollte sich darüber im Klaren sein, dass dies keine Funktion ist um zu prüfen ob eine E-Mail-Adresse valide ist, sondern lediglich eine einigermaßen akzeptable Prüfung für die Verwendung in der mail()-Funktion ist.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
DPRINTK("Last time you were disconnected, how about now?");
        linux-2.6.6/drivers/net/tokenring/ibmtr.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)