If isset $_POST

Minulla on yhdellä sivulla lomake, joka lähettää toiselle sivulle. Siellä se tarkistaa, onko syötetty posti täytetty. Jos on, niin tehdään jotain, ja jos se ei ole täytetty, niin tehdään jotain muuta. En ymmärrä, miksi se sanoo aina, että se on asetettu, vaikka lähetän tyhjän lomakkeen. Mikä puuttuu tai on väärin?

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";
}
Ratkaisu

Useimmat lomakkeen syötteet asetetaan aina, vaikka niitä ei täytettäisikään, joten myös tyhjyys on tarkistettava.

Koska !empty() tarkistaa jo molemmat, voit käyttää tätä:

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

Käytä !empty sijasta isset. isset palauttaa true arvolle $_POST, koska $_POST-joukko on superglobaali ja aina olemassa (asetettu).

Tai parempi käyttää $_SERVER['REQUEST_METHOD'] == 'POST'.

Kommentit (5)

Jos lähetät lomakkeen tyhjänä, $_POST['mail'] lähetetään silti, mutta arvo on tyhjä. Tarkistaaksesi, onko kenttä tyhjä, sinun on tarkistettava, että

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