php Gestione dell'input con Zend Framework (post, get, etc)
Estendere la risposta di Brian.
Come hai notato puoi anche controllare $this->_request->getPost()
e $this->_request->getQuery()
. Se si generalizza su getParams()
, è un po 'come utilizzare $_REQUEST
e non penso che sia accettabile in termini di sicurezza.
Oltre a Zend_Filter, puoi anche utilizzare il semplice PHP per eseguire il cast richiesto.
Per esempio:
$id = (int) $this->_request->getQuery('id');
Per altri valori, diventa più complicato, quindi assicurati di citare ad es. $db->quoteIdentifier()
query DB ( Zend_Db , vedere la citazione degli identificatori, $db->quoteIdentifier()
) e nelle viste usare $this->escape($var);
per sfuggire al contenuto.
im re-factoring php su zend code e tutto il codice è pieno di $_GET["this"]
e $_POST["that"]
. Ho sempre usato il più phpish $this->_request->getPost('this')
e $this->_request->getQuery('that')
(questo non è tanto logico con il getquery invece di getGet).
Quindi mi chiedevo se il mio metodo fosse più sicuro / migliore / più facile da mantenere. Ho letto nella documentazione di Zend Framework che devi convalidare il tuo input dato che l'oggetto request non lo farà.
Questo mi lascia con 2 domande:
- Qual è il migliore di questo due? (o se c'è un altro modo migliore)
- Qual è la migliore pratica per validare l'input php con questi metodi?
Grazie!
$dataGet = $this->getRequest()->getParam('id',null);
$valid = new Zend_Validate_Digits();
if( isset($dataGet) && $valid->isValid($dataGet) ){
// do some...
} else{
// not set
}
non direttamente correlato all'argomento, ma per assicurarti di ottenere un numero nel tuo input, potresti anche usare $ var + 0 (comunque se $ var è un float rimane un float) che puoi usare nella maggior parte dei casi $ id = $ questo -> _ request-> getQuery ('id') +0 ;