mod_rewrite und "&"

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

  • mod_rewrite und "&"

    Hi,

    wie kann ich das "&" in einer URL escapen das es als Teil des Namens und nicht als Anfang einer weiteren Variable anzeptiert wird?

    z.B.

    www.domain.com/ich_&_du

    so das "ich_&_du" der Wert einer einzigen Variable bleiben.

    Danke
    Sayon

  • #2
    mit url_encode?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hatte das & schon mit %26 ersetzt. Hat aber auch nicht geholfen...

      "ich_&_du" ist der Wert einer Variable nach der dann in der Datenbank gesucht wird... zur Zeit sucht es dann leider nur nach "ich".

      Kommentar


      • #4
        Dann lass doch dein "&" evt. vorher durch ein "AND" ersetzen...

        Kommentar


        • #5
          Dann lass dir mal das $_GET ausgeben mit print_r und var_dump, und poste die Datenbankquery. Dann sieht man was und muss nicht rätseln.

          Kommentar


          • #6
            Original geschrieben von hasch
            Dann lass doch dein "&" evt. vorher durch ein "AND" ersetzen...
            Das ist bringt nix da es auch Einträge gibt die wirklich "and" enthalten und die kann ich dann nicht einfach wieder in "&" zurückwandeln...


            http://www.erfunden.de/sektion/detail/ich_%26_du

            ergibt mit

            PHP-Code:
            print_r($_GET)

            Array ( [
            k] => sektion [sub] => detail [artist] => ich_ [_du] => ) 

            PHP-Code:
            var_dump($_GET); 
            ergibt

            PHP-Code:
            array(4) { ["k"]=>  string(7"sektion" ["sub"]=>  string(6"detail" 
            ["artist"]=>  string(4"ich_" ["_du"]=>  string(0"" 

            Der Regex dazu:

            PHP-Code:
            RewriteRule ^sektion/detail/(.+)/?$ index.php?k=sektion&sub=detail&artist=$[QSA

            Hmm... kann ich das & wohl nur durch ein völlig anderes Zeichen ersetzten was sonst nie gebraucht wird...

            Hab noch http://mail.wikipedia.org/pipermail/...ne/005814.html gefunden... will aber auch net so... und patchen liegt nicht in meiner Hand =)
            Zuletzt geändert von Sayon; 29.05.2006, 18:43.

            Kommentar


            • #7
              Ich denke das geht wirklich nicht, in URL funktioniert das & nicht und in Variablennamen nach dem ? auch noch nicht (müsste ich aber RFC lesen für genaue Regeln). Es geht in Werten nach dem ?, habe ich praktisch überprüft: Beispiel: ?titel=ich_%26_du.

              Konsequenz: du solltest den URL-Aufbau ändern nach dem Schema:
              www.erfunden.de?artist=ich_%26_du .



              Nebenbei bemerkt:
              http://www.erfunden.de/sektion/detail/ich_%26_du
              gibt nicht:
              Array ( [k] => sektion [sub] => detail [artist] => ich_ [_du] => )

              jedoch
              http://www.erfunden.de?k=sektion&sub...ist=ich_%26_du
              würde ergeben
              Array ( [k] => sektion [sub] => detail [artist] => ich_ &_du )

              Spielt da evtl. noch ein <form> hinein?

              Kommentar


              • #8
                Ich hab die Ausgabe so reinkopiert wie ich sie erhalten habe...


                Nichtsdestotrotz hab ich gerade ein Workaround geschaffen

                PHP-Code:
                $i 1;
                foreach(
                $_GET as $k => $v) {
                     if (
                $i 3)
                         
                $artist .= "&$k";
                     
                $i++;

                Damit dürften doch alle "&" wieder eingefangen werden...Funktioniert soweit.
                Zuletzt geändert von Sayon; 29.05.2006, 19:27.

                Kommentar


                • #9
                  http://mein.erfunden.de?ich_%26_du=%26
                  http://mein.erfunden.de?ich_%26_du

                  http://mein.erfunden.de/ich_%26_du.php

                  liefern bei mir alle das richtige (php5.1.2, Windows, nicht apache) Du musst etwas anderes falsch machen.

                  Kommentar


                  • #10
                    Original geschrieben von Sayon
                    Ich hab die Ausgabe so reinkopiert wie ich sie erhalten habe...


                    Damit dürften doch alle "&" wieder eingefangen werden...Funktioniert soweit.
                    (1) edit ist io, entsteht aus der rewrite-rule. (habe ich bis jetzt übersehen)

                    (2) der nächste Artist heisst "Liebst_Du_mich? immer noch?" dh mit Fragezeichen... und es gibt noch einige derartige, wie = und . . Falls es keine solche Gruppe gibt, wird sie per Vertippen entstehen.
                    Zuletzt geändert von muh (newbie); 29.05.2006, 19:46.

                    Kommentar


                    • #11
                      RewriteRule ^sektion/detail/(.+)/?$ index.php?k=sektion&sub=detail&artist=$1 [QSA]

                      Ich habe gerade erst die rewriterule gesehen. Falls sie erst nach dem urldecode angewandt wird?


                      Hilft %2526 für & dh ein doppeltes urlencode für den artisten bei der Ausgabe.

                      Kommentar


                      • #12
                        Falls es hilft hier die reservierten Zeichen, welche als %hh codiert werden müssen.

                        reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
                        aus http://www.ietf.org/rfc/rfc2396.txt
                        Dazu das "%" welches in dieser Liste fehlt.

                        ich vermute im Fall des OP muss urlencode(urlencode($artist)) verwendet werden,
                        weil die RewriteRule (anscheinend) decodiert und php (gemäss Manual) nochmals decodiert.

                        Kommentar


                        • #13
                          klingt logisch, werd ich morgen mal ausprobieren.

                          Kommentar


                          • #14
                            So... das doppelte Urlencoding / urldecoding ist die beste Lösung.

                            Danke für die Hilfe =)
                            Sayon

                            Kommentar

                            Lädt...
                            X