Kontaktformular HTML / PHP

08/24/2011 09:45 Inferiales#1
Hallo Community,
ich poste dies einfach mal hier, weil ich nicht weiss wo sonst...

Undzwar habe ich ein Kontaktformular in HTML/PHP geschrieben, welches auch von Aussehen her funktioniert, es verschickt jedoch keine E-Mails, kann mir wer helfen? Bin noch neu in der Materie

Dies ist das HTML Script
Code:
     <div class="box">
            <div class="inner">
              <form action="formular.php" method="post">
    <center><h3> Kontaktformular </h3> <br></center>
    
    Ihr Name:<br>
    <input type="text" size="30" name="name"><br><br>
    Ihre E-Mail Adresse:<br>
    <input type="text" size="30" name="email"><br><br>
    Ihre Nachricht: <br>
    <textarea name="nachricht" cols="35" rows="10"></textarea>
    <input type="submit" value="Absenden">
</form>
Dies der PHP Teil

Code:
<? 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$nachricht = $_POST["nachricht"]; 
$empfaenger = "[Only registered and activated users can see links. Click Here To Register...]";  
$betreff = "Neue Nachricht per Kontaktformular"; 

if($name != "" && $email != "" && $nachricht != "" && preg_match("/@/", $email) == "1") 
{ 
mail($empfaenger, $betreff, $nachricht, "From: ".$email.""); 

header("Location: done.html"); 
exit(); 
} 
else 
{ 
header("Location: formular.html");  
exit(); 
} 

?>
Freue mich auf eure Antworten

LG Infernius
08/24/2011 13:00 Snake124#2
das script ist an sich korrekt...

1 kleiner formfehler (ist aber nicht schlimm und hat keine auswirkung)

Code:
mail($empfaenger, $betreff, $nachricht, "From: ".$email."");
-->
Code:
mail($empfaenger, $betreff, $nachricht, "From: ".$email);

was wahrscheinlicher (sogar ziemlich sicher) ist...
check mal
Code:
$empfaenger = "[Only registered and activated users can see links. Click Here To Register...]";
es kann sein, das arcor deine mail blockiert weil sie von einem unbekanntem host kommt.

schicks enfach mal an eine web.de adresse oder so

folgende anbieter machen probleme:
AOL
GMX
ARCOR
BLUECABLE
ALICE
uvvvvvvm

im grunde alle die irgendwie irgendwas mit aol zu tun haben/hatten :D

mfg
08/24/2011 13:06 Inferiales#3
Das war es Oo es geht xD danke du bist mein Held xD Jetzt kann ich meinem Kunden endlich die Seite geben xD
08/24/2011 14:30 Snake124#4
najaa, 1. heldin wenn schon^^

und zweitens, wenns für nen kunden ist solltest du eher eine komplette mailklasse einbauen welche zb eine verbindung zu einem mailprovider aufbaut und die emails von dort verschickt.

zudem werden deine daten ja 1zu1 aus dem formular übertragen, damit ist keinerlei sicherheit gewährleistet. am einfachsten sicherst du die daten mit htmlspecialchars() oder(besser und) mit mysql_real_escape_string() ab

mfg aileen


EDIT:


[Only registered and activated users can see links. Click Here To Register...]

dein kunde muss in der formular.php bei
Code:
$mail->Port       = 587; // SMTP server port
$mail->Host       = "SERVER"; // SMTP server
$mail->Username   = "USERNAME"; // SMTP server username
$mail->Password   = "PASSWORT"; // SMTP server password
die gewünschten daten angeben.

zudem hab ich dir die eingaben mit htmlspecialchars abgesichert.
falls die website auf eine mysqlverbindung zurückgreifen kann, dann solltest du

Code:
$name = htmlspecialchars($_POST["name"]); 
$email = htmlspecialchars($_POST["email"]); 
$body = htmlspecialchars($_POST["nachricht"]);
in

Code:
$name = htmlspecialchars(mysql_real_escape_string($_POST["name"])); 
$email = htmlspecialchars(mysql_real_escape_string($_POST["email"])); 
$body = htmlspecialchars(mysql_real_escape_string($_POST["nachricht"]));
ändern
08/26/2011 15:12 Inferiales#5
Erklär das bitte nochmal für ganz blöde Also für mich xD
08/26/2011 16:54 Snake124#6
die mailklasse versendet mails über zb web.de oder was auch immer du willst...

da die web.de server zertifiziert sind, kommen die mails an ;)

einfach mein rar runterladen, und in die formular.php schauen ;)

so wärs für web.de
Code:
$mail->Port       = 587; // SMTP server port
$mail->Host       = "smtp.web.de"; // SMTP server
$mail->Username   = "[Only registered and activated users can see links. Click Here To Register...]"; // SMTP server username (emailadresse)
$mail->Password   = "PASSWORTZUREMAIL"; // SMTP server
08/26/2011 21:47 Inferiales#7
AHHHH sogesehen versendet dann web.de über meine e-mail die e-mails xD
08/26/2011 22:55 Snake124#8
korrekt ;)
08/27/2011 22:15 JacK le chilla#9
jop so würde ichs auch machen allerdings nur bei emails die öfters verschickt werden müssen also bei registration oder passwort vergessen etc ^^