GET-Übergabe in Formular wird nicht abgeschickt
Max
- php
0 Der Martin
0 Max0 MudGuard
0 Max
0 Der Martin
Hi,
ich übergebe mittels GET (über die Url) einige Parameter an ein Mail-Formular. Die Inhalte stehen dann auch korrekt in den Input-Feldern drin. Beim Abschicken werden die Eingaben aber nicht mit verschickt, so als wären die Felder leer geblieben. Wo könnte denn da der Hase im Pfeffer liegen?
Viele Grüße
Max
Hallo,
ich übergebe mittels GET (über die Url) einige Parameter an ein Mail-Formular. Die Inhalte stehen dann auch korrekt in den Input-Feldern drin. Beim Abschicken werden die Eingaben aber nicht mit verschickt, so als wären die Felder leer geblieben. Wo könnte denn da der Hase im Pfeffer liegen?
die Beschreibung ist sehr vage, etwa so wie: Immer wenn ich den Hund streicheln möchte, knurrt er mich an. Woran könnte das liegen?
Aber mal der Reihe nach.
* Woher kommen die Parameter? Aus einem Link? Aus einem Formular? Wie sieht der
HTML-Code dazu aus?
* Die Parameter werden per GET-Methode übergeben, sagst du. Also müssen sie in der
Adressleiste sichtbar sein. Ist das der Fall? Wenn ja, warum nicht?
* Der Themenbereich "PHP" lässt vermuten, dass du die Parameter mit einem PHP-Script
verarbeitest. Was sagt ein var_dump($_GET) am Anfang des Scripts?
* Gibt es Abfragen im Script, die über Erfolg oder Misserfolg vorentscheidend sind?
Wie lauten die relevanten Ausschnitte aus dem Script?
Fragen über Fragen ...
So long,
Martin
* Woher kommen die Parameter? Aus einem Link? Aus einem Formular? Wie sieht der
HTML-Code dazu aus?
* Die Parameter werden per GET-Methode übergeben, sagst du. Also müssen sie in der
Adressleiste sichtbar sein. Ist das der Fall? Wenn ja, warum nicht?
* Der Themenbereich "PHP" lässt vermuten, dass du die Parameter mit einem PHP-Script
verarbeitest. Was sagt ein var_dump($_GET) am Anfang des Scripts?
* Gibt es Abfragen im Script, die über Erfolg oder Misserfolg vorentscheidend sind?
Wie lauten die relevanten Ausschnitte aus dem Script?
Hallo Martin,
ich habe hier mal die relevanten Schritte am Beispiel des 'Betreff' aufgelistet. Ich hoffe ich habe nichts übersehen. Die Übergabe an das Formular über den Link klappt gut. Beim Absenden/Prüfen des Formulars verschwindet die Eingabe aber wieder.
Link
<a href="/anmelden.php?nr=06&betreff=Anmeldung">Anmelden</a>
//Variablen
$betreff = isset($_GET["betreff"]) ? $_GET["betreff"] : "";
//Formular
$formular = "<form name='Form' action='" . $_SERVER["SCRIPT_NAME"] . "#formular' method='post' onsubmit='return check();'>
<label for='Betreff'>Betreff *label><br />
<input class='span-6' type='text' name='betreff' value='" . $betreff . "' id='Betreff' /><br />
<input class='m-btn' type='submit' name='sendung' value='Absenden' /><br /><br />
<p>* Pflichtfelder</p>
<p class='text-error'><!-- Fehleranzeige --></p>
</form>\n";
// Wurde das Formular abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST" || isset($_POST["sendung"])) {
//Überprüfen
if (strlen($betreff) <= 6) $eingabefehler .= "Der Betreff " . ((strlen($betreff) == 0) ? " fehlt" : " ist zu kurz") . " (min. 7 Zeichen).<br />";
// Sind keine Eingabefehler vorhanden
if ($eingabefehler == "") {
// Diese Nachricht wird an Ihre E-Mail-Adresse gesendet.
// Text-Format - \n = neue Zeile.
$datum = date("d.m.Y H:i");
$text = "
Gesendet am: $datum \n
====\n
Name: $name \n
E-Mail: $mailfrom \n
Betreff: $betreff \n
Nachricht: $nachricht \n
====";
// E-Mail versenden
$kopfzeile = "MIME-Version: 1.0;\nFrom: " . $mailfrom . "\n";
$kopfzeile .= "Content-Type: text/plain; Charset=utf-8;\n";
mail($mailto, $betreff, $text, $kopfzeile);
// Bestätigung der E-Mail
echo "<p>" .
"Vielen Dank für Ihre Nachricht.<br />";
}
else {
// Eingabefehler und Formular ausgeben
echo str_replace("<!-- Fehleranzeige -->",
"Die Nachricht wurde aus folgendem Grund nicht versendet:<br />" .
$eingabefehler, $formular);
}
}
else {
// Formular ausgeben
echo $formular;
}
Hi,
[code lang=php]//Variablen
$betreff = isset($_GET["betreff"]) ? $_GET["betreff"] : "";
$formular = "<form name='Form' action='" . $_SERVER["SCRIPT_NAME"] . "#formular' method='post' onsubmit='return check();'>
Du schickst das Formular mit method="post" ab, und wunderst Dich, daß die Formularfelder nicht in $_GET stecken?
cu,
Andreas
@Andreas
Du hast Recht, daran lag es. Das Formular per GET abschicken möchte ich aber auch nicht, schon wegen der begrenzten Datenmenge. Ich habe das jetzt so gelöst, dass ich die Daten per POST über hidden-Felder an das 2. Formular schicke, dann habe ich zwar einen Button statt einen Link aber naja.
Ein Problem ist allerdings damit verbunden. Die Formularüberprüfung startet jetzt schon beim Klick auf den Submit-Button des 1. Formulars. Kann ich das irgendwie verhindern?
Gruß
Max
Moin,
doch, hast du. Nach deiner jetzt ausführlicheren Schilderung hast du ein Problem mit POST, nicht mit GET, wie im Betreff angegeben.
Die Übergabe an das Formular über den Link klappt gut.
Und das, obwohl der Link fehlerhaft ist. Kannste mal sehen, wie fehlertolerant die meisten Browser sind. ;-)
<a href="/anmelden.php?nr=06&betreff=Anmeldung">Anmelden</a>
Das Zeichen '&' ist in HTML als Sonderzeichen reserviert: Es leitet eine Entity-Referenz ein. Soll es nicht diese Sonderbedeutung haben, muss es passend maskiert werden, also:
<a href="/anmelden.php?nr=06&betreff=Anmeldung">Anmelden</a>
Beim Absenden/Prüfen des Formulars verschwindet die Eingabe aber wieder.
Was heißt das genau? - Und ich hatte gefragt, was ein var_dump($_GET) am Anfang des Scripts ausgibt. Da du aber entgegen deiner ursprünglichen Aussage nicht mit GET, sondern mit POST Schwierigkeiten hast, interessiert uns hier natürlich var_dump($_POST). Werden die Daten geliefert?
// Wurde das Formular abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST" || isset($_POST["sendung"]))
Bedenke, dass $\_POST["sendung"] eventuell nicht existiert - nämlich dann, wenn man das Formular normal absendet, also durch Drücken der Eingabetaste.
> // E-Mail versenden
> $kopfzeile = "MIME-Version: 1.0;\nFrom: " . $mailfrom . "\n";
> $kopfzeile .= "Content-Type: text/plain; Charset=utf-8;\n";
Eine normale Plaintext-Mail als MIME message zu kennzeichnen, ist nicht nötig, schadet aber auch nicht.
Mit dem Problem sind wir aber nicht weiter als vorher, weil du keine Informationen rausrückst bzw. sie so unglücklich (und teils widersprüchlich) formulierst, dass sie unverständlich bleiben.
Ciao,
Martin
--
Dem Philosoph ist nichts zu doof.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(