Ankündigung

Einklappen
Keine Ankündigung bisher.

Header Weiterleitung

Einklappen

Neue Werbung 2019

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

  • Header Weiterleitung

    Hallo zusammen, in einem Script von mir verwende ich mehrere Sprachen. Um diese Sprache jeweils auf der aktuellen Seite zu ändern gibt es einen Link zu einer Datei in der die Session auf die jeweilige Sprache angepasst wird. Desweiteren übergebe ich mit der Sprache zusammen auch den aktuellen Pfad zu meinem Script, so dass man nach dem wechseln der Sprache wieder auf die aktuelle Seite kommt.

    Der link sieht so aus: lang.php?lang=en&redirect=/fenning/index.php?content_id=2&module=Ueber-uns.html

    Die lang.php sieht folgendermaßen aus:
    PHP-Code:
    <?php
    //Benutzersprache wechseln
    if(isset($_GET["lang"])){
        
        
    session_register("lang");
        
    $_SESSION["lang"] = $_GET["lang"];

        
    header("Location: $_GET[redirect]");
    }
    ?>
    Eigentlich funktioniert alles bis auf die Weiterleitung die die Seite wieder aufrufen soll. Wenn der Link so aussieht funktioniert es:

    index.php?content_id=2

    Wenn ich aber noch eine Variable anhänge übergibt er sie zwar aber der header leitet diese nicht mehr weiter. D.h. wenn ich so einen Link eingebe:

    index.php?content_id=2&module=Ueber-uns.html

    kommt am Schluss doch nur das raus: index.php?content_id=2

    Kann es sein dass ich beim header was vergessen hab oder wieso funktioniert das nicht?

    Gruß
    duderino


  • #2
    ich weiß nicht, aber könnte es sein, dass der parser glaubt, dass &module; sich noch auf den normalen link (also nicht auf den redirect link) bezieht?

    ich weiß nicht, wie man das umgehen könnte.. evt. escapen ( \ )..

    mfg Andi

    PS: bitte vorher überprüfen, ob $_GET['lang'] und $_GET['redirect'] gültig sind..

    Kommentar


    • #3
      nein daran liegt es nicht. Ich übergebe z.B. in einer anderen Datei so einen Link:

      produkte.php?action=details&artikelnummer=10003

      Hier funktioniert es auch nicht. Das &artikelnummer=xxxx wird grad weggelassen.

      Kommentar


      • #4
        hm.. is mir ganz neu sowas!

        poste mal nen link auf deine php_info datei..

        mfg Andi

        Kommentar


        • #5
          www.duderino.de/phpinfo.php

          Kommentar


          • #6
            mach oben mal error_reporting(E_ALL); ins script..

            vielleicht gibt er dir nen notice aus..

            mfg Andi

            Kommentar


            • #7
              Nein, da kommt kein Notice.
              Hat vielleicht sonst noch jemand ne Idee?

              Kommentar


              • #8
                Zitat von DER_Brain
                ich weiß nicht, aber könnte es sein, dass der parser glaubt, dass &module; sich noch auf den normalen link (also nicht auf den redirect link) bezieht?

                ich weiß nicht, wie man das umgehen könnte.. evt. escapen ( \ )..
                Das ist schon richtig und daran wird es wohl auch liegen: du musst & hier durch %26 ersetzen, ganz genau genommen ?, /, = auch!

                Probiers mal damit:
                lang.php?lang=en&redirect=%2Ffenning%2Findex.php%3 Fcontent_id%3D2%26module%3DUeber-uns.html

                Kommentar


                • #9
                  Aber der Parser wird ja mit 2 '' umgangen!?
                  Außerdem bekomm ich den Pfad zu dem aktuellen Script ja von einer Globale. D.h. ich kann daran nichts verändern. Ich könnte nur mit str_replace alles ummodeln. Glaub aber kaum dass das was hilft.

                  Kommentar


                  • #10
                    ich glaub du verstehst nicht genau, was gemeint ist..

                    nimm dieses bsp.:

                    PHP-Code:
                    <?php
                    // $_GET['redirect'] = "index.php?test=test&a=b";

                    if(isset($_GET['redirect'])){
                      
                    header("location: page.php?variablexy=xy&redirect=[b]index.php?test=test&a=b[/b]");
                    }
                    ?>
                    das fett geschriebene ist der andere link.. aber der parser glaubt, dass die GET variable redirect folgendermaßen lautet:
                    index.php?test=test

                    alternativ ginge vlt. auch das (um zu deinem bsp. zu gehen)

                    PHP-Code:
                    <?php

                    //Benutzersprache wechseln
                    if(isset($_GET["lang"])){
                       
                       
                    session_register("lang");
                       
                    $_SESSION["lang"] = $_GET["lang"];
                       
                    $redirect $_GET['redirect'];
                       
                    str_replace("&""&amp;"$redirect);
                       
                    header("Location: $redirect");
                    }
                    ?>

                    Kommentar


                    • #11
                      Hmm, ich hab gerade bemerkt dass es doch nicht am header liegt. Wenn ich ein echo im Browser von $_GET["redirect"]; ausgebe kommt schon nur die Hälfte der URL. Obwohl es in der Adressleiste richtig angezeigt wird.

                      Kommentar


                      • #12
                        hast du das vorherige getestet?

                        Kommentar


                        • #13
                          Ja, das funktioniert schon aber die URL kommt ja schon falsch an. d.h er kann das & auch nicht mehr ersetzen. Aber wie ersetze ich das & in einem Wert den ich mit $_SERVER['REQUEST_URI'] ausgebe?

                          Kommentar


                          • #14
                            Jetzt hab ich folgendes. Funktioniert aber nicht. Bei diesem beispiel werde ich immer auf die Hauptseite weitergeleitet:

                            $redirect = str_replace("&", "&amp;", $_SERVER["REQUEST_URI"]);

                            Kommentar


                            • #15
                              str_replace alles ummodeln. Glaub aber kaum dass das was hilft.
                              Dann probier es doch mal, wieso sollte das denn nicht funktionieren.

                              Kommentar

                              Lädt...
                              X