| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

23-06-2011, 20:05
|
|
lx-club
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 825
|
|
Formularaction mit Anker + Weiterleitung
Hi,
mein Formular ruft sich selber auf und als action ist eingetragen:
Code:
action="index.php?page=kontakt#error"
da nach nicht erfolgreicher Validierung direkt zum Formular gesprungen werden soll (Es befindet sich ziemlich weit unten auf der Seite)
Ist die Validierung erfolgreich, dann wird auf die Startseite weitergeleitet
PHP-Code:
header("Location: http://".$_SERVER['HTTP_HOST'].'/'.trim($_SERVER['PHP_SELF'],'/'))
Weshalb steht als Url im Browser
Der Anker sollte nicht mit erscheinen und wenn ich mir $_SERVER['PHP_SELF'] ausgeben lasse, erscheint dort der Anker auch nicht. Wie bekomme ich den wieder weg nach der Weiterleitung?
|

23-06-2011, 20:12
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von lx-club
Weshalb steht als Url im Browser index.php#error
|
Vermutlich, weil der Browser sich den Anker „gemerkt“ hat (muss er ja), und diesen auch an die neue Adresse, die er per Location-Header mitgeteilt bekommt, wieder anhängt.
Gerade k.A., ob das als fehlerhaftes Verhalten zu betrachten ist, oder vielleicht sogar so definiert ist (so einen Fall hatte ich noch nie).
Passiert das durchgängig in allen Browsern?
Zitat:
|
und wenn ich mir $_SERVER['PHP_SELF'] ausgeben lasse, erscheint dort der Anker auch nicht.
|
Natürlich nicht, an den Server wird er ja auch gar nicht mit übergeben.
Zitat:
|
Wie bekomme ich den wieder weg nach der Weiterleitung?
|
Du könntest versuchen, an die Umleitungs-Adresse einen leeren Anker anzuhängen, also nur ein '#' ans Ende packen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

23-06-2011, 20:36
|
|
lx-club
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 825
|
|
Hi,
anscheind passiert das nur im Firefox (Test unter Windows und OSX). Habe es eben im IE probiert, und dort ist der Anker nicht angehangen nach der Weiterleitung.
Ich habe auch im Firefox mal ein # angehangen, aber trotzdem wird der Anker aus der action des Formulars übernommen. Ist schon etwas ärgerlich, denn nach erfolgreicher Weiterleitung zur Startseite steht nun #error in der URL.
|

23-06-2011, 20:45
|
|
af_net
Registrierter Benutzer
|
|
Registriert seit: Aug 2010
Beiträge: 18
|
|
PHP-Code:
$_server['request_uri']
Geändert von af_net (23-06-2011 um 20:48 Uhr)
|

23-06-2011, 20:47
|
|
lx-club
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 825
|
|
Zitat:
Zitat von af_net
$_server['request_uri']
|
Was wolltest mir damit sagen?
|

23-06-2011, 20:49
|
|
af_net
Registrierter Benutzer
|
|
Registriert seit: Aug 2010
Beiträge: 18
|
|
Damit sollte es gehen! statt php_self.
kann mir mal einer sagen warum hier alles klein geschrieben wird???
|

23-06-2011, 20:49
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Kurze Google-Suche zeigt, dass das wohl ein bekanntes Firefox-„Problem“ ist - bzw., dass manche Leute dieses „Feature“ andersherum beim IE vermissen ...
Zitat:
|
Ich habe auch im Firefox mal ein # angehangen
|
Was meinst du mit „im Firefox“?
Ich meinte, serverseitig im Location-Header den [leeren] Anker an die Adresse anzuhängen. Ggf. auch mal mit einem nicht-leeren, anderen Anker probieren.
Hast du es mal mit einem anderen HTTP-Statuscode als dem bei header('Location: ...') per Default verwendeten 302 versucht - einem 303 bspw.?
Ansonsten bliebe als Workaround noch, in das Dokument einen JavaScript-Schnippsel einzubauen, der schaut ob der Anker '#error' lautet, und wenn ja ihn durch „nichts“ ersetzt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

23-06-2011, 21:03
|
|
lx-club
Registrierter Benutzer
|
|
Registriert seit: Nov 2003
Beiträge: 825
|
|
@wahsaga
ich habe bei Goggle gar nicht so viel gefunden, aber anscheind auch nicht die richtigen Begriffe eingegeben.
Mit einem anderen Statuscode geht es leider nicht.
Ich hatte mich vorhin falsch ausgedrückt, also ich habe an die Weiterleitungs-URL einen leeren Anker angehangen, d.h. sowas hier:
aber da steht nach der Weiterleitung trotzdem der alte Anker drin.
Was geklappt hat, ist einfach einen anderen Anker anzugeben index.php#success, das ist schonmal besser, als #error.
Was anderes als mit Javascript wird wohl nicht funktionieren, aber besser als nix. Mir würde es aber schon reichen, wenn der anker anders heißt.
Aber vielen Dank für die Hilfe. Jedenfalls weiß ich nun das es ein browserbedingter Fehler ist
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|