PHP表单验证无法正常工作
我的页面上有一个注册脚本,它的处理方式如下:PHP表单验证无法正常工作,php,registration,Php,Registration,我的页面上有一个注册脚本,它的处理方式如下: <?php include "inc/config.php"; $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $email = $_POST['email']; $pass = $_POST['pass']; $conditions = $_POST['conditions'];
<?php
include "inc/config.php";
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$pass = $_POST['pass'];
$conditions = $_POST['conditions'];
if($firstname==""||$lastname==""||$email==""||$pass==""||$conditions==""){
echo "
<p>Tiedoissa oli puutteita :(</p>
<ul>";
if($firstname == ""){
echo "<li>Etunimi puuttuu.</li>";
}
if($lastname == ""){
echo "<li>Sukunimi puuttuu. </li>";
}
if($email == ""){
echo "<li>Sähköposti puuttuu. </li>";
}
if($pass == ""){
echo "<li>Salasana puuttuu. </li>";
}
if($conditions == ""){
echo "<li>Luitko ehdot? </li>";
}
echo "</ul>";
return false;
}
$rq = "INSERT INTO Users (Firstname,Lastname,Email,Password) VALUES ($firstname,$lastname,$email,$pass)";
if(!mysqli_query($dblink,$rq)){
echo "Rekisteröityminen epäonnistui tuntemattomasta syystä! :(";
}
else{
echo "Rekisteröinti onnistui!<br>
Käyttäjätunnuksesi on <strong>$email</strong> ja salasanasi on <strong>$pass</strong>.<br>
Voit nyt kirjautua sisään.
";
}
?>
由于您的代码不在函数中,因此返回false未按预期工作,下面的代码继续执行。你的比较可能已经很好了。更改返回false到死亡()强> 好的,这可能就是问题所在
if($firstname=="" || $lastname=="" || $email=="" || $pass=="" || $conditions==""){
你正在进行检查,即使你没有提交表单,而且看起来好像所有东西都有错误,检查仍然有效。因此,您只需要在提交表单时进行比较,而不需要在正常加载时进行比较。因此,将您的php代码包装在一些isset上,比如
if(isset($_POST["firstname"]) && isset($_POST["lastname"]))
{
// all your php code
}
除此之外,您的代码运行良好。比较起来就像你期望的那样。嗨,你可以使用php功能,例如使用if(!isset($firstname))或if(empty($firstname)),如果你想现在就使用if($firstname))如果$firstname为Null,使用empty函数进行比较。你可以在脚本顶部添加print\r($\u POST),在浏览器中重新加载,然后用它显示的内容更新你的帖子吗?当你说你收到了“所有的错误信息”时,你能具体说明是哪一条吗?因为您似乎不太可能看到echo语句的echo,以及哪些语句很重要,所以您容易受到SQL注入的攻击。您需要转义输入,或者,既然您已经在使用mysqli,为什么不使用准备好的语句呢?您的脚本容易受到攻击。在可公开访问的web服务器上使用此脚本之前,您应该先查看并查找准备好的语句。@MikeBrant我很快就会处理它的。我做了,但它仍然不能正常工作。我已经用文本填充了每个字段,并选中了复选框,但它仍然表示没有填充所有字段。有什么奇怪的地方吗?注册页面是用jqueryajax调用的,它除了脚本之外什么都没有。那么它只在表单提交时运行?
if(isset($_POST["firstname"]) && isset($_POST["lastname"]))
{
// all your php code
}