Formularaction mit Anker + Weiterleitung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Code:
    index.php#error
    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?

  • #2
    Zitat von lx-club Beitrag anzeigen
    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?

    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.

    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.

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        PHP-Code:
        $_server['request_uri'
        Zuletzt geändert von af_net; 23.06.2011, 20:48.
        Viele Grüße
        af_net
        ---
        Discard.email - Wegwerf-E-Mail-Adresse
        DomFindr.net - RGP- & Expired-Domains

        Kommentar


        • #5
          Zitat von af_net Beitrag anzeigen
          $_server['request_uri']
          Was wolltest mir damit sagen?

          Kommentar


          • #6
            Damit sollte es gehen! statt php_self.

            kann mir mal einer sagen warum hier alles klein geschrieben wird???
            Viele Grüße
            af_net
            ---
            Discard.email - Wegwerf-E-Mail-Adresse
            DomFindr.net - RGP- & Expired-Domains

            Kommentar


            • #7
              Kurze Google-Suche zeigt, dass das wohl ein bekanntes Firefox-„Problem“ ist - bzw., dass manche Leute dieses „Feature“ andersherum beim IE vermissen ...

              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.

              Kommentar


              • #8
                @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:
                Code:
                index.php#
                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

                Kommentar

                Lädt...
                X