Problem mit Formular

ArneH

Mitglied
Guten Tag,

bevor ich diesen Thread eröffnet habe, habe ich mir schon ein paar Themen zu diesem Problem hier im Forum durchgelesen, doch irgendwie hat keine Lösung geholfen. Das Formular funktioniert auch soweit, jedoch bleiben die ausgefüllten Felder beim nicht versenden der E-Mail leer, wenn man "Zurück zum Formular" anklickt. Wahrscheinlich ist es einfach nur ein Denk-Fehler von mir, aber ich weiss einfach nicht weiter.

kontakt.php:
HTML:
<form action="check.php" method="post" name="Kontaktformular">
  <input type="hidden" name="Kontakt" value="Internet-Kontaktformular">
  <table width="500" border="0" cellpadding="1" cellspacing="2" id="Formular">
    <tr>
      <th width="81" align="left" valign="top"><div align="left">Anrede:</div></th>
      <th width="409" align="left" valign="top"> 
        <div align="left">
            <select name="Anrede" id="Anrede">
              <option>Herr &nbsp;&nbsp;</option>
              <option>Frau &nbsp;&nbsp;</option>
              <option>Familie &nbsp;&nbsp;</option>
            </select>
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Vorname:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Vorname" type="text" size="20" value="<?php echo $_POST['Vorname']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Nachname:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Nachname" type="text" size="20" value="<?php echo $_POST['Nachname']; ?>">
          </div>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Firma:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Firma" type="text" size="25" value="<?php echo $_POST['Firma']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Anschrift:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Anschrift" type="text" value="<?php echo $_POST['Anschrift']; ?>" size="25">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">PLZ:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="PLZ" type="text" size="6" maxlength="5" value="<?php echo $_POST['PLZ']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Stadt:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Stadt" type="text" size="25" value="<?php echo $_POST['Stadt']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Telefon:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Telefon" type="text" size="25" value="<?php echo $_POST['Telefon']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Fax:</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Fax" type="text" size="25" value="<?php echo $_POST['Fax']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">E-Mail:*</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="absender" type="text" size="25" value="<?php echo $_POST['absender']; ?>">
          </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Betreff:*</div></th>
      <th align="left" valign="top"> 
        <div align="left">
          <input name="Betreff" type="text" size="25" value="<?php echo $_POST['Betreff']; ?>">
          <br>
        </div></th>
    </tr>
    <tr>
      <th align="left" valign="top"><div align="left">Ihre Anfrage:*</div></th>
      <th align="left" valign="top"><div align="left">
        <textarea name="Anfrage" cols="53" rows="10"></textarea>
        <br>
      </div></th>
    </tr>
    <tr>
      <th align="left" valign="top">
        <div align="left">
          <input name="Absenden" type="submit" id="Absenden" value="Absenden">
        </div></th>
      <th align="left" valign="top"><div align="left">
        <input name="L&ouml;schen" type="reset" id="Loeschen" value="L&ouml;schen">
      </div></th>
    </tr>
	<tr>
      <th align="left" valign="top"><div align="left">* Pflichtfelder</div></th>     
    </tr>
  </table>
</form>

check.php:
PHP:
<?
$mailtos = "kontakt@localhost"; # E-Mail Adresse des Empfängers vom Kontakt-Formular
$subject = "$Betreff"; # Betreff Zeile
$message = "$Anfrage \n\n-----------\n $Firma \n $Anrede $Vorname $Nachname \n $Anschrift \n $PLZ $Stadt \n\n Telefon: $Telefon \n Fax: $Fax"; # Inhalt der E-Mail
$header = "From: $absender"; # E-Mail Adresse des Senders
if (@mail($mailtos, $subject, $message, $header)) # mail() Befehl
{
	echo '<I>gesendet</I>'; # Ausgabe, wenn Kontakt E-Mail erfolgreich gesendet
}
else
{
	echo '<I>nicht gesendet</I><br><a href="kontakt.php">Zurück zum Formular</a>'; # Ausgabe, wenn Kontakt E-Mail nicht gesendet wurde
}
?>

Jede Hilfe wäre hilfreich. Danke schonmal im voraus.

Gruß ArneH

ps.: Das ganze läuft auf einem Debian-Server, mit apache2, php5 und mysql4.1, wenn es von Bedeutung sein sollte ;)
 
Hi,

Ohne mir deinen Code groß anzuschauen:
Ist doch klar, der User klickt auf "Zurück" und der Browser lädt die Datei komplett neu, als wäre es der 1. aufruf, denn woher soll php wissen, das es der user war, der auf "zurück" geklickt hat?
Du willst es so haben, wie wenn man auf den zurückbutton des browser klickt?
Dann versuch es per Java-Script:
Code:
<A HREF="javascript:history.back()" onMouseOver="{window.status='Zurück'; return true;}">
Zurück
</A>

Wenn der User nun dort draufklickt, ist es genauso, als würde er auf den zurück-Button im Browser drücken.

Oder:
Am besten du erstellst dir ne session, bei der du die SID immer übergibst, und beim erfolgreichen senden löscht du die SID wieder.

gruß kevin
 
Zuletzt bearbeitet:
Wenn jetzt aber jemand JS deaktiviert hat, geht die erste Möglichkeit auch nicht. Was wäre, wenn du alles in einer Datei hast? Also Formular, Prüfung und eintragen?
 
Das hätte ausserdem den Vorteil, dass du die $_POST - Variablen auch tatsächlich vorhanden sind wie du dir das vorstellst. So wie du das jetzt hast schickt die check.php keine $_POST Variablen an die kontakt.php zurück.
Wozu ist eigentlich das zusätzliche hidden-Feld gedacht?
 
Hi,

@kevkev: JS wollte ich eigentlich vermeiden. Ist ja auch nicht immer die schönste Lösung ;)

@fanste: Mmmh, stimmt eigentlich, mit allem in einer Datei. Daran hatte ich noch garnicht gedacht. Ich versuch es mal so. Danke.

@MissPiggy: Das hidden-Feld, weiss ich garnicht mehr so genau *schäm* wofür das war. Ich nehm es mal raus, da es eigentlich garkeine Funktion hat.

Danke nochmals für die schnelle Hilfe. Ich denke mal das Thema ist somit erledigt. :)

Gruß ArneH
 
Zurück