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
}