header() und [raw]urlencode

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

  • header() und [raw]urlencode

    Hallo!

    Ich habe ein LogIn Skript, das immer aufgerufen wird, wenn Authentifikation verlangt wird.
    Dem LogIn Skript übergebe ich u.a. die URL, damit es den User nach erfolgreichem LogIn wieder an die aufzurufende Seite zurückschicken kann. Da sowohl LogIn-Skript als auch die aufzurufende Seite Parameter verlangen, codiere ich den Referr mir urlencode(), damit login.php den ganzen String Referr als einen einzigen Parameter erkennt (und später - nach urldecode() - wieder in seine Bestandteile zerlegt).
    PHP-Code:
    //Nach LogIn Weiterleitung auf Seite gothere.php;
    //  diese Seite erwartet drei Parameter param1, param2 und param3
    $referr "./gothere.php?param1=eat&param2=my&param3=shirt";

    //ergibt: .%2Fgothere.php%3Fparam1%3Deat%26param2%3Dmy%26param3%3Dshirt
    $referr urlencode($referr);

    //ergibt: login.php?Referr=.%2Fgothere.php%3Fparam1%3Deat%26param2%3Dmy%26param3%3Dshirt
    $url "login.php?User=".$uname."&Referr=".$referr;

    //Weiterleitung zum Login
    header("Location: ".$url);

    //oder auch ausprobiert - selbes Resultat
    //echo "<a href=".$url.">weiter</a>"; 
    Soweit, so gut. Aber wenn ich nach der Weiterleitung zu login.php den Parameter Referr auswerte, ist dieser nicht url-codiert, sondern Klartext!

    PHP-Code:
    if (get_magic_quotes_gpc() == 1) {
      
    $referr stripslashes($_GET['Referr']);
    } else {
      
    $referr $_GET['Referr'];
    }

    // ergibt: ./gothere.php?param1=eat&param2=my&param3=shirt
    // und nix codiertes!
    echo "Referr: ".$referr
    Ist dieses Verhalten normal? Ich hätte erwartet, dass ich die Variable Referr zuerst wieder mit urldecode dekodieren müsste (es steht ja auch nix dergleichen in der Doku).

    Verhalten bei rawurlencode und urlencode ist dasselbe. Ebenfalls egal, ob ich per header() oder per <a href=... weiterleite!

    Danke, Stefan
    Man strahlt hier nicht in Wien - denn bald strahlt es aus Temmelin :-|

  • #2
    Re: header() und [raw]urlencode

    Das Verhalten ist normal, php nimmt die Dekodierung beim Erstellen der Variablen selbst vor. Du müsstest mit decode rumhantieren, wenn du direkt den Query ausliest ($_SERVER['QUERY_STRING'], aber wer macht das schon...)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Danke herzlichst!
      Man strahlt hier nicht in Wien - denn bald strahlt es aus Temmelin :-|

      Kommentar


      • #4
        Noch was: Warum funktioniert das dann nicht, wenn ich ein urlencoded hidden-Feld an ein Formular übergebe, das ich mit post abschicke? Dann kommt das Feld auch urlencoded an!
        Kapier ich nicht...
        Man strahlt hier nicht in Wien - denn bald strahlt es aus Temmelin :-|

        Kommentar


        • #5
          Original geschrieben von skrejci
          Noch was: Warum funktioniert das dann nicht, wenn ich ein urlencoded hidden-Feld an ein Formular übergebe, das ich mit post abschicke? Dann kommt das Feld auch urlencoded an!
          Kapier ich nicht...
          weil du da htmlentities benutzen musst um das Feld zu kodieren, weil es keine URL ist und somit kein URLencode erfordert

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Original geschrieben von skrejci
            Warum funktioniert das dann nicht, wenn ich ein urlencoded hidden-Feld an ein Formular übergebe, das ich mit post abschicke? Dann kommt das Feld auch urlencoded an!
            Natürlich, wäre doch schlimm, wenn dem nicht so wäre.

            Sonst könnte ich ein Beispiel wie
            PHP-Code:
            echo rawurlencode('Aus ÄÖÜ wird: ');
            // Ausgabe ist: Aus%20%C3%84%C3%96%C3%9C%20wird%3A%20 
            ja gar nicht hier posten ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X