Autor |
Nachricht |
Bash
Threadersteller
Dabei seit: 27.02.2005
Ort: -
Alter: 37
Geschlecht:
|
Verfasst Fr 19.01.2007 10:56
Titel Problem mit Formmailer |
|
|
Hi Leute,
ich bin PHP-Einsteiger und hab mit dem Buch "PHP 5 echt einfach" vom Franzis-Verlag mir ein Formmailer für ne Homepage erstellt, welcher mir Daten wie Name, email-adresse und eine Nachricht an die unter $recipient angegebene email-Adresse schicken soll.
Hier könnt ihr euch die PHP-Datei auf dem Server mal anschauen:
http://web30.webbox808.server-home.net/htmldocs/anfrage.php
Und hier habt ihr die Datei um euch den Code anzuschauen:
http://web30.webbox808.server-home.net/formmailer.zip
Die Funktionalität:
Die derzeitige Funktionalität sieht so aus, dass ich die Felder
ausfüllen kann aber wenn ich dann auf "Absenden" klicke, wird die Seite nur neu geladen und die Felder sind wieder leer. Da sollte dann eigentlich eine Meldung kommen, dass die Daten abgeschickt
wurden, usw...
Ich sollte dann eine email mit den Daten die eingetragen wurden erhalten:
Code: | $recipient="sven.leonhardt@googlemail.com";
$subject="Anfrage auf ihr-stukkateur.com";
$header="From: " . $email . "\r\n";
$mail_body ="Das Kontakt-Formular wurde am " . date("d.m.Y") . " um " . date("H:i") . "Uhr ausgefüllt.\n";
$mail_body.="Folgende Daten wurden eingetragen:\n\n";
$mail_body.="Name: " . $name . "\n";
$mail_body.="eMail: " . $email . "\n\n";
$mail_body.="Message:\n";
$mail_body.=$anfrage . "\n\n ---- Ende der automatisch generierten eMail ----";
mail($recipient,$subject,$mail_body,$header); |
Leider erhalte ich im Moment nur ne Mail mit leeren Feldern.
Wenn jemand ein Feld auslässt oder falsch ausfüllt sollte auch eine
Meldung kommen:
Code: | if(strlen($name)<3){
$error_msg="Bitte geben Sie Ihren Namen an.<br />";
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)){
$error_msg.="Bitte geben Sie eine gültige eMail-Adresse an.<br />";
}
if(strlen($anfrage)<3){
$error_msg.="Bitte geben Sie eine Nachricht ein.<br />";
}
if(isset($error_msg)){
//Eines der Felder wurde nicht korrekt ausgefüllt
echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br /><br />";
echo $error_msg;
echo "<br />Bitte klicken Sie auf <a href=javascript:history.back(1)>zurück</a> und fülle alle Felder aus."; |
Funktioniert leider auch nicht...
Hoffe, jemand kann mir da weiterhelfen.
Gruß
Bash
|
|
|
|
|
Kraat
Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht:
|
Verfasst Fr 19.01.2007 11:03
Titel
|
|
|
bei dir ist register_globals auf off gestellt, was auch richtig so ist. Leider ist dein Buch nicht nach den gängigen Richtlininen geschrieben.
Du musts mit $_POST und $_GET Arbeiten somit deine neue Source
Code: |
if(strlen($_POST['name'])<3){
$error_msg="Bitte geben Sie Ihren Namen an.<br />";
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$_POST['email'])){
$error_msg.="Bitte geben Sie eine gültige eMail-Adresse an.<br />";
}
if(strlen($_POST['anfrage'])<3){
$error_msg.="Bitte geben Sie eine Nachricht ein.<br />";
}
if(isset($error_msg)){
//Eines der Felder wurde nicht korrekt ausgefüllt
echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br /><br />";
echo $error_msg;
echo "<br />Bitte klicken Sie auf <a href=javascript:history.back(1)>zurück</a> und fülle alle Felder aus.";
|
Müsste klappen ;=)
|
|
|
|
|
Anzeige
|
|
|
Bash
Threadersteller
Dabei seit: 27.02.2005
Ort: -
Alter: 37
Geschlecht:
|
Verfasst Fr 19.01.2007 11:18
Titel
|
|
|
hm, muss ich noch was ändern, was du nicht in deinem Code aufgeführt hast?
Ich hab jetzt die $wert in $_POST['wert'] umgeändert, aber es hat nichts gebracht.
muss ich irgendwo noch $_GET einsetzten?
Ach ja, ne email bekomme ich auch nicht mehr, aber ich glaube das war schon vor dieser letzten Änderung so, wenn ich mich recht erinnere...
|
|
|
|
|
Kraat
Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht:
|
Verfasst Fr 19.01.2007 11:29
Titel
|
|
|
Wie hast du denn die Form Method eingestellt method = "POST" oder method ="GET" ??
|
|
|
|
|
Bash
Threadersteller
Dabei seit: 27.02.2005
Ort: -
Alter: 37
Geschlecht:
|
Verfasst Fr 19.01.2007 11:30
Titel
|
|
|
method="POST"
|
|
|
|
|
Kraat
Dabei seit: 05.10.2006
Ort: Köln
Alter: 42
Geschlecht:
|
Verfasst Fr 19.01.2007 11:39
Titel
|
|
|
Dann poste mal bitte deine komplette Anweisung inkl. der Mail Funktion
// Bei einigen Hostern ist es erfoderlich das bei Mail der fünfte Parameter angegeben werden muss.
-f email@aufdeinemsystem.tld
Zuletzt bearbeitet von Kraat am Fr 19.01.2007 11:40, insgesamt 1-mal bearbeitet
|
|
|
|
|
Bash
Threadersteller
Dabei seit: 27.02.2005
Ort: -
Alter: 37
Geschlecht:
|
Verfasst Fr 19.01.2007 11:43
Titel
|
|
|
Die steht zwar schon in der Zip-Datei von oben, aber ich kanns auch nochmal posten
Code: |
<?php
if(isset($_POST['Submit'])){
//HTML- und PHP-Tags aus den Eingabefeldern entfernen
$name=strip_tags($_POST['name']);
$email=strip_tags($_POST['email']);
$anfrage=strip_tags($_POST['anfrage']);
//Pflichtangaben
if(strlen($_POST['name'])<3){
$error_msg="Bitten geben Sie Ihren Namen an.<br />";
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$_POST['email'])){
$error_msg.="Bitte geben Sie eine gültige eMail-Adresse an.<br />";
}
if(strlen($_POST['anfrage'])<3){
$error_msg.="Bitten geben Sie eine Nachricht an.<br />";
}
if(isset($error_msg)){
//Eines der Felder wurde nicht korrekt ausgefüllt
echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br /><br />";
echo $error_msg;
echo "<br />Bitte klicken Sie auf <a href=javascript:history.back(1)>zurück</a> und füllen Sie alle Felder aus.";
}else{
//Formular ausgefüllt - eMail generieren
$recipient="sven.leonhardt@googlemail.com";
$subject="Anfrage von ihr-stukkateur.com";
$header="From: " . $email . "\r\n";
$mail_body ="Das Anfrage-Formular wurde am " . date("d.m.Y") . " um " . date("H:i") . "Uhr ausgefüllt.\n";
$mail_body.="Folgende Daten wurden eingetragen:\n\n";
$mail_body.="Name: " . $name . "\n";
$mail_body.="E-Mail: " . $email . "\n";
$mail_body.="Nachricht:\n";
$mail_body.=$anfrage . "\n\n ---- Ende der automatisch generierten eMail ----";
mail($recipient,$subject,$mail_body,$header);
//Formular ausgeführt - Meldung ausgeben
echo "Ihre Nachricht wurder weitergeleitet.";
}
}else{
//Formular noch nicht ausgefüllt - Formular anzeigen
?>
Benutzen Sie das folgende Formular um Kontakt mit uns aufzunehmen:<br /><br />
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
<table width="430px" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width="113px">Ihr Name:</td>
<td width="232px">
<input type="text" name="name" size="37" />
</td>
</tr>
<tr>
<td width="113px">Ihre eMail-Adresse:</td>
<td width="232px">
<input type="text" name="email" size="37" />
</td>
</tr>
<tr>
<td width="113px">Ihre Nachricht:</td>
<td width="232px">
<textarea name="anfrage" cols="28" rows="5"></textarea>
</td>
</tr>
<tr>
<td width="113px"></td>
<td width="232px"><input name="submit" type="Submit" value="Abschicken" /></td>
</tr>
</table>
</form>
<?php
}
?>
|
|
|
|
|
|
baskoralle
Dabei seit: 17.02.2006
Ort: hamburch
Alter: 49
Geschlecht:
|
Verfasst Fr 19.01.2007 11:48
Titel
|
|
|
if(isset($_POST['Submit'])){
müsste `Submit ` nicht kleingeschrieben sein
|
|
|
|
|
|
|
|
Ähnliche Themen |
Problem mit Formmailer
[PHP] FormMailer Problem!
Formmailer-Problem PHP
Problem mit Formmailer [solved]
Formmailer-Problem-neues problem
Formmailer - Problem mit E-Mail Adresse
|
|