7
votes

Y a-t-il un meilleur moyen de vérifier les variables postées dans PHP?

Je trouve dans mes pages php, je me retrouve avec des lignes et des lignes de code qui ressemblent à ceci: xxx

existe une meilleure façon de vérifier ce tableau et attribuez-les à une variable locale s'ils existent ou appliquent une valeur par défaut si elles ne le font pas?

EDIT: Je ne veux pas utiliser register_globals () - je toujours le problème d'émetteur quand même.


6 commentaires

Pas assez de représentant pour voter encore, mais j'aime ces réponses!


Wow, quelqu'un est bowevote heureux ici. Ce qui donne?


Je suis avec Brian ici, quelqu'un vole sur les bowvotes. Il y a beaucoup de suggestions parfaitement bonnes ici, bien que certes, la mienne est un peu plus handicapée que de l'envelopper dans une fonction, bien que l'OP a pour effet d'écrire moins de code.


Oui, je ne suis pas sûr de ce qui se passe avec les votes en bas. J'ai senti que j'ai résolu le problème des babycakes de la manière dont il a demandé.


Ils auraient dû au moins laisser un commentaire ..


J'ai fini par supprimer la mine ... 2 Downvotes presque instantanément, mais pas de commentaires ..


6 Réponses :


4
votes

Une meilleure méthode peut être de créer une classe singleton / statique à abstrait des détails de la vérification des données de la demande.

Quelque chose comme: p> xxx pré>

Vous pouvez alors FAIRE: P>

# 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;


2 commentaires

Un exemple de la façon dont cela fonctionnerait? Il semble que cela viendrait obscurcir ce qui se passe. Peut-être que je ne suis pas suivi ...


J'aime ça après tout - :-)



1
votes

est l'ensemble de variables que vous attendez connaître au moment de l'écriture du script ou souhaitez-vous le faire pour un ensemble arbitraire de valeurs? Si le premier 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 ($_REQUEST[$key])) $$key = $_REQUEST[$key];
    else $$key = $default;
}


0 commentaires

6
votes

Pourquoi ne pas l'envelopper dans une fonction? XXX


2 commentaires

J'aime celui-ci mais ma limite de vote quotidienne est atteinte. J'étais en train d'écrire la même réponse.


La seule chose que je changerais est le nom de la fonction, à quelque chose de plus court. Je pense que post () sonne bien.



2
votes

Tout d'abord, utilisez $ _ POST pour les variables publiées. _ demande est un mashup de nombreuses variables entrantes différentes, pas seulement £ _ POST et pourrait causer des problèmes.

Une solution pour votre question serait de créer une fonction qui traite une fonction qui gère la logique isset () xxx


3 commentaires

ouais, parfois j'utilise obtenir, parfois poster, donc je viens d'utiliser _request


Encore une fois, _Request ne peut pas être approuvé car il inclut également les données _Cookie. Voir la documentation: php.net/request


intéressant, je ne savais pas que



2
votes

Tout d'abord, n'utilisez jamais la variable $ _Request, cela donnera des bugs et d'autres problèmes pendant le développement xxx pré>

notez que ce code laisse la variable vide lorsque $ _post [$ clé ] n'a pas été défini p>

Vous pouvez également adapter ce code pour vous permettre de vous fournir une valeur par défaut (sensible) lorsque la valeur n'a pas pu être chargée. P>

function getPOST($key, $default = NULL) {
    if(isset($_POST[$key])) {
        return $_POST[$key];
    } else {
        return $default;
    }
}


1 commentaires

Nous avons utilisé la demande partout depuis des années et je n'ai vu aucun problème. Bien que nous n'utilisions pas de cookies ... peut-être que cela a quelque chose à voir avec ça.



0
votes

null opérateur coalescent !

$ nom d'utilisateur = $ _GET ['' utilisateur '] ?? 'personne';

Pour beaucoup de variables, avec une vérification requise, tout le monde est libre d'utiliser mon attendre < / code> fonction .


0 commentaires