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

REGEX email validation

Jeremygolf

Mitglied
Hallo, ich habe diesen Code hier:
wo und was muss ich machen, dass das $normal funktioniert?

Code:
$name = $_POST['name'];
	$email = $_POST['email'];
	$normal = "^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$";
		
	$sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'");
    $numRows = mysql_num_rows($sql);
    
	
    
      
   	if (!$email) {
		
		$msg_to_user = '<br /><br /><h4><font color="1dd2ff">Bitte geben Sie eine E-Mail Adresse ein ' . $name . '.</font></h4>';
			
	}


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


        
	}
	
}
 
Reicht denn filter_var aus? Ich hatte letztens in eigener Sache eine Mailer Class geschrieben, welche Eingaben aus einem Kontaktformular an eine Gmail-Adresse sendet. Mehr als Spam kann mir da nicht passieren.

Code:
class FormMailer
{
    private $to;
    private $subject;
    private $message;
    private $name;
    private $sender;
    private $headers;
    
    public function __construct()
    {
        if (isset($_POST)) {
            $this -> to = "[email protected]";
            $this -> subject = filter_var($_POST["subject"], FILTER_SANITIZE_STRING);
            $this -> message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);
            $this -> name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
            $this -> sender = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
            $this -> headers = "From: " . $this -> sender . "\r\n" . "Name: \r\n" . $this -> name ."\r\n";
            
            foreach ($_POST as $key => $value) {
                if ($value == "") {
                    header("location: ../views/mail_entries_error.php");
                    return false;
                } 
            }
            
            if (!filter_var($this -> sender, FILTER_VALIDATE_EMAIL)) {
                header("location: ../views/mail_email_error.php");
                return false;
            } else {
                mail($this -> to, $this -> subject, $this -> message, $this -> headers) or die ("Mail was not sent");
                header("location: ../views/mail_thank_you.php");
            }
            
        }
    }
}

Sollten die Adressen hingegen noch in eine Datenbank geschrieben werden, hätte ich ein PDO Objekt und prepared statements verwendet. Zumindest habe ich mal gelernt, dass das die sicherste Weise wäre, um SQL-Injections vorzubeugen. Ich lasse mich da aber gerne belehren.
 
Da hast du wohl den Sinn von OOP nicht wirklich verstanden. OOP ist nicht, seinen ganzen Code in eine Klasse verfrachten.
Außerdem sollte man nicht die Funktion mail() benutzen sondern ordentliche Libraries wie Swift oder PHPMailer. Deine Klasse ist nutzlos.
 
Naja, da ich überwiegend mit Frontend-Tasks beschäftigt bin, sind meine PHP-Kenntnisse leider etwas eingerostet.

Dass mail() veraltet ist, war mir schon klar. Auf der anderen Seite habe ich die entsprechende Domain aber auf einem normalen Webspace gehostet und kann dort kein Framework wie Swift installieren.
 
Das ist Humbug. Swift sind PHP-Dateien und auch kein Framework. Swift ist eine Library. PHPMailer besteht, wenn ich mich recht erinnere, aus gerade mal 4 oder 5 PHP-Dateien. Diese Librarys sind gerade dafür entwickelt worden, damit sie ohne viele Umstände auf quasi jeder PHP-Konfiguration laufen können.

mail() ist nicht veraltet. Eine vernünftige Benutzung der Funktion mail() sieht allerdings viele Kenntnisse des Mailstandards vor, die kaum einer besitzt.
 
Zurück
Oben