Compensation _POST tableau pleinement
Je veux effacer $_POST tableau contenu entièrement, tous les exemples de ce que je vois sur internet, ressemble à ceci:
if (count($_POST) > 0) {
foreach ($_POST as $k=>$v) {
unset($_POST[$k]);
}
}
Dire s'il vous plaît, cette variante sera pas mieux? (Point de vue de l'économie des ressources)
if (count($_POST) > 0) {
$_POST = array();
}
ou pas ?
- Pourquoi voudriez-vous vide
$_POST
? - Vous n'avez même pas besoin
count
.$_POST = array();
et vous êtes tous ensemble. - Après la première fois à l'aide des données POST, j'ai besoin de savoir qu'ils
- Si vous avez besoin de changer les valeurs de
$_POST
vous faites quelque chose de mal. - vous n'avez même pas besoin d'écrire condtion. simple $_POST = array(); déclaration.
$_POST
est accessible en écriture qui est une sorte de stupide, il peut faire sens pour la désactiver si vous utilisez une interface comme une classe à la lecture du mode d'entrée.- Pourquoi est-il judicieux de les effacer?
- Pourquoi voulez-vous effacer
$_POST
en premier lieu? Il ne fait aucun sens du tout. Ne pas poster quoi que ce soit à la page suivante que. - Assurez-vous que votre interface est exclusivement utilisé.
- Je pense que vous ne devriez pas créer une classe qui utilise directement $_POST toute façon, alors...
- Ne sonne pas très convainquant. Si vous ne voulez pas toucher
$_POST
puis il suffit de ne pas. - Il y a peut être d'autres motivations par l'OP, mais c'est réaliste que j'ai utilisée et, pour être honnête, a été très friands de. c'est agréable d'être certains de choses, comme des données POST est XSS gratuit ou les touches sont "sûrs" (la classe peut désinfecter ensuite vider les données post, juste un exemple).
- J'clair
$_POST
aswell. C'est une question d'encapsulation; compensation$_POST
après que vous avez utilisé, il n'assure aucune autre partie de l'application a accès; sinon un bug aléatoire n'importe où, peut exposer potentiellement critique des données dans$_POST
. - Un autre truc génial est le paramètre $_POST manuellement par l'analyse de
php://input
, dans le cas, par exemple, vous ne voulez pas avoir affaire avec la bête "bracket[]
les noms de champ sont des tableaux de chose" et l'utilisation de dupliquer les touches d'entrée comme le reste de la non-programmation PHP monde est capable de. Dans ce cas, je voudrais juste POSTER comme la première étape avant de repeupler il. - N'oubliez pas que
POST
les données peuvent également être trouvés dans$_REQUEST
- $_POST données sont également accessibles via le haut-dans les fonctions de filtrage, comme ceci: filter_input(INPUT_POST,'var_int',FILTER_VALIDATE_INT) Même après effacement de l' $_POST tableau, les codeurs peuvent toujours accéder à l'entrée de cette façon!
Vous devez vous connecter pour publier un commentaire.
Oui, c'est très bien.
$_POST
est juste une autre variable, sauf qu'il y a (super)portée mondiale....sera tout à fait suffisant. La boucle est inutile. Il est probablement préférable de le garder comme un tableau plutôt que de les annuler, en cas d'autres fichiers sont de la tentative de lecture et en supposant que c'est un tableau.
Pour annuler les
$_POST
variable, redeclare un tableau vide:Les solutions jusqu'à présent ne fonctionnent pas parce que le POST de données est stockée dans les en-têtes. Une redirection permet de résoudre ce problème selon ce post.
Comment faire pour supprimer $_POST variable en appuyant sur bouton "Actualiser" du navigateur avec PHP?
Il peut sembler être trop difficile, mais vous êtes probablement mieux d'en désactiver un élément à la fois, plutôt que de l'ensemble $_POST tableau. Voici pourquoi: Si vous êtes en utilisant la programmation orientée objet, vous pouvez avoir une classe utiliser $_POST['alpha'] et une autre classe utiliser $_POST['beta'], et si vous enlevez de la matrice après la première utilisation, il annule son utilisation dans d'autres classes. Pour être en sécurité et ne pas se tirer dans le pied, il suffit de le déposer dans une petite méthode qui permettra de débloquer des éléments que vous venez d'utiliser, Par exemple:
Il suffit d'appeler la méthode et unset seulement ceux superglobale éléments qui ont été transmis à une variable ou d'un argument. Ensuite, les autres classes qui peuvent avoir besoin d'une superglobale élément peut encore les utiliser.
Vous pouvez utiliser une combinaison des deux
unset()
et initialisation:Ou en une seule instruction:
Mais quelle est la raison pour laquelle vous voulez faire cela?
unset
à tous.RangeException
si un contrôle a plus de caractères que permis. On peut encore utiliser $_POST pour obtenir le nombre de contrôles soumis.unset
et un tableau vide. Simplement faire le plus tard est assez clair.Pour répondre à "pourquoi" quelqu'un pourrait l'utiliser, j'ai été tenté de l'utiliser car j'ai eu le $_POST valeurs stockées après le rafraichissement de la page ou en allant d'une page à l'autre. Mes sens me dit que c'est pas une bonne pratique, mais ça marche quand même.