Johnnyyyy: Wie am besten URLs sicher speichern und ausgeben?

Moinsen.

Also ich möchte gerne jegliche Art von URLs speichern und auch wieder ausgeben können.
Jetzt fragt ihr euch sicher woran das scheitert.

Nunja mein Problem liegt darin das URLS unterschiedlich aufgebaut sein können. Der Umgang mit Sonderzeichen ist da das Problem

Vor allem mögliche Zeichen sind ja :_-/?= wenn ich nun mysql_real_escape_string nutze, dann werden sie doch falsch gespeichert oder?

Wie würdet ihr URLs abspeichern und wie nachher wieder ausgeben ( htmlspecialchars() ? )

Grüße, Johhnnnyy

  1. Hi,

    Also ich möchte gerne jegliche Art von URLs speichern und auch wieder ausgeben können.
    Jetzt fragt ihr euch sicher woran das scheitert.

    Nein, derzeit frage ich mich erstmal, wo Du sie speichern willst.

    Nunja mein Problem liegt darin das URLS unterschiedlich aufgebaut sein können.

    Klingt nicht sehr problematisch.

    Der Umgang mit Sonderzeichen ist da das Problem
    Vor allem mögliche Zeichen sind ja :_-/?= wenn ich nun mysql_real_escape_string nutze, dann werden sie doch falsch gespeichert oder?

    Also in eine MySQL-Datenbank, entnehme ich dem. Wenn Du dort eine URL als String (etwa VARCHAR) speicherst, dann ist sie im MySQL-Kontext nichts weiter als eine Zeichenkette, ohne jede Semantik. Sonderzeichen, die Du kontextgerecht behandeln musst, sind lediglich, wie in jedem String, den Du in einer MySQL-Datenbank speicherst, die MySQL-Sonderzeichen.

    Wenn es bei Dir nicht wie gewuenscht geklappt hat, denn wahrscheinlich entweder wegen Unstimmigkeiten der verwendeten Zeichenkodierungen oder daran, dass die URLs irgendwie maskiert vorlagen.

    Wie würdet ihr URLs abspeichern und wie nachher wieder ausgeben

    So wie jede andere Zeichenkette auch. Wo und wie willst Du sie wieder ausgeben?

    Viele Gruesse,
    der Bademeister

    1. Hi.

      Nein, derzeit frage ich mich erstmal, wo Du sie speichern willst.

      In einer MySQL Datenbank.

      »» Wie würdet ihr URLs abspeichern und wie nachher wieder ausgeben
      So wie jede andere Zeichenkette auch. Wo und wie willst Du sie wieder ausgeben?

      Als HTML im Browser.

      1. In einer MySQL Datenbank.

        Das ist eine Sache - hier bist du mit mysql_real_escape_string() richtig beraten.

        Als HTML im Browser.

        Hier musst du lediglich Zeichen gesondert behandeln, die in HTML eine spezielle Bedeutung haben - auch hier stellt PHP eine entsprechende Funktion zur verfügung.

        Ob das ein URI ist oder nicht spielt in beiden Fällen keine Rolle.

        1. Hier musst du lediglich Zeichen gesondert behandeln, die in HTML eine spezielle Bedeutung haben - auch hier stellt PHP eine entsprechende Funktion zur verfügung.

          Und zwar, um Missverstaendnisse zu vermeiden, _erst_ bei der Ausgabe. Wenn Du sie in einer Datenbank speicherst, interessiert Dich noch ueberhaupt nicht, in welchem Kontext Du den String spaeter wieder brauchst.

          Viele Gruesse,
          der Bademeister

  2. Hi,

    Vor allem mögliche Zeichen sind ja :_-/?= wenn ich nun mysql_real_escape_string nutze, dann werden sie doch falsch gespeichert oder?

    Nein, die Maskierungen, die mysql_real_escape_string vornimmt, betreffen ausschliesslich die Schnittstelle zur Datenbank.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.