web-dev-qa-db-fra.com

Si isset $ _POST

J'ai un formulaire sur une page qui soumet à une autre page. Là, il vérifie si le courrier d'entrée est rempli. Si c'est le cas, faites quelque chose et si ce n'est pas rempli, faites autre chose. Je ne comprends pas pourquoi il est toujours dit que c'est défini, même si j'envoie un formulaire vide. Qu'est-ce qui manque ou qui ne va pas?

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:

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

Changez-le en ceci:

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

Donc, $_POST est toujours défini, mais son contenu peut être vide.

Puisque !empty() vérifie déjà si la valeur est définie, vous pouvez également utiliser cette version:

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

Utilisez !empty au lieu de isset. isset renvoie la valeur true pour $_POST car le tableau $_POST est superglobal et existe toujours (défini).

Ou mieux utiliser $_SERVER['REQUEST_METHOD'] == 'POST'

22
Nemoden

à partir 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 défini. Vous devez utiliser empty () pour vérifier toutes les options NULL.

5
janenz00

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

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

Ajoutez l'attribut suivant au formulaire de saisie: required="required". Si le formulaire n'est pas rempli, cela ne permettra pas à l'utilisateur de le soumettre.

Votre nouveau code sera:

<form name="new user" method="post" action="step2_check.php"> 
<input type="text" name="mail" required="required"/> <br />
<input type="password" name="password" required="required"/><br />
<input type="submit"  value="continue"/>
if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
}
2
Kushan Mehta

Vous pouvez simplement utiliser:

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

Sinon, utilisez empty ()

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

Utilisez !empty() au lieu de isset(). Parce que isset() retournera toujours vrai dans votre cas.

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

Peut-être que vous pouvez essayer celui-ci:

if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }

1
Nica
<?php
    if(isset($_POST['mail']) && $_POST['mail']!='') {
        echo "Yes, mail is set";
    }else{
        echo "N0, mail is not set";
    }
?>
1
Asep Nurjaman

Permet de penser que ceci est votre formulaire HTML dans step2.php

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>

Je pense que vous en avez besoin pour votre base de données, afin que vous puissiez affecter votre valeur de formulaire HTML à php variable, vous pouvez maintenant utiliser Real Escape String et en dessous doit être votre

step2_check.php

if(isset($_POST['mail']) && !empty($_POST['mail']))
{
$mail = mysqli_real_escape_string($db, $_POST['mail']);
}

Où $ db est votre connexion à la base de données.

0
AleksAnderson IT

Tu peux essayer,

 <?php

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

Vous pouvez essayer ceci:

if (isset($_POST["mail"]) !== false) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
0
akash ujjwal

Répondre à la question postée: isset et vide ensemble donne trois conditions. Cela peut aussi être utilisé par Javascript avec une commande ajax.

$errMess="Didn't test";   // This message should not show
if(isset($_POST["foo"])){ // does it exist or not
    $foo = $_POST["foo"]; // save $foo from POST made by HTTP request
    if(empty($foo)){      // exist but it's null
        $errMess="Empty"; // #1 Nothing in $foo it's emtpy

    } else {              // exist and has data
        $errMess="None";  // #2 Something in $foo use it now
      }
} else {                  // couldn't find ?foo=dataHere
     $errMess="Missing";  // #3 There's no foo in request data
  }

echo "Was there a problem: ".$errMess."!";
0
Vinnarian
<form name="new user" method="post" action="step2_check.php"> 
  <input type="text" name="mail" required="required"/> <br />
  <input type="password" name="password" required="required"/><br />
  <input type="submit"  value="continue"/>
</form>

<?php
if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
?>
0
Thilina