我的条件不起作用(准备好的查询和 POST 方法 + isset 函数)

My condition is not working(prepared query and POST method + isset function)

我想验证用户是否在输入标签中输入了某些内容:

这是 index.php 页面:

<form action="email_validation.php" method="post">
    <p>
     Enter email :  <input type="text" name="email" id="email" /><br />
    <input type="submit" value="Envoyer" />
</p>
</form>

和 email_validation.php :

 if(isset($_POST['email']))
 {
    $req = $bdd->prepare('INSERT INTO newsletter(email) VALUES(:email)');
    $req->execute(array(
    'email' => $entree = $_POST['email']
));

echo 'Email added';
}
else
{
    echo 'Enter something';
}

我的 isset() 函数条件似乎不起作用...当我测试这个时,显示 "Email added" 即使我没有写任何东西并且添加了一个空白值数据库。当有人什么都不写时,我想显示 "Enter something" 并且不执行查询。我搜索了几个小时,但无法解决这个问题……提前致谢!

那是因为 isset 将检查变量是否已设置并且不是 null

如果您不输入电子邮件就发送表单,$_POST['email'] 将包含空字符串,因此 isset 将 return true.

您必须为此使用 empty(或检查长度),另外检查电子邮件格式是否正确也是个好主意。

您没有验证 输入。您只是在测试该值是否存在。事实上,_POST 将包含 email 字段,值为空。为了验证它,代码应该是:

if(!empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    $req....
} else {
    echo "No valid email provided";
}

希望对您有所帮助。