Shaguar: Sonderzeichen in Adresse

Moin zusammen,

ich möchte mit Ajax einen kompletten MySQL Befehl an eine php Datei übergeben.
Zb wenn ich folgenden String übergeben möchte :
SELECT * FROM db WHERE value LIKE '%13%'
Bei der PHP Datei kommt dann leider immer nur das hier an :
.... WHERE title LIKE '%'
Muss ich irgendwas beachten beim abschicken mit Javascript oder beim empfangen mit PHP ? hab schon alle möglich Sachen probiert (URIEncode,URLDecode,mysql_escape_string,...
Kann mir da irgendjemand einen Tipp geben?
Mfg

  1. Hi,

    ich möchte mit Ajax einen kompletten MySQL Befehl an eine php Datei übergeben.

    tja. Wenn Du dies tust, kann jeder Hinz und Kunz jeden beliebigen SQL-Befehl an Dein Script übergeben, also z.B. ein 'DELETE FROM db' oder 'SELECT * FROM passwords'.

    Muss ich irgendwas beachten beim abschicken mit Javascript oder beim empfangen mit PHP ?

    Nein. Du musst was beachten beim Einbringen von Werten in Kontexte: Sie müssen kontextspezifisch kodiert werden.

    hab schon alle möglich Sachen probiert (URIEncode,URLDecode,mysql_escape_string,...

    Nicht probieren. Gezielt rangehen.

    Kann mir da irgendjemand einen Tipp geben?

    Überlege Dir, wann Du einen Wert in einen Kontext bringst. Dann und *genau* dann kodiere ihn.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    Zb wenn ich folgenden String übergeben möchte :
    SELECT * FROM db WHERE value LIKE '%13%'
    Bei der PHP Datei kommt dann leider immer nur das hier an :
    .... WHERE title LIKE '%'

    nun ja, Steuerzeichen in der URL zu übergeben ist auch nicht gerade fein. Und wenn du die Request-URL PHP-seitig noch einmal genau untersuchst, stellst du wahrscheinlich fest, dass das Ctrl-S, das du im URL-String übergibst, immer noch da ist. Nur ist es eben kein druckbares Zeichen und wird daher bei Kontrollausgaben leicht übersehen bzw. gar nicht erst ausgegeben.

    Muss ich irgendwas beachten beim abschicken mit Javascript oder beim empfangen mit PHP ?

    Weder Javascript noch PHP haben etwas mit dem Problem zu tun; es geht hier nur um die korrekte Codierung von reservierten Zeichen in der URL. Das Prozentzeichen hat in URLs eine Sonderbedeutung: Es dient als Präfix für Zeichen, die als hexadezimale Zeichencodes übergeben werden. Um ein Prozentzeichen "wörtlich" zu übergeben, musst du es daher mit seiner eigenen Sonderschreibweise formulieren, also %25.

    hab schon alle möglich Sachen probiert (URIEncode,URLDecode,mysql_escape_string,...

    Aber wahrscheinlich in deinem PHP-Script. Das ist die falsche Stelle, da ist das Kind schon in den Brunnen gefallen. Aber encodeURI() sollte genau das leisten, was du brauchst.

    Schönen Sonntag noch,
     Martin

    --
    Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.
      (Henry Ford, amerikanischer Industriepionier)
    1. Moin!

      Aber encodeURI() sollte genau das leisten, was du brauchst.

      encodeURI läßt z.B. &-Zeichen unbehandelt, das ist für URL-Parameter ganz schlecht, weil die als Trenner der Parameter dienen.

      Dann doch lieber encodeURIComponent(), da ist das Zeichen (und noch einige andere) mit drin.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."