Existe-t-il un meilleur moyen de vérifier les variables POSTed en PHP?
-
06-07-2019 - |
Question
Je trouve dans mes pages PHP des lignes et des lignes de code ressemblant à ceci:
$my_id = isset( Je trouve dans mes pages PHP des lignes et des lignes de code ressemblant à ceci:
<*>
Existe-t-il un moyen plus efficace, plus concis ou plus lisible de vérifier ce tableau et de l'affecter à une variable locale si elle existe ou d'appliquer une valeur par défaut si ce n'est pas le cas?
EDIT: je ne souhaite pas utiliser register_globals ()
- J'aurais toujours le problème isset.
REQUEST['my_id']) ? Je trouve dans mes pages PHP des lignes et des lignes de code ressemblant à ceci:
<*>
Existe-t-il un moyen plus efficace, plus concis ou plus lisible de vérifier ce tableau et de l'affecter à une variable locale si elle existe ou d'appliquer une valeur par défaut si ce n'est pas le cas?
EDIT: je ne souhaite pas utiliser register_globals ()
- J'aurais toujours le problème isset.
REQUEST['my_id'] : '';
$another_var = isset( Je trouve dans mes pages PHP des lignes et des lignes de code ressemblant à ceci:
<*>
Existe-t-il un moyen plus efficace, plus concis ou plus lisible de vérifier ce tableau et de l'affecter à une variable locale si elle existe ou d'appliquer une valeur par défaut si ce n'est pas le cas?
EDIT: je ne souhaite pas utiliser register_globals ()
- J'aurais toujours le problème isset.
REQUEST['another_var']) ? Je trouve dans mes pages PHP des lignes et des lignes de code ressemblant à ceci:
<*>
Existe-t-il un moyen plus efficace, plus concis ou plus lisible de vérifier ce tableau et de l'affecter à une variable locale si elle existe ou d'appliquer une valeur par défaut si ce n'est pas le cas?
EDIT: je ne souhaite pas utiliser register_globals ()
- J'aurais toujours le problème isset.
REQUEST['another_var'] : 42;
...
Existe-t-il un moyen plus efficace, plus concis ou plus lisible de vérifier ce tableau et de l'affecter à une variable locale si elle existe ou d'appliquer une valeur par défaut si ce n'est pas le cas?
EDIT: je ne souhaite pas utiliser register_globals ()
- J'aurais toujours le problème isset.
La solution
Pourquoi ne pas l'envelopper dans une fonction?
<?php
function getPost($name, $default = null) {
return isset( Pourquoi ne pas l'envelopper dans une fonction?
<*>POST[$name]) ? Pourquoi ne pas l'envelopper dans une fonction?
<*>POST[$name] : $default;
}
Autres conseils
Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
class Request {
private $defaults = array();
private static Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
# get an instance of the request
$request = Request::getInstance();
# pass in defaults.
$request->setDefaults(array('name'=>'Please Specify'));
# access properties
echo $request->name;
echo $request->email;
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
instance = false;
function getInstance () {
if (!self:: Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
<*>
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
instance) {
$c = __CLASS__;
self:: Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
<*>
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
instance = new $c;
}
return self:: Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
<*>
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
instance;
}
function setDefaults($defaults) {
$this->defaults = $defaults;
}
public function __get($field) {
if (isset( Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
<*>
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
REQUEST[$field]) && !empty( Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
<*>
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
REQUEST[$field])) {
return Une meilleure méthode pourrait être de créer une classe singleton / static pour faire abstraction des détails de la vérification des données de la demande.
Quelque chose comme:
<*>
vous pouvez alors faire:
<*>
Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
REQUEST['field'];
} elseif (isset($this->defaults[$field])) {
return $this->defaults[$field];
} else {
return ''; # define a default value here.
}
}
}
vous pouvez alors faire:
<*>Je pense que cela rend vos chargements de scripts individuels plus propres et résume la validation, etc. De plus, des charges de portée avec cette conception pour l'étendre / ajouter d'autres comportements, ajouter une gestion plus complexe par défaut, etc. etc.
Tout d'abord, utilisez $ _ POST
pour les variables POSTed. $ _ REQUEST
est un mashup de nombreuses variables entrantes différentes, pas seulement $ _ POST
, et peut poser problème.
Une solution à votre question serait de créer une fonction qui gère la logique isset ()
.
function ForceIncomingValue($Key, $Default) {
if (!isset( Tout d'abord, utilisez $ _ POST
pour les variables POSTed. $ _ REQUEST
est un mashup de nombreuses variables entrantes différentes, pas seulement $ _ POST
, et peut poser problème.
Une solution à votre question serait de créer une fonction qui gère la logique isset ()
.
<*>POST[$Key]))
return $Default;
else return Tout d'abord, utilisez $ _ POST
pour les variables POSTed. $ _ REQUEST
est un mashup de nombreuses variables entrantes différentes, pas seulement $ _ POST
, et peut poser problème.
Une solution à votre question serait de créer une fonction qui gère la logique isset ()
.
<*>POST[$Key];
}
Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
function getPOST($key) {
if(isset( Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
function getPOST($key, $default = NULL) {
if(isset( Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
function getPOST($key) {
if(isset( Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
<*>
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key])) {
return Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
<*>
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key];
}
}
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key])) {
return Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
function getPOST($key) {
if(isset( Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
<*>
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key])) {
return Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
<*>
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key];
}
}
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key];
} else {
return $default;
}
}
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key])) {
return Tout d'abord, n'utilisez JAMAIS la variable $ _REQUEST, cela entraînerait des bugs et d'autres problèmes lors du développement
<*>
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>POST[$key];
}
}
notez que ce code laisse la variable vide lorsque $ _POST [$ key]
n'a pas été défini
vous pouvez également adapter ce code pour vous permettre de vous fournir un défaut (raisonnable) lorsque la valeur ne peut pas être chargée.
<*>L'ensemble de variables que vous attendez est-il connu au moment de l'écriture du script ou souhaitez-vous le faire pour un ensemble de valeurs arbitraire? Si l'ancien est vrai, vous pouvez faire quelque chose comme ceci:
# This array would hold the names of all the variables you're expecting
# and a default value for that variable name
$variableNames = array (...);
foreach ($variableNames as $key => $default) {
if (isset ( L'ensemble de variables que vous attendez est-il connu au moment de l'écriture du script ou souhaitez-vous le faire pour un ensemble de valeurs arbitraire? Si l'ancien est vrai, vous pouvez faire quelque chose comme ceci:
<*>
En gros, cela tire parti de la capacité de PHP à évaluer des variables pour créer d'autres variables (d'où le double dollar pour la clé $$ - cela signifie créer une nouvelle variable dont le nom est la valeur de la clé $ key).
Je n'ai pas encore trouvé de bonne solution à cette dernière situation.
REQUEST[$key])) $key = L'ensemble de variables que vous attendez est-il connu au moment de l'écriture du script ou souhaitez-vous le faire pour un ensemble de valeurs arbitraire? Si l'ancien est vrai, vous pouvez faire quelque chose comme ceci:
<*>
En gros, cela tire parti de la capacité de PHP à évaluer des variables pour créer d'autres variables (d'où le double dollar pour la clé $$ - cela signifie créer une nouvelle variable dont le nom est la valeur de la clé $ key).
Je n'ai pas encore trouvé de bonne solution à cette dernière situation.
REQUEST[$key];
else $key = $default;
}
En gros, cela tire parti de la capacité de PHP à évaluer des variables pour créer d'autres variables (d'où le double dollar pour la clé $$ - cela signifie créer une nouvelle variable dont le nom est la valeur de la clé $ key).
Je n'ai pas encore trouvé de bonne solution à cette dernière situation.
PHP null opérateur de coalescence !
$ username = $ _GET ['user'] ?? 'personne';
Pour un grand nombre de variables, avec vérification des exigences, toute personne est libre d'utiliser mon expect
fonction .