Php multiple isset check不起作用

时间:2014-08-01 09:05:06

标签: php mysql isset

我有4个输入,需要填写。我做了一个isset测试,但它不起作用。它总是显示为true,但所有输入都没有填充,这个php用于注册。你能帮助我吗?抱歉我的英语不好。

<?php
    require('config.php');
    Error_reporting(-1);
    if (isset ($_POST['submit'])){
            $username= $_POST['username'];
            $iname= $_POST['iname'];
            $email= $_POST['email'];
            $pass= $_POST['pass'];
            $pass1= $_POST['pass1'];
                if (isset ($_POST['username']['iname']['email']['pass']['pass1'])){
            /*$username= $_POST['username'];
            $iname= $_POST['iname'];
            $email= $_POST['email'];
            $pass= $_POST['pass'];
            $pass1= $_POST['pass1'];*/
                if ($pass1 == $pass){
                    $username= mysqli_real_escape_string($link, $username);
                    $iname= mysqli_real_escape_string($link, $iname);
                    $email= mysqli_real_escape_string($link, $email);
                    $pass= mysqli_real_escape_string($link, $pass);
                    $pass1= mysqli_real_escape_string($link, $pass1);
                    $pass= md5($pass);
                    $check="SELECT username FROM users WHERE username = '$username'";
                    $rs = mysqli_query($link,$check);
                    $checker = mysqli_fetch_assoc($rs);
                        if ($checker['username']  == $username)
                        {
                            echo "Username is already taken";
                            exit();
                        }
                    $insert = "INSERT INTO `users` (`id`, `username`, `iname`, `email`, `pass`) VALUES (NULL, '$username', '$iname', '$email', '$pass')";
                    $query = mysqli_query ($link, $insert) or die("Query error");
    //"INSERT INTO users ('id', 'username', 'iname', 'email', 'pass') VALUES ('NULL, '{$username}', '{$iname}', '{$email}', '{$pass}')"
                }else{
                    echo "Passwords doesnt match";
                }
            }else{
                echo "Fill all areas";

            }
    }else{



    }

?>

我在评论中测试了所有答案,但没有一个有效!我不明白为什么它不起作用!

4 个答案:

答案 0 :(得分:3)

您可以使用:

if (isset ($_POST['username'], $_POST['iname'], $_POST['email'], $_POST['pass'], $_POST['pass1'])){
 //your code
}

只有当true的所有参数都设置且不包含isset()时,此条件才会返回null

注意:您应该检查为空,而不仅仅检查isset

如下:

if (isset ($_POST['username'], $_POST['iname'], $_POST['email'], $_POST['pass'], $_POST['pass1']) && !empty($_POST['username']. $_POST['iname']. $_POST['email']. $_POST['pass']. $_POST['pass1'])){
     //your code
    }

答案 1 :(得分:2)

尝试使用

if (isset ($username, $iname, $email, $pass,$pass1))

,而不是...

答案 2 :(得分:0)

require('config.php');
Error_reporting(-1);
if (isset ($_POST['submit'])){
        $username= $_POST['username'];
        $iname= $_POST['iname'];
        $email= $_POST['email'];
        $pass= $_POST['pass'];
        $pass1= $_POST['pass1'];
        if (!empty($username) and !empty($iname) and !empty($email) and !empty($pass) and !empty($pass1)){

            if ($pass1 == $pass){
                $username= mysqli_real_escape_string($link, $username);
                $iname= mysqli_real_escape_string($link, $iname);
                $email= mysqli_real_escape_string($link, $email);
                $pass= mysqli_real_escape_string($link, $pass);
                $pass1= mysqli_real_escape_string($link, $pass1);
                $pass= md5($pass);
                $check="SELECT username FROM users WHERE username = '$username'";
                $rs = mysqli_query($link,$check);
                $checker = mysqli_fetch_assoc($rs);
                    if ($checker['username']  == $username)
                    {
                        echo "Username is already taken";
                        exit();
                    }
                $insert = "INSERT INTO `users` (`id`, `username`, `iname`, `email`, `pass`) VALUES (NULL, '$username', '$iname', '$email', '$pass')";
                $query = mysqli_query ($link, $insert) or die("Query error");
//"INSERT INTO users ('id', 'username', 'iname', 'email', 'pass') VALUES ('NULL, '{$username}', '{$iname}', '{$email}', '{$pass}')"
            }else{
                echo "Passwords doesnt match";
            }
        }else{
            echo "Fill all areas";

        }
}else{



}

答案 3 :(得分:-3)

最好的方法是单独使用它:

if(isset($_POST["username"]) and isset($_POST["email"]) and.... )