2010-09-07 5 views
1

Je veux désinfecter des données dans cakephp mais je suis confronté à un problème. J'ai un formulaire avec un champ de date. Lorsque j'ai essayé de sanities toutes les données la date desserre son format MySQL et est stocké dans la base de données en tant que déchets (1970-01-01) mais si je l'enlève Désinfectez fonctionne très bienDésinfecter les données dans cakephp

j'ai essayé la

suivante
function beforeSave() 
    { 
     $this->data = Sanitize::clean($this->data); 
     return true; 
    } 

J'ai aussi essayé ceci et cela fonctionne, mais il vainc le but

function beforeSave() 
{ 

    $date = $this->data['Cabinet']['date_of_inspection'];   
    $this->data = Sanitize::clean($this->data); 
    $this->data['Cabinet']['date_of_inspection'] = $date; 
    return true; 
} 

ce qui est la sortie

+0

Juste le valider? –

Répondre

1

$this->data = Sanitize::clean($this->data, array('encode' => false) résolu le problème. je suis d'accord avec ce que dit Jamal Aziz/Cakephp

7

De CakePHP Manual:

CakePHP vous protège déjà contre Injection SQL si vous utilisez ORM méthodes de CakePHP (comme find() et save()) et la notation de tableau appropriée (ie. array ('field' => $ value)) au lieu de SQL brut. Pour désinfection contre XSS il est généralement préférable d'enregistrer HTML brut dans la base de données sans modification et assainir au moment de sortie/affichage.Sortie/affichage.

+0

Le lien ne semble plus fonctionner. Avez-vous un lien mis à jour? Ce conseil s'applique-t-il toujours aux versions actuelles de Cake? – Mansiemans

+0

Document mis à jour: http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html – trante

Questions connexes