php表单验证和错误消息
我正在设置此新闻稿订阅表单以与我的数据库通信,但在发送信息电子邮件之前,我只想验证它。但是,当我输入错误或空数据时,它会显示两条错误消息。我不是PHP方面的专家,但似乎缺少了一些结束括号之类的东西。。我已经摆弄了一段时间,但没有成功,所以我再次向你们寻求帮助:php表单验证和错误消息,php,forms,Php,Forms,我正在设置此新闻稿订阅表单以与我的数据库通信,但在发送信息电子邮件之前,我只想验证它。但是,当我输入错误或空数据时,它会显示两条错误消息。我不是PHP方面的专家,但似乎缺少了一些结束括号之类的东西。。我已经摆弄了一段时间,但没有成功,所以我再次向你们寻求帮助: <?php $host = "XXX"; $username = "name"; $password = "XXX"; $database = "base"; $connect = @mysql_connect($host, $us
<?php
$host = "XXX";
$username = "name";
$password = "XXX";
$database = "base";
$connect = @mysql_connect($host, $username, $password) or die (@mysql_error());
$selectdb = @mysql_select_db($database, $connect) or die (@mysql_error());
if(isset($_POST['submit'])){
$email = $_POST['email'];
if(empty($email)){
echo "Hmm, you did not anything..";
}
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address))
{
echo "This email not valid";
}
else{
@mysql_query("INSERT INTO newsletters SET email='$email'");
echo "Thanks you";
}
}
?>
谢谢 只要更换
if (!preg_match(
与
然后仅显示其中一个错误,并且当$email不为空时,将首先运行preg_匹配。您当前使用的是以下结构:
if (condition) {
}
if (condition) {
}
else (condition) {
}
将结构更改为:
if (condition) {
}
elseif (condition) {
}
else (condition) {
}
这样,只有当第一个if语句的计算结果为FALSE时,才会执行elseif语句
另外,在preg_match语句中,您使用的变量$email_address在任何地方都没有定义,据我所知
将其更改为$email:
希望这有帮助 这样使用怎么样?没有检查正则表达式:
if(empty($email)){
echo "Hmm, you did not anything..";
}
else{
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address)){
echo "This email not valid";
}
else{
@mysql_query("INSERT INTO newsletters SET email='$email'");
echo "Thanks you";
}
}
这样,它首先检查电子邮件是否插入,只有当这是真的,正则表达式才会检查它。如果已经准备好,查询将发送到mysql。您在preg\u match中写入了$email\u地址。替换为$email并将preg_match条件从ifempty$email中删除。您应该停止使用mysql_*函数。它们不推荐使用,而是使用mysqli_*或PDO。
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email))
if(empty($email)){
echo "Hmm, you did not anything..";
}
else{
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address)){
echo "This email not valid";
}
else{
@mysql_query("INSERT INTO newsletters SET email='$email'");
echo "Thanks you";
}
}