我想验证用户是否在输入标签中输入了一些内容:
这里是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()函数不工作…当我测试这一点时,即使我没有写任何东西,也会显示"添加的电子邮件",并向数据库添加一个空白值。当有人什么也没写时,我想显示"输入一些东西",不执行查询。我搜索了几个小时,还是无法解决这个问题……谢谢预支!
您没有验证输入。你只是在测试这个值是否存在。确实如此,_POST将有一个空值的email字段。为了验证它,代码应该是:
if(!empty($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$req....
} else {
echo "No valid email provided";
}
希望对你有帮助。
这是因为isset
将检查变量是否设置,而不是null
。
当您发送表单而不键入email时,$_POST['email']
将包含空字符串,因此isset
将返回true
。
你必须使用empty
(或检查长度),另外检查电子邮件的格式是否正确也是个好主意。