Ankündigung

Einklappen
Keine Ankündigung bisher.

Header Weiterleitung

Einklappen

Neue Werbung 2019

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

  • duderino
    hat ein Thema erstellt Header Weiterleitung.

    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

  • DER_Brain
    antwortet
    das is immer blöd ^^

    viel Spaß ncoh

    Einen Kommentar schreiben:


  • duderino
    antwortet
    Ok. es hat funktioniert. Ich hatte nen dummen Fehler im Script. So wie es karl-150 beschrieben hat, ist es richtig. Danke für eure Hilfe

    Einen Kommentar schreiben:


  • duderino
    antwortet
    Bei beiden Vorschlägen werde ich immer auf die index.php weitergeleitet, obwohl bei dem Vorschlag von karl-150 bei einem echo der richtige link rauskommt.

    Einen Kommentar schreiben:


  • DER_Brain
    antwortet
    jo.. das geht auf mein konto...

    Einen Kommentar schreiben:


  • duderino
    antwortet
    Ich habs ka probiert. Funktionier nur nicht. Siehe einen Beitrag weiter oben

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    wieso ersetzt du denn auch mit &amp; hast du meinen beitrag übersehen

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    str_replace alles ummodeln. Glaub aber kaum dass das was hilft.
    Dann probier es doch mal, wieso sollte das denn nicht funktionieren.

    Einen Kommentar schreiben:


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

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

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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?

    Einen Kommentar schreiben:


  • DER_Brain
    antwortet
    hast du das vorherige getestet?

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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.

    Einen Kommentar schreiben:


  • DER_Brain
    antwortet
    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");
    }
    ?>

    Einen Kommentar schreiben:


  • duderino
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:

Lädt...
X