Kontaktformular - Testsenden fehlgeschlagen

masterchi3F

Grünschnabel
Hallo community,

ich habe bei diesem folgenden Script das Problem, dass wenn ich selbst das formular zum test vollständig ausfülle, ich keine e-mail erhalte.

Ich habe es mit mehreren Email-adressen ausprobiert anstelle der "deine@email.de"...

Wäre super wenn jmd. den Fehler entdecken könnte, da dieses script kostenfrei aus dem internet gezogen habe.

Vielen vielen Dank
lg
der Masterchi3F


PHP:
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /><head>
<title>Bewerbung</title>
</head>
<body>
<?php

$Empfaenger = "deine@email.de";

if($_REQUEST['Send'])
{
	if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
	{
		echo"Bitte kehre zum Formular <a href=\"javascript:history.back();\">zurück</a> und fülle alle Felder aus, Danke!";
	}
	else
	{
		$Mailbetreff = "Kontakt: ";
		$Mailbetreff .= $_REQUEST['Betreff'];

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

		$Header = "From: ".$_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";
		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"; 
		$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--"; 

		mail($Empfaenger, $Mailbetreff, "", $Header); 
		echo"Vielen Dank für deine Bewerbung! Wir kontaktieren dich, wenn du in die engere Auswahl gekommen bist. Viel Erfolg!";
   }
}
else
{
?>
<table border="0" cellpadding="1" cellspacing="2">
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
 <tr>
  <td>Dein Name ist?</td>
  <td><input name="Name" size="30" type="text"></td>
 </tr>
 <tr>
  <td>Deine E-Mail lautet?</td>
  <td><input name="Email" size="30" type="text"></td>
 </tr>
 
   <tr>
  <td>Wo wohnst du?</td>
  <td><select name="Betreff" size="1"><option>Kreis Euskirchen</option><option>Kreis Köln</option><option>Kreis Aachen</option><option>Kreis Bonn</option><option>Wo anders? Bitte angeben!</option></select></td>
 </tr>
 
 
 <tr>
  <td>Deine Figur?</td>
  <td><select name="Betreff" size="1"><option>89-60-89</option><option>sportlich</option><option>schlank</option><option>normal</option></select></td>
 </tr>
 
 
 
  <tr>
  <td>Deine Haarfarbe?</td>
  <td><select name="Betreff" size="1"><option>blond</option><option>braun</option><option>schwarz</option><option>rot</option><option>Andere? Bitte angeben!</option></select></td>
 </tr>
 
 
   <tr>
  <td>Wie gross bist du?</td>
  <td><select name="Betreff" size="1"><option>Klein</option><option>150cm - 160cm</option><option>160cm - 170cm</option><option>170cm - 180cm</option><option>180cm - 190cm</option>
  <option>Riesig</option></select></td>
 </tr>
 
 
 
 <tr>
  <td>Wer bist du?</td>
  <td><textarea cols="60" name="Nachricht" rows="5"></textarea></td>
 </tr>
 <tr>
  <td>Dein Bild!</td>
  <td><input name="Anhang" size="30" type="file"></td>
 </tr>
 <tr>
  <td align="center" colspan="2"><input name="Send" type="submit" value="Fertig? Jetzt abschicken!">    <input name="Reset" type="reset" value="Eingabe verwerfen"></td>
 </tr>
</form>
</table>
<?php
}

?>
</body>
</html>
 
$_REQUEST sollte nicht benutz werden, diese Variable birgt ein großes Sicherheitsrisikio. Genauers würdest über Google oder wohl auch hier im Forum finden.


Sind die Post daten gesetzt? (echo(), print_r(), var_dump())
 
Was sollte ich deiner Meinung nach denn jetzt tuen?

Aus Request ein $_POST machen? Den rest habe ich auch nicht so ganz verstanden könntest du mir anhand meines scriptes zeigen wo was hinmuss?

Ich wäre dir sehr dankbar :)

Danke

der masterchi3F
 
$_REQUEST sollte imho durch $_POST ersetzt werden, ja. Angenommen es werden keine GET-Wert benutzt. Da müsste natürlich $_GET hin.

Aus deinem Text schließ ich, dass du kein/sehr wenig Wissen hast, was PHP angeht. Bevor man sich eine beliebige Mailfunktion aus dem Internet läd, sollte man wissen, wie soetwas funktioniert, und dass es hier einige Sicherheitslücken gibt, die deffinitiv beachtet werden sollten!


du musst ein var_dum($_POST); in dein Script einfügen, damit überprüfst du ob und welche Post-Werte gesetzt sind. Damit kann man sichern, dass deine Einträge auch richtig weitergeben werden.
 
ok ich danke dir auf jeden fall recht herzlich:
ist es zu viel verlangt wenn du mein script kurz modifizierst?
ich habe absolut keinen Plan...

ich bin eher der Designer als Programmierer... falls ich dir dann den gefallen tuen kann wenn du was grafisches brauchst
dann kannst du dich ruhig melden... :)

der masterchi3F
 
Ich gehe davon aus das sowieso alles richtig weitergegeben wird. Die if-Bedingungen überprüfen das ja eigentlich.
Aber probieren kostet nichts, nur eine Zeile Code...


Beiläufig bemerkt, es wird hier im Forum nicht so gerne gesehen, gleich einen modifizierten Code zu verlagen/erbitte. Normalerweise sind wir da, um jemanden mit der Nase auf etwas zu drücken, dass er es besser lernt =)


PHP:
<?php

$Empfaenger = "deine@email.de";
var_dump($_POST);
if($_POST['Send'])
{
 
Ich danke dir dennoch für dein Entgegenkommen.

Ich werde mich mit dem Thema auseinandersetzen, da ich dies bestimmt nicht das letzte mal getan haben werde. Versprochen!

Mal sehen ob es jetzt funktioniert...

erstmal Danke

der masterchi3F
 
Das ist nur ein Test, das wirds auf jeden Fall nicht richten!

Mir fällt gerade etwas auf. Bei deiner Email wird keine Message mitgeschickt, bzw nur ein Leerer String. Der gesamte Inhalt wird in den Header gesetzt oO

In dem Fall lass ich da wohl besser mal jemanden ran, der sich mit der Mail-Funktion besser auskennt, ich kenne auch nur die Grundzüge für die Funktion...

mach mal ein:

PHP:
$Var = mail(xxxxx);   // <-- die xx'e nicht schrieben, da bleibt das, was vorher auch war

var_dump($Var);

Wenn da TRUE ausgegeben wird, dann wird die Email schonmal verschickt. Wenn nicht, dann ist schon da der Fehler.


Ansonsten bin ich wohl jetzt Still :X
 
Zurück