Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] "urlencode" von base64 codierten strings

Einklappen

Neue Werbung 2019

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

  • [Erledigt] "urlencode" von base64 codierten strings

    Hallo,

    in einem meiner Scripte verwende ich ein base64 codierten string als URL-Parameter; das hat zur Folge, daß der string im Script dekodiert erscheint (also alle + als Leerzeichen). Nun die Frage: gibt es außer str_replace() noch andere Möglichkeiten, den Originalstring zu erhalten? (habe schon herausgefunden, daß urlencode() nichts bringt, da das = dann codiert wird).

    Dormi


  • #2
    [MAN]preg_replace[/MAN] und natürlich manuell:
    PHP-Code:
    for ($i 0$i strlen($string); ++$i) {
        if (
    $string[$i] == ' ') {
                
    $string[$i] = '+';
        }

    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

    Kommentar


    • #3
      Nun die Frage: gibt es außer str_replace() noch andere Möglichkeiten, den Originalstring zu erhalten? (habe schon herausgefunden, daß urlencode() nichts bringt, da das = dann codiert wird).
      Erhalten woher? Echte Base64-Codierung müsste im Prinzip ja originale "+" auch codieren.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Verstehe nicht so ganz was du machen willst, aber wenn du den Counterpart zur Kodierung nimmst (urlencode - urldecode, rawurlencode - rawurldecode, ...), solltest du doch locker wieder ans Original kommen.
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          Ich bin mir auch nicht sicher, was du genau willst aber es klingt als würdest du url_encode nicht bei der Erzeugung der URL auf den Parameter (macht %2B aus + und im nächsten Skript hast Du wieder dein +) sondern mit dem übergebenen und zu dem Zeitpunkt schon falsch interpretierten Parameter anwenden. Das wäre natürlich Unsinn.
          @fschmengler - @fschmengler - @schmengler
          PHP Blog - Magento Entwicklung - CSS Ribbon Generator

          Kommentar


          • #6
            Zitat von Chriz Beitrag anzeigen
            Verstehe nicht so ganz was du machen willst, aber wenn du den Counterpart zur Kodierung nimmst (urlencode - urldecode, rawurlencode - rawurldecode, ...), solltest du doch locker wieder ans Original kommen.
            eben nicht, ich bekomme zwar wieder das +, aber das = wird zu %3D kodiert

            Kommentar


            • #7
              also um’s nochmal am Beispiel zu erklären. ich habe folgende URL:
              Code:
              script.php?uid=iMxMQZeDh+aZlSkYsGPpDHfLjkWxUnun6+niBQr5Wf1dIfwpjov3YXCaGAWNIQWLC7s=
              (wie man sich denken könnte, ist das ein unique identifyer in einer DB)

              versuche ich den mittels $_GET['uid'] abzurufen, werden die + automatisch durch Leerzeichen ersetzt (sh. Manual), ich brauche aber wieder die +, weswegen ich derzeit mit str_replace() arbeite …

              ansonsten bliebe dann eben, den string vorher (d.h. an einer ganz anderen Stelle) zu kodieren was gar nicht so leicht ist, da ich keinen direkten Zugriff auf den String habe … (Stichwort: Template)

              Kommentar


              • #8
                Kodieren:
                PHP-Code:
                urlencode(base64_encode($data)); 
                Dekodieren:
                PHP-Code:
                base64_decode(urldecode($data)); 
                Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

                Kommentar


                • #9
                  warum sollte ich meine UIDs in der DB URL-kodieren?

                  Kommentar


                  • #10
                    Zum Transport per URL - nicht für die DB...
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Zitat von Dormilich Beitrag anzeigen
                      also um’s nochmal am Beispiel zu erklären. ich habe folgende URL:
                      Code:
                      script.php?uid=iMxMQZeDh+aZlSkYsGPpDHfLjkWxUnun6+niBQr5Wf1dIfwpjov3YXCaGAWNIQWLC7s=
                      (wie man sich denken könnte, ist das ein unique identifyer in einer DB)
                      Okay, wie ich vermutet habe, ist die URL eben nicht kodiert, im Nachhinein hilft da auch kein urlencode oder urldecode.

                      Zitat von Dormilich Beitrag anzeigen
                      versuche ich den mittels $_GET['uid'] abzurufen, werden die + automatisch durch Leerzeichen ersetzt (sh. Manual), ich brauche aber wieder die +, weswegen ich derzeit mit str_replace() arbeite …
                      Wenn du an der URL nichts drehen kannst, bleibt dir wohl auch nichts anderes übrig. Das ist aber nicht zu empfehlen, mit + geht das noch gut, bei = kann es schon Probleme geben.

                      Zitat von Dormilich Beitrag anzeigen
                      ansonsten bliebe dann eben, den string vorher (d.h. an einer ganz anderen Stelle) zu kodieren was gar nicht so leicht ist, da ich keinen direkten Zugriff auf den String habe … (Stichwort: Template)
                      Richtig. Irgendwo wird die URL ja generiert und da liegt der Fehler. Wenn du da keinen Zugriff drauf hast dann muss eben derjenige der für den Mist verantwortlich ist, sich darum kümmern.
                      @fschmengler - @fschmengler - @schmengler
                      PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                      Kommentar


                      • #12
                        dazu müßte ich mich überwinden, meine Decoratorklasse zu ändern …

                        Kommentar


                        • #13
                          Dann tu das doch, wenn es um einen Dekorator für Links geht, stünde ihm ein urlencode() ohnehin sehr gut
                          @fschmengler - @fschmengler - @schmengler
                          PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                          Kommentar


                          • #14
                            es ist aber ein Dekorator für eine ganze E-Mail. das urlencode() ergäbe daher nur Sinn, wenn die UID ausschließlich in Links verwendet würde (was zwar derzeit der Fall ist, aber wer weiß, was die Zukunft bringt …)

                            alternativ müßte ich dann mit den Decorator den kompletten Link erstellen, was aber auch nicht geht* (der Scriptname hat mit der DB nix zu tun)

                            * - also _irgendwie_ krieg ich das schon hin …

                            Kommentar


                            • #15
                              Anders geht es nunmal nicht. Du kannst nicht in einem Zeichenraum zwei verschiedene Bedeutungen über ein Zeichen kodieren. Das unkodierte + ist in URLs nunmal für Leerzeichen reserviert. Schluss Ende.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X