Ankündigung

Einklappen
Keine Ankündigung bisher.

Syntaxfehler bei JSON Decodierung, wenn filter_input_array genutzt wird

Einklappen

Neue Werbung 2019

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

  • Syntaxfehler bei JSON Decodierung, wenn filter_input_array genutzt wird

    Hallo zusammen,

    ich hoffe ihr könnt mir weiterhelfen.

    Per Post bekomme ich einen Json String den ich mit filter_input_array und dem Paramter FILTER_SANITIZE_SPECIAL_CHARS filtere. Dadurch erhalte ich von json_decode aber nur den Rückgabewert NULL. Stelle ich den Paramter auf unsafe_raw um funktioniert json_decode.

    Da ich es mir nicht erklären konnte, habe ich mit bin2hex die ersten paar Zeichen ins binäre übersetzten lassen und war überrascht das sich die Zeichenketten wirklich unterscheiden.

    unsafe_raw:
    [["20","E-Mail-Adresse","Test","2017-03-07","13:32:57","0"]]
    5b5b223230222c22612e616c69717565744043757261626974

    FILTER_SANITIZE_SPECIAL_CHARS:
    [["20","E-Mail-Adresse","Test","2017-03-07","13:32:57","0"]]
    5b5b262333343b3230262333343b2c262333343b612e616c69 717


    Der erste Binärcode scheint noch UTF-8 zu sein. (5b = [, 5b = [, 22 = ", 32 = 2, ....) Aber was ist der zweite Binärcode? 5b5b passt ja noch aber dann 26 für die Zahl 2?

    Könnt ihr mir erklären was filter_input_array mit dem String macht und wie ich das verhindern kann?

    Vielen Dank im Voraus.

    Grüße
    Patrick

  • #2
    26 ist ein Ampersand. Das Flag macht halt HTML Ersetzungen (siehe Link), die Quotes werden zu HTML Entities.

    http://de2.php.net/manual/en/filter....s.sanitize.php
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Es ist bei json besser den String erst mal mit json_decode in ein Array zu parsen und das Array anschliessend entsprechend seiner Daten zu validieren.

      Kommentar


      • #4
        Danke schön. Doch so einfach. Ich hatte die Ersetzung schon in verdacht. Da aber der String für mich aber keine solcher Zeichen enthalten hat, hatte ich den Gedanken wieder verworfen. Dann werde ich die Prüfung später einbauen.

        Kommentar

        Lädt...
        X