php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.05.2006, 11:34  
Gast
 
Beiträge: n/a
Standard Email aus Formular kontrollieren will nicht so recht...

Hier mein Code:
Code:
<?php
include 'Empfaenger.php';

if($_REQUEST['Send'])
{
	if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) && ereg("^[a-zA-Z]{1,}[-_a-zA-Z0-9]{0,}\.{0,1}[-_a-zA-Z0-9]{0,}@{1}[-a-zA-Z0-9]{2,}\.{1}[a-zA-Z]{2,4}$", $_REQUEST['Email']) || empty($_REQUEST['Nachricht']) )
	{
		echo"Bitte f�llen Sie alle Felder richtig aus!
";
                 echo 'Fenster schlie�en';
	}
	else
	{
		$Mailbetreff = "Kundenemail: ";
		$Mailbetreff .= $_REQUEST['Betreff'];

		$Trenner = md5(uniqid(time()));

		$Header = "Von: ".$_REQUEST['Email'];
		$Header .= "\n";
		$Header .= "MIME-Version: 1.0";
		$Header .= "\n";
		$Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
		$Header .= "\n\n";
		$Header .= "This is a multi-part message in MIME format";
		$Header .= "\n";
		$Header .= "--$Trenner";
		$Header .= "\n";
		$Header .= "Content-Type: text/plain";
		$Header .= "\n";
		$Header .= "Content-Transfer-Encoding: 8bit";
		$Header .= "\n\n";
		$Header .= "Sie haben folgende Nachricht erhalten: \n\n";
                 $Header .= "Sender IP: $_SERVER[REMOTE_ADDR]\n\n";
                while(list($Formularfeld, $Wert)=each($_REQUEST))
		{
			if($Formularfeld!="Send" && $Formularfeld!="Anhang")
			{
			   $Header .= $Formularfeld.": ".$Wert."\n";
			}
                 }

		$Header .= "\nDatum/Zeit: ";
		$Header .= date("d.m.Y H:i:s");
		$Header .= "\n";
                 if (is_uploaded_file($Anhang))
                 {
                 $Header .= "--$Trenner";
		$Header .= "\n";
                 $Header .= "Content-Type: ";
		$Header .= $_FILES['Anhang']['type'];
		$Header .= "; name=";
		$Header .= $_FILES['Anhang']['name'];
		$Header .= "\n";
		$Header .= "Content-Transfer-Encoding: base64";
		$Header .= "\n";
		$Header .= "Content-Disposition: attachment; filename=";
		$Header .= $_FILES['Anhang']['name'];
		$Header .= "\n\n";
		$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
		$Header .= chunk_split(base64_encode($Dateiinhalt));
		$Header .= "\n";
		$Header .= "--$Trenner--";
                 echo "Ihre Datei ".$Anhang."hat die Gr��e ".$Anhang_size." und wurde erfolgreich verschickt.";
                 }
		mail($Empfaenger, $Mailbetreff, "", $Header);
                 echo "Vielen Dank f�r Ihre eMail! 
Wir werden Sie in K�rze kontaktieren!
";
                 echo 'Fenster schlie�en';
           }

}
?>
Das Problem ist: Formular an sich funktioniert prima, gibt man eine falsche email im Formular an, wird diese mit ereg jedoch nicht richtig gepr�ft.
Au�erdem wird die Standardemail des Servers als Versandadresse eingesetzt, egal ob man ein File mitschickt oder nicht.

Vermutung daher, dass hier die Servermail gepr�ft wird, die nat�rlich die richtige Syntax hat.
Kann ich das irgendwie umgehen? Eigentlich sollte er ja die email aus dem Formular pr�fen oder habe ich einen Denkfehler drin?

MFG
shapeshifta
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.05.2006, 12:00  
Erfahrener Benutzer
 
Registriert seit: 09.03.2005
Beiträge: 219
webbi
Standard

Deine IF Bedinung ist Falsch.

empty($_REQUEST['Email']) && ereg(...)

Diese gibt nur true zurück, wenn die E-Mail Variable leer ist. Wenn sie gesetzt ist, gibt zwar eventuell das ereg(...) true zurück, aber empty(...) ist dann false.
Dadurch ist dein if bei eingebener E-Mail, egal ob gültig oder nicht, immer false und er springt zum else.

