Quelle est la meilleure façon de vérifier si un formulaire a été soumis ou non pour déterminer si je dois transmettre les variables du formulaire à ma classe de validation?
J'ai d'abord pensé peut-être:
isset($_POST)
Mais cela reviendra toujours vrai car un super-global est défini partout. Je ne veux pas avoir à parcourir chaque élément de mon formulaire avec:
if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
En écrivant cette question, j'ai pensé à une solution beaucoup plus basique, ajouter un champ caché pour agir comme un drapeau que je peux vérifier.
Y a-t-il un moyen plus «plus propre» de le faire que d'ajouter mon propre drapeau?
php
forms
validation
Anonyme
la source
la source
submited
puis utiliser le phpif(isset($_POST['submited']))
ou une entrée cachée ...Réponses:
Pour vérifier en général s'il y a eu une
POST
action, utilisez:EDIT : Comme indiqué dans les commentaires, cette méthode ne fonctionnera pas dans certains cas (par exemple avec des cases à cocher et un bouton sans nom). Vous devriez vraiment utiliser:
la source
Que diriez-vous
la source
En fait, le bouton d'envoi remplit déjà cette fonction.
Essayez dans le FORMULAIRE:
Puis dans le gestionnaire PHP:
la source
if (null !== (filter_input(INPUT_POST, 'macaddress'))){
ce qui vous donne l'habitude d'utiliser filter_inputUtilisation
la source
if ($_SERVER['REQUEST_METHOD'] == 'POST')
.la source
Essaye ça
la source
Sur une note différente, il est également toujours recommandé d'ajouter un jeton à votre formulaire et de le vérifier pour vérifier si les données n'ont pas été envoyées de l'extérieur. Voici les étapes:
Générez un jeton unique (vous pouvez utiliser le hachage) Ex:
Attribuez ce jeton à une variable de session. Ex:
Ajoutez une entrée masquée pour soumettre le jeton. Ex:
puis dans le cadre de votre validation, vérifiez si le jeton soumis correspond à la var de session.
la source
J'ai eu le même problème - assurez-vous également d'ajouter
name=""
le bouton d'entrée. Eh bien, ce correctif a fonctionné pour moi.la source
Vous pouvez également utiliser:
la source
is_array($_POST)
donne toujours vrai (sur ma machine). Selon stackoverflow.com/questions/5594020/php-check-if-post-is-array :$_POST is a superglobal array which is always defined
,unless somewhere in your code you either unset or overwrite $_POST somehow
, il semble donc normal que cela retourne toujours vrai ..is_array($_POST)
n'est certainement pas le moyen de vérifier si le formulaire a été soumis.