我想验证用户是否在输入标记中输入了内容:
这是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()函数的条件不起作用......当我测试这个时,&#34;电子邮件已添加&#34;即使我没有写任何内容并且数据库中添加了空白值,也会显示。当有人什么都不写的时候,我想要显示&#34;输入内容&#34;并且不执行查询。我搜索了几个小时,无法解决这个问题...谢谢你的进步!
答案 0 :(得分:1)
您没有验证输入。您只是测试值是否存在。它是,_POST将具有电子邮件字段,具有空值。为了验证它,代码应该是:
if(!empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$req....
} else {
echo "No valid email provided";
}
希望有所帮助。
答案 1 :(得分:0)
那是因为isset
会检查变量是否已设置且不是null
。
当您在不键入电子邮件的情况下发送表单时,$_POST['email']
将包含空字符串,因此isset
将返回true
。
您必须使用empty
(或检查长度),并且最好另外检查电子邮件的格式是否正确。