• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

email validation

Jeremygolf

Mitglied
Hallo,

wo muss ich das einfügen?

Code:
<?php
function valid_email($email) {
  // check an email address is possibly valid
  if (ereg("^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$", $email)) {
    return true;
  } else {
    return false;
  }
}


?>

Script

Code:
<?php


$name = "";
$email = "";
$msg_to_user = "";
if ($_POST['name'] != "") {
	
	
	include_once "admin/connect_to_mysql.php";
	
	// Be sure to filter this data to deter SQL injection, filter before querying database
	$name = $_POST['name'];
	$email = $_POST['email'];
	
	$sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);
    
   	if (!$email) {
		
		$msg_to_user = '<br /><br /><br /><br /><p><font color="red">Bitte geben Sie eine E-Mail Adresse ein ' . $name . '.</font></p>';
			


}	
	 elseif ($numRows > 1) {
		
		$msg_to_user = '<br /><br /><br /><br /><p><font color="red">' . $email . ' ist bereits im System.</font></p>';
		
	} 


	else {
		
		$sql_insert = mysql_query("INSERT INTO newsletter (name, email, datum) 
												    VALUES('$name','$email',now() )")  or die (mysql_error());
		
		$msg_to_user = '<br /><br /><br /><br /><p><font color="green">Danke ' . $name . ', Sie wurden erfolgreich registriert.</font></p>';
		$name = "";
        $email = "";
        
        $mail_absender="[email protected]";
		$betreff="Registrierung";
		$text="Sie wurden erfolgreich registriert. Der erste Newsletter folgt am 1. November.";
		
		mail($email, $betreff, $text, "from:$mail_absender");


        
	}
	
}
	


?>
 
Gemergt sähe der Code wohl so aus:

PHP:
<?php

function valid_email($email) {
  // check an email address is possibly valid
  if (ereg("^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$", $email)) {
    return true;
  } else {
    return false;
  }
}

$name = "";
$email = "";
$msg_to_user = "";

if ($_POST['name'] != "") {    
    
    include_once "admin/connect_to_mysql.php";
    
    // Be sure to filter this data to deter SQL injection, filter before querying database
    $name = $_POST['name'];
    $email = $_POST['email'];
    
    $sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);
    
       if (!$email) {
        
        $msg_to_user = '<br /><br /><br /><br /><p><font color="red">Bitte geben Sie eine E-Mail Adresse ein ' . $name . '.</font></p>';

    } elseif (!valid_email($email)) {
        
        $msg_to_user = '<br /><br /><br /><br /><p><font color="red">Bitte geben Sie eine gültige E-Mail Adresse ein ' . $name . '.</font></p>';

    } elseif ($numRows > 1) {
        
        $msg_to_user = '<br /><br /><br /><br /><p><font color="red">' . $email . ' ist bereits im System.</font></p>';
        
    } else {
        
        $sql_insert = mysql_query("INSERT INTO newsletter (name, email, datum) 
                                                    VALUES('$name','$email',now() )")  or die (mysql_error());
        
        $msg_to_user = '<br /><br /><br /><br /><p><font color="green">Danke ' . $name . ', Sie wurden erfolgreich registriert.</font></p>';
        $name = "";
        $email = "";
        
        $mail_absender="[email protected]";
        $betreff="Registrierung";
        $text="Sie wurden erfolgreich registriert. Der erste Newsletter folgt am 1. November.";
        
        mail($email, $betreff, $text, "from:$mail_absender");
        
    }
    
}

?>

Allerdings beinhaltet dies bloß die Einbindung und Abfrage der Funktion zur E-Mail Validierung.

Du solltest die Usereingaben unbedingt escapen, bevor du sie auf die Datenbank jagst:

PHP:
$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);

Außerdem solltest du den Aufbau der Validierung überdenken (erst schauen, ob E-Mail Adresse schon eingetragen ist und erst dannach prüfen, ob die E-Mail Adresse überhaupt valide ist?!)
 
Moin,
um Emails zu validieren brauchst du kein Regex, PHP hat für sowas diverse filter funktionen.

Für Email sähe das in etwa so aus
PHP:
filter_var($mail, FILTER_VALIDATE_EMAIL);
In deinem Code dann entsprechend:
PHP:
} elseif (filter_var($mail, FILTER_VALIDATE_EMAIL) !== false) {

MfG
 
Zurück
Oben