【发布时间】:2014-04-20 17:25:46
【问题描述】:
这是我的代码
<?php
$con = mysqli_connect("localhost", "root", "xxx", "s");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name = $con->real_escape_string($_POST['name']);
$username = $con->real_escape_string($_POST['username']);
$email = $con->real_escape_string($_POST['email']);
$password1 = $con->real_escape_string($_POST['pass1']);
$password2 = $con->real_escape_string($_POST['pass2']);
if (empty($name) || empty($username) || empty($email) || empty($password1) || empty($password2))
{
echo "Complete all fields";
// you can stop it here instead of putting the curly brace ALL the way at the bottom :)
return;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo $emailvalid = "Enter a valid email";
}
if (strlen($password1) <= 6)
{
echo $passlength = "Password must be at least 6 characters long";
}
// Password numbers
if (!preg_match("#[0-9]+#", $password1))
{
echo $passnum = "Password must include at least one number!";
}
if (!preg_match("#[a-zA-Z]+#", $password1))
{
echo $passletter = "Password must include at least one letter!";
}
if ($password1 <> $password2)
{
echo $passmatch = "Passwords don't match";
}
mysqli_query($con, "INSERT INTO pass (Name,Username,Email,Password) VALUES ('$name','$username','$email','$password1')");
mysqli_close($con);
?>
即使字段有效,输入也会发送到数据库。有没有办法防止这种情况发生?所以说我的密码不匹配,它仍然会将表单发送到数据库。我希望 PHP 停止这样做。有什么想法吗?
【问题讨论】:
-
单独检查每个验证,并尝试找出哪个失败。
-
将您的插入查询放在 else 中。对除第一个以外的所有其他 if 语句使用 elseif 它会像 if(condition1){}elseif(condition2)elseif(condition3)...else(插入语句)
-
另一种方法是在每个 if 语句中使用 exit。 if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo $emailvalid = "输入有效的电子邮件";exit; }
-
我该怎么做? @AmalMurali
-
@user3444414:将您的每个
if语句分开并验证它是否有效?