111 votes

Si isset $_POST

J'ai un formulaire sur une page qui se soumet à une autre page. Là, il vérifie si l'entrée mail est rempli. Si c'est le cas, faites quelque chose et s'il n'est pas rempli, faites autre chose. Je ne comprends pas pourquoi il est toujours indiqué qu'il est rempli, même si j'envoie un formulaire vide. Que manque-t-il ou que se passe-t-il ?

step2.php :

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

step2_check.php :

if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {    
    echo "N0, mail is not set";
}

236voto

Forlan07 Points 3829

La plupart des entrées de formulaire sont toujours activées, même si elles ne sont pas remplies, vous devez donc également vérifier si elles sont vides.

Depuis !empty() est déjà vérifié pour les deux, vous pouvez utiliser ceci :

if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "No, mail is not set";
}

27voto

Nemoden Points 4520

Utilice !empty au lieu de isset . isset retourne vrai pour $_POST parce que $_POST Le tableau est superglobal et existe toujours (ensemble).

Ou mieux, utilisez $_SERVER['REQUEST_METHOD'] == 'POST'

5voto

janenz00 Points 1864

De php.net , isset

Retourne TRUE si var existe et a une valeur autre que NULL, FALSE sinon.

L'espace vide est considéré comme un ensemble. Vous devez utiliser empty() pour vérifier toutes les options nulles.

4voto

mboldt Points 1372

Si vous envoyez le formulaire vide, $_POST['mail'] sera toujours envoyé, mais la valeur sera vide. Pour vérifier si le champ est vide, vous devez vérifier les points suivants

if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }

2voto

Pedro Lobito Points 6794

Vous pouvez simplement utiliser :

if($_POST['username'] and $_POST['password']){
  $username = $_POST['username'];
  $password = $_POST['password'];
}

Vous pouvez également utiliser vide()

if(!empty($_POST['username']) and !empty($_POST['password'])){
  $username = $_POST['username'];
  $password = $_POST['password'];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X