[Php] Gestione dell'input con Zend Framework (post, get, etc)



Answers

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.

Question

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 ;




Links