Formular und Mailer in einem

Discman

Mitglied
So ich hab mir einen kleinen "Formmailer" zusammengestellt für ein Feedback Formular. Ich hab dabei einen normalen externen Formmailer (also seperate .php Datei) verwendet der eigentlich funktioniert und den etwas umgeschrieben.

Das Formular wird in der gleichen .php Datei ausgewertet und sofort verschickt nach einem Submit. Nach dem verschicken des Formulars ladet sich die Seite zwar neu, aber das Formular ist weg inkl. schickt der Formmailer die gleiche Email noch einmal wenn ich die Seite aktualisiere. Es gibt da sicherlich eine Möglichkeit das zu übergehen...und ich muss auch gestehen, dass ich davon gehört habe (von dem Problem), nur kenn ich mich in PHP wohl zuwenig aus und muss mich wiedermal auf euer Know-How verlassen. :-)

Ich hab die ganzen Nebenformatierungen an Text bzw. Tabelle mal weggelassen damit es etwas übersichtlicher aussieht.

Der PHP Code fängt vor dem <form> tag an:

PHP:
if($submit)
{
$adresse = "g_veit@koeflach-tv.at";
$headers = "From: $name <$email>\n";
$headers .= "Reply-To: $name <$email>\n";
$headers .= "X-Sender: formmailer by g.veit\n"; 
$headers .= "X-Mailer: PHP\n";
$headers .= "Return-Path: $name <$email>\n";
$temp = "$text\n\n\nName: $name\nEmail: $email\nTelefon: $telefon";
mail("$adresse", "Feedback", "$temp", "$headers");
$fehler = "Die Nachricht wurde erfolgreich abgeschickt.";
}
else 
{

Die Variable $fehler sollte eigentlich auf der gleichen Seite ausgegeben werden, nur war es etwas schwer mit dem Formular zu experimentieren, wo ich die Variable hinstellen kann, da es ja verschwindet, was ich auch nicht so ganz verstehe :mad: (Vielleicht weil die Variablen bekannt sind, nach einem Submit, aber keine Ahnung)

Nun der Formular Code:

Code:
<form name="feedback" method="post" action="<? echo $PHP_SELF ?>">
<table>
<tr> 
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>"></td>
</tr>
<tr> 
<td>Email</td>
<td><input type="text" name="email"  value="<? echo $email ?>"></td>
</tr>
<tr> 
<td>Telefon</td>
<td><input type="text" name="telefon" value="<? echo $telefon ?>"></td>
</tr>
<tr> 
<td>Text</td>
<td><textarea name="text" value="<? echo $text ?>"></textarea></td>
<tr> 
<td><input type="reset" name="reset" value="Reset">
<input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>

Und zum Schluss:

PHP:
<?
}
?>

Ich wollte eigentlich nur Seiten sparen, weil es doch eine größere Homepage wird und da das Feedback Formular recht klein ist (Im Gegensatz zu den anderen)kam mir halt diese Idee.

Würde mich freuen, wenn mir jemand weiterhelfen könnte!

lg disc
 
Also, es geht dir nur darum, dass das Formular nach dem Absenden verschwindet, und anschließend die Variable $fehler nicht ausgegeben wird?
Nunja, das das Formular nicht nach absenden angezeigt wird, ist doch ganz klar.
Du testest ja schließlich, ob das Formular abgeschickt wurde, wenn nicht, wird es angezeigt. Wenn aber ja, wird es ausgewertet und nicht angezeigt.

Und zu der Ausgabe von $fehler:
Hast du da irgendwo anders im Script denn auch

PHP:
echo $fehler;

stehen? - Man darf doch mal fragen?
 
ah funktioniert hab jetzt nur die if-Anweisung stehen lassen hat gut geklappt danke. Das mit dem echo-Befehl war mir klar (wie gesagt konnte nicht testen weil es ja immer verschwunden ist)

Danke!

lg disc
 
Zurück