• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

fehlerhafte variablenübergabe

Status
Für weitere Antworten geschlossen.

fellfresse

Neues Mitglied
hallo,
ich versuche grad ein script anzupassen.
ich habe ein problem mit einer fehlerhaften variablenübergabe.
in meinem kontaktformular rufe ich wenn alle felder korrekt ausgefüllt wurden eine "danke"-seite auf:
Code:
if($_POST['action'] == "senden" and $fehler != "1")
{
    echo "<meta http-equiv=\"refresh\" content=\"0;
URL=danke-phpkontaktformular.php?
vorname=$vorname&name=$name&firma=$firma&strasse=$strasse&
plz=$plz&ort=$ort&telefon=$telefon&fax=$fax&email=$email&
nachricht=$nachricht\">";

}

in dem code für die dankeseite will ich dem user noch mall die daten anzeigen, aber $vorname ist leer.
muss ich $_GET['vorname'] schreiben oder wie bekomme ich die übertragenen daten in das feld?
Code:
<input name="vorname" size="35" value="<?php echo $vorname; ?>" readonly style="background-color:#EDEBEB">
 
ja $_GET
und meta refresh mit 0 sekunden ist das allergemeinste was man einem user antuen kann. damit zerstörst du eine elementare funktion des browsers. benutze einen Location: header()
 
also:
Code:
if($_POST['action'] == "senden" and $fehler != "1")
{
header("Location: danke-phpkontaktformular.php?
vorname=$vorname&name=$name&firma=$firma&strasse=$strasse
&plz=$plz&ort=$ort&telefon=$telefon&fax=$fax&email=$email
&nachricht=$nachricht\/");    
}

oder wie geht´s :(
 
ja eigentlich solltest du absolute urls die mit http:// anfangen angebem. es wird aber so jeder browser akzeptieren [es gibt eine wunderschönen browser der sich aber sogar drüber beim benutzer beschwert - lynx ]
 
das klappt leider nicht.
Code:
if($_POST['action'] == "senden" and $fehler != "1")
{
	header("Location: danke-phpkontaktformular.php?
vorname=$vorname&name=$name&firma=$firma&strasse=$strasse&
plz=$plz&ort=$ort&telefon=$telefon&fax=$fax&email=$email&
nachricht=$nachricht\/");   
}
erhalte ich folgende fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/php-kontaktformular.php:13) in /var/www/php-kontaktformular.php on line 177

auch mit einer absoluten pfadangabe bekomme ich dieselbe fehlermeldung
 
Das Problem ist, HTML sendet den header schon wenn das dukument startet. Endweder du schreibst alles HTML in PHP, also mit echo, oder du benutzt eine zwischen seite.
 
@crackpod der zuständige Request for Comments schreibt es so vor. warum genau weiss ich aber auch nicht.

rfc2616 schrieb:
14.30 Location

The Location response-header field is used to redirect the recipient
to a location other than the Request-URI for completion of the
request or identification of a new resource. For 201 (Created)
responses, the Location is that of the new resource which was created
by the request. For 3xx responses, the location SHOULD indicate the
server's preferred URI for automatic redirection to the resource. The
field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI

An example is:

Location: http://www.w3.org/pub/WWW/People.html
http://www.ietf.org/rfc/rfc2616.txt
 
das is aber doof >.<
dann müsst ich jetz jedes Script umschreiben und bei den header() ne $var mit der URI davorstellen...
Aber es geht ja auch so. Das ist verwirrend :wink:
Meinste, es is schlimm, wenn man relative Pfade nimmt?
 
nunja das einziege was mir bisher aufgefallen ist diese fehlermeldung in lynx:
Code:
Location-URL ist nicht absolut.
 
@Cracki: man kann auch relative Pfade angeben, der Browser weiß was damit gemeint ist, jedoch sollte man den absolouten verwenden, weil es dann ausgeschlossen ist, dass fehler passieren.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben