Formular Prüfen auf Emailadresse

LexusTheSecond

Mitglied
Hi.
Ich habe die suche schon benutzt aber nichts passendes gefunden.
Also. Ich habe eine Startseite in PHP. Dort gibt es ein Formular wodrin man seine Emailadresse eingeben muss (für den Newsletter) und dann auf Abschicken (Absenden) Button klickt. Klappt alles einsa, die Adresse wird in die Datenbank eingetragen und es wird auch kontrolliert ob nicht die Adresse eingetragen ist.
Jetzt wollte ich dass man nicht irgendein ,,Mist" reinschreiben kann.
Also bräuchte ich einen kurzen Code (kann ein ganz einfacher sein) der überprüft ob ein @ und ein . in der Eingabe vorhanden ist. Wenn nein soll er den User darauf aufmerksam machen (Also mit Echo das könnte ich aber auch selbst :) ).
 
Danke für deine Schnelle Antwort, aber das funtzt leider nicht mir meinen Formular weiss leider nicht warum, es erscheint aber auch keine Fehlermeldung.
 
Versuchs mal damit:
Code:
function verifyemail($email)
{
  if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email, $check))
    return TRUE;
  else
    return FALSE;
}

//Absender-Emailadresse prüfen - "EMail" ist dabei der Name vom E-Mail <input>
if($_REQUEST_ENTL[EMail])
  if(verifyemail($_REQUEST_ENTL[EMail]) != TRUE)
    $error[] = "Ihre E-Mailadresse <b>$_REQUEST_ENTL[Email]</b> ist ungültig.";

redlama
 
LexusTheSecond hat gesagt.:
Danke für deine Schnelle Antwort, aber das funtzt leider nicht mir meinen Formular weiss leider nicht warum, es erscheint aber auch keine Fehlermeldung.


Es funktioniert nicht .. nicht es funtzt nicht.

Bitte bitte .. mein Gehirn leidet so unter diesem Wort.
 
Könnte man nicht in das Board einen BBCode einbauen, der dieses und viele andere böse Wörter automatisch in die Duden-Konformen Übersetzungen umwandelt? ;)
 
Hi,

ich habe irgendwo mal ein OpenSource-Script gefunden womit man in 3 Stufen eine e-Mail prüfen kann. Da jetzt hier zufällig dieses Thread eröffnet wurde wollte ich ganz gerne mal Fragen ob mir jemand helfen könnte. Ich habe nämlich immer noch das Problem das ich "function" sehr kompliziert finde. Ich weiß absolut nicht wie ich die "function" vernüftig ausgeben lassen kann.

Ich möchte den Code genau so haben wie auf der Seite wo es den Code gibt.
www.ljweb.com
Ich habe der Person schon eine eMail geschrieben, aber da mein English so schlecht ist, habe ich das Gefühl als wenn er mich nicht verstanden hätte.
Das Script heißt: verifyemail_lib.php Direcktlink

Hier erst einmal der Code:
PHP:
function verifyemail_validateemail($email) {
		if (!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", $email)) {
			return false;
			exit;
		}

		return true;
	}


	function verifyemail_validatehost($email, $return_mxhost=0) {
		if (!verifyemail_validateemail($email)) {
			return false;
			exit;
		}

		list($local,$domain) = explode("@",$email,2);

		$mxhosts = array();
		if(!checkdnsrr($domain, "MX") || !getmxrr($domain, $mxhosts)) {
			return false;
			exit;
		}

		if ($return_mxhost) {
			return $mxhosts;
			exit;
		}

		return true;
	}


	function verifyemail_validateexists($email) {
		$mxhosts = verifyemail_validatehost($email, true);

		if (!is_array($mxhosts)) {
			return false;
			exit;
		}

		$found = false;
		$localhost = verifyemail_localhost();

		$mxsize = sizeof($mxhosts);
		for($i=0; $i<$mxsize; $i++)	{
			$socket = fsockopen($mxhosts[$i], 25);

			if(!$socket) continue;

			$foo = fgets($socket, 4096);

			# 220 <domain> Service ready
			if(!preg_match("/^220/i", $foo)) {
				verifyemail_closesocket($socket);
				continue;
			}

			fputs($socket, "HELO ".$localhost."\r\n");
			$foo = fgets($socket);
			while (preg_match("/^220/i", $foo)) {
				$foo = fgets($socket, 4096);
			}

			fputs($socket, "VRFY ".$email."\r\n");
			$foo = fgets($socket, 4096);

			# 250 Requested mail action okay, completed
			if(preg_match("/^250/i", $foo)) {
				$found = true;
				verifyemail_closesocket($socket);

				break;
			}

			# 550 Requested action not taken: mailbox unavailable [E.g., mailbox not found, no access]
			if(preg_match("/^550/i", $foo)) {
				verifyemail_closesocket($socket);
				continue;
			}

			fputs($socket, "MAIL FROM: <".$email.">\r\n");
			$foo = fgets($socket, 4096);

			fputs($socket, "RCPT TO: <".$email.">\r\n");
			$foo = fgets($socket, 4096);

			# 250 Requested mail action okay, completed
			# 251 User not local; will forward to <forward-path>
			if(preg_match("/^[250|251]/i", $foo)) {
				$found = true;
				verifyemail_closesocket($socket);

				break;
			}

			verifyemail_closesocket($socket);
		}

		return $found;
	}


	function verifyemail_closesocket($socket) {
		fputs($socket, "QUIT\r\n");
		fclose($socket);

		return true;
	}


	function verifyemail_localhost() {
		$localhost = getenv("SERVER_NAME");
		if (!strlen($localhost)) $localhost = getenv("HOST");

		return $localhost;
	}
?>


Dann habe ich eine Frage. Auf der Seite steht ja folgendes:
Notice :
Level 2 and 3 checking uses UNIX specific commands

Kann ich das auch auf einen ApacheServer ausführen lassen?
Ich könnte es ja noch nicht testen, da ich ja nicht weiß wie man die "function" ausführt.

Vielleicht hilft mir ja jemand, der sich damit auskennt.
Und vielleicht findet ja jemand dieses Script auch interessant und kann es gebrauchen.

Gruss
Dj_PD
 
redlama hat gesagt.:
Versuchs mal damit:
Code:
function verifyemail($email)
{
  if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email, $check))
    return TRUE;
  else
    return FALSE;
}

//Absender-Emailadresse prüfen - "EMail" ist dabei der Name vom E-Mail <input>
if($_REQUEST_ENTL[EMail])
  if(verifyemail($_REQUEST_ENTL[EMail]) != TRUE)
    $error[] = "Ihre E-Mailadresse <b>$_REQUEST_ENTL[Email]</b> ist ungültig.";

redlama

Danke es hat geklappt *hurra* ;)
Und @Nils Hitze. Entschuldigung ich werde mir jetzt vornemen das ,,böse" Wort aus meinen Wortschatz zu streichen. :)
 
Ich habe auch mal eine email Adressen Validierung programmiert, die ich euch natürlich nicht vorenthalten will ;)

PHP:
<?php
$checkemail = eregi( "^" .
               "[a-z0-9]+([_\\.-][a-z0-9]+)*".   	//user
               "@".					//@ zeichen
               "([a-z0-9]+([\.-][a-z0-9]+)*)+".  	//domain
         "\\.([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|pro)" .	//sld, tld
               "$", $_POST['email']);

if (!$checkemail)
{
	echo "<p>Bitte eine korrekte Email Adresse eingeben.</p>";
}
?>



Viel Erfolg ;)
 

Neue Beiträge

Zurück