2016-05-30 2 views
4

J'utilise toujours filter_var ($ var, FILTER, FLAG); quand j'obtiens des données de $ _GET, $ _POST et ainsi de suite, mais maintenant cette donnée est une chaîne JSON mais je n'ai trouvé aucun filtre pour assainir JSON. Quelqu'un sait comment implémenter ce filtre?Désinfecter JSON avec php

PHP filter_var(): http://php.net/manual/en/function.filter-var.php

PHP FILTRE CONST: http://php.net/manual/en/filter.filters.sanitize.php

+0

comment obtenez-vous json ?? –

+1

[json_decode] (http://php.net/manual/fr/function.json-decode.php) renvoie null si la chaîne json n'est pas valide. Ensuite, vous devriez filtrer var les propriétés contenant en fonction de ce qu'ils sont (nombre, email, etc) – JimL

Répondre

6

Parse JSON d'abord dans un tableau PHP et filtrer chaque valeur dans le tableau que vous faites avec le contenu de la demande régulière, vous pouvez mapper les clés JSON pour les filtres schématiques et les drapeaux/options

$filters = array(
    'email'=>FILTER_VALIDATE_EMAIL, 
    'url'=>FILTER_VALIDATE_URL, 
    'name'=>FILTER_SANITIZE_STRING, 
    'address'=>FILTER_SANITIZE_STRING 
); 
$options = array(
    'email'=>array(
     'flags'=>FILTER_NULL_ON_FAILURE 
    ), 
    'url'=>array(
     'flags'=>FILTER_NULL_ON_FAILURE 
    ), 
    //... and so on 
); 
$inputs = json_decode($your_json_data); 
$filtered = array(); 
foreach($inputs as $key=>$value) { 
    $filtered[$key] = filter_var($value, $filters[$key], $options[$key]); 
}