Tip: Strukturiere die IF Bedingung neu und benutze Klammern, denn das && hat eine höhere Priorität wie ||. Das heißt: (x=y || x=y && x=y) ist gleichbedeutend mit (x=y || (x=y && x=y)). Du willst glaube ich eher ( (x=y || x=y) ) && x=y)

Beim falschen Absender tippe ich mal auf einen Fehler in deiner Header Definition.

"Von: ".$_REQUEST['Email']; vielleicht "FROM: ".$_REQUEST['Email']; ?
webbi ist offline  
Alt 24.05.2006, 13:10  
Gast
 
Beiträge: n/a
Standard

ich habs jetzt in
if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || !ereg("^[a-zA-Z]{1,}[-_a-zA-Z0-9]{0,}\.{0,1}[-_a-zA-Z0-9]{0,}@{1}[-a-zA-Z0-9]{2,}\.{1}[a-zA-Z]{2,4}$", $_REQUEST['Email']) || empty($_REQUEST['Nachricht']) )
geändert. Läuft!
Mit dem Absender hab ich mich wohl missverständlich geäußert, wenn man eine falsche mail angibt, dann kommt die Standardmail, aber das wird ja nun verhindert!
Vielen Dank für das Augenöffnen.
:wink:

Noch ne Idee, wie man die Sicherheit verbessern kann?
 
Alt 24.05.2006, 13:39  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von shapeshifta
Noch ne Idee, wie man die Sicherheit verbessern kann?
Deine Überprüfung ist, sorry, völliger Quatsch. Lese


15.11. Wie kann ich feststellen, ob eine Mailadresse äußerlich gültig ist?
http://www.php-faq.de/q/q-mail-adresse-gueltig.html

und beachte die Folgelinks.

Gruß
phpfan
 
Alt 24.05.2006, 15:06  
Gast
 
Beiträge: n/a
Standard

Wieso quatsch? Ich prüfe doch nur das Formular auf Eingaben und dabei die mail auf richtige Syntax. Gut, laut Deinem Artikel da ist das überholt, aber bei den "älteren Adressen" funktioniert sie ohne Probleme und wird auch auf vielen Seiten im Netz so angegeben...
 
Alt 24.05.2006, 15:08  
Gast
 
Beiträge: n/a
Standard

Probiere Domains bzw. eMail-Adressen mit Umlauten und was ist mit .museum?

Gruß
phpfan
 
Alt 24.05.2006, 15:12  
Gast
 
Beiträge: n/a
Standard

ich sagte bereits, dass sie vielleicht überholt ist, aber sie deswegen als Quatsch zu bezeichnen...
 
Alt 24.05.2006, 15:57  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Es ist Quatsch, wenn du gültige E-Mail-Adressen nicht akzeptierst und das ist bei dir ja der Fall!
Lieber ein paar falsche E-Mails zuviel als eine richtige zuwenig! Und wenn jemand seine E-Mail nicht preisgeben will, dann gibt er eben eine syntaktisch richtige E-Mail-Adresse an.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Formular schickt keine Email alfonsodiecko PHP Tipps 2008 2 10.05.2008 20:19
Email Formular funzt net thomson PHP Tipps 2006 25 03.04.2006 12:59
Formular an 2 Email adressen senden PHP Tipps 2006 7 07.01.2006 17:54
Subject in Email Formular PHP Tipps 2005-2 1 10.09.2005 12:58
Bild per email über Formular versenden PHP Tipps 2005-2 8 30.07.2005 14:46
[Erledigt] Datei per PHP Formular an Email Adresse PHP Tipps 2005-2 1 28.06.2005 16:22
Email Formular Beitragsarchiv 11 14.04.2005 08:41
Html Formular per email PHP Tipps 2005 1 30.03.2005 17:17
Formular an meine Email adresse senden 'progman' PHP Tipps 2005 1 01.03.2005 19:43
[Erledigt] Formular optimierung und Email check PHP Tipps 2004-2 2 29.12.2004 10:43
PHP Email Formular mit einem bzw. mehreren Anähngen PHP-Fortgeschrittene 1 11.12.2004 22:34
Wie implementiere ich mein Email Formular? PHP Tipps 2004-2 2 14.11.2004 17:02
Suche eMail Formular in PHP Beitragsarchiv 2 12.10.2004 16:24
email formular: Name wird nicht übergeben PHP Tipps 2004 3 19.06.2004 13:36
formular und email PHP Tipps 2004 5 18.06.2004 21:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:06 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.