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

时间:2015-09-07 20:03:59

标签: php mysql isset

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

这是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;并且不执行查询。我搜索了几个小时,无法解决这个问题...谢谢你的进步!

2 个答案:

答案 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(或检查长度),并且最好另外检查电子邮件的格式是否正确。