不在IF语句PHP之间传递的变量

时间:2016-01-07 21:54:08

标签: php variables if-statement statements

好的,所以我正在编写一段代码来检查在IF语句中设置的一些条件,以便显示一个注册网站的按钮。但是,我在IF语句中声明为true / false的变量似乎没有转移到确定它们是否都为真的语句。我看过网上,似乎无法在任何地方找到这样的问题,所以我不知道我是愚蠢还是有真正的问题。这是我的代码:

<?php

include_once('db_conx.php');

//CHECKING USERNAME IS NOT TAKEN 

if(!empty($_POST["username"])) {

    $usernameAuth = false; 
    $username = $_POST['username'];

    $sql = "SELECT * FROM users WHERE username='$username'";
    $queryUname = mysqli_query($conn, $sql); 
    $username_check = mysqli_num_rows($queryUname);

    if($username_check>0){
        echo "Username Not Available.";
    } else {
        echo "Username Available.";
        $usernameAuth = true;
    }
}

//CHECKING EMAIL HAS NOT BEEN USED BEFORE

if(!empty($_POST["email"])) {

    $emailAuth = false;
    $email = $_POST['email'];

    $sql = "SELECT * FROM users WHERE email='$email'";
    $queryEmail = mysqli_query($conn, $sql); 
    $email_check = mysqli_num_rows($queryEmail);

    if($email_check>0){
        echo "Email already registered.";
    } else {
        $emailAuth = true;
    }
}

//CHECKING THAT THE PASSWORDS MATCH AND ARE VALID

if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

    $passAuth = false;
    $password1 = $_POST['password1'];
    $password2 = $_POST['password2'];

    if($password1 != $password2) {
        echo "Your passwords do not match.";
    } elseif(!preg_match("#[0-9]+#",$password1)) {
        echo "Your Password Must Contain At Least 1 Number!";
    } elseif(!preg_match("#[A-Z]+#",$password1)) {
        echo "Your Password Must Contain At Least 1 Capital Letter!";
    } elseif(!preg_match("#[a-z]+#",$password1)) {
        echo "Your Password Must Contain At Least 1 Lowercase Letter!";
    } else {
        $passAuth = true;
    }
}

//CHECKING TO SEE IF ALL THE VALIDATION CONDITIONS ARE MET

if(!empty($_POST["checkinput"])){

    if(($usernameAuth) && ($emailAuth) && ($passAuth)){
        echo '<button id="button" class="btn waves-effect waves-light" type="submit" onclick="signup()" name="action">Register<i class="material-icons right">send</i></button>';
    } else {
        echo 'shite';
    }
}
?>

如果你需要了解更多或想要更多的项目,只需说,我很乐意提供它们。

更新

添加了AJAX JQUERY和index.php代码:

<!DOCTYPE html>

    

  <!--stylesheet -->
    <link rel="stylesheet" type="text/css" href="stylesheet.css">

  <!-- MaterializeCSS -->
    <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>

  <!-- fullPage.js -->
    <link rel="stylesheet" type="text/css" href="fullPage.js-master/jquery.fullPage.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="vendors/jquery.easings.min.js"></script>
    <script type="text/javascript" src="fullPage.js-master/vendors/jquery.slimscroll.min.js"></script>
    <script type="text/javascript" src="fullPage.js-master/jquery.fullPage.js"></script>

    <!--TILE SCROLLING-->
    <script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $('#fullpage').fullpage({
            verticalCentered: true,
            sectionsColor: ['#1bbc9b', '#2c3e50', '#34495e'],
            anchors: ['homepage', 'Login', 'Register'],
            afterRender: function(){
                //playing the video
                $('video').get(0).play();
            }
        });
    });
    </script>
    <!-- VALIDATING THE NEEDED FIELDS -->
    <script type="text/javascript">
    //CHECKING USERNAME

        function UserAvailability() {
            jQuery.ajax({
            url: "scripts/validation.php",
            data:'username='+$("#username").val(),
            type: "POST",
            success:function(data){
                $("#user-availability-status").html(data);
                },
            error:function (){}
            });
        }

    //CHECKING EMAIL

        function EmailAvailability() {
            jQuery.ajax({
            url: "scripts/validation.php",
            data:'email='+$("#email").val(),
            type: "POST",
            success:function(data){
                $("#email-availability-status").html(data);
                },
            });
        }

    //CHECKING PASSWORDS MATCH

        function passwordCheck() {
            jQuery.ajax({
            url: "scripts/validation.php",
            data:'password1='+$("#password1").val()+'&password2='+$("#password2").val(),
            type: "POST",
            success:function(data){
                $("#password-status").html(data);
                },
            });
        }

    //SIGNUP

        function checkInput() {
            jQuery.ajax({
            url: "scripts/validation.php",
            data:'checkinput=success',
            type: "POST",
            success:function(data){
                $("#register-button").html(data);
                },
            });
        }

    //CHECKING LOGIN DATA IS VALID

        function register() {
            jQuery.ajax({
            url: "scripts/validation.php",
            data:'forename='+$("#firstName").val()+'&surname='+$("#lastName").val(),
            type: "POST",

            });
        }
    </script>
</head>
<body>
  <div id="fullpage">
    <div class="section " id="section0">
      <video autoplay loop muted id="myVideo">
        <source src="video/homeVideo.mp4" type="video/mp4">
      </video>
        <div class="layer">
            <ul id="menu">
                <li data-menuanchor="Login"><a href="#Login">Login</a></li>
                <li data-menuanchor="Register"><a href="#Register">Register</a></li>
            </ul>
        </div>
        <div class="layer">
            <h1>Title</h1>
        </div>
    </div>
    <div class="section" id="section1">
        <div class="loginCard">
            <form action ="scripts/login.php" method="post">
                <input type="text" id="usernameLogin" name="username" placeholder="Username">
                <input type="password" id="passwordLogin "name="password" placeholder="Password" onblur="loginCheck()">
                <span id="login-status"></span>
            </form>
        </div>
        <br>
        <div class="registerCard">
            <form action="scripts/signup.php" method="post" class="input-field" oninput="checkInput()">
                <input type="text" name="firstName" placeholder="First Name" id="first_name" class="validate" >
                <input type="text" name="lastName" placeholder="Surname">
                <input type="text" nenter code hereame="username" id="username" placeholder="Username" onkeyup="UserAvailability()">
                <span id="user-availability-status"></span>
                <input type="email" name="email" id="email" placeholder="Email" onkeyup="EmailAvailability()">
                <span id="email-availability-status"></span>
                <input type="password" name="password" id="password1" placeholder="Password">
                <input type="password" name="passwordVerify" id="password2" placeholder="Re-enter Password" onkeyup="passwordCheck()">
                <span id="password-status"></span><br>
                <span id="register-button"></span>
        </div>
    </div>
    </div>
</body>

1 个答案:

答案 0 :(得分:0)

你这样做的方式,当这些POST参数为空时,变量从未被初始化。

将进一步使用的变量,而不仅仅是在if语句中,应该在所有if语句之外初始化其初始缺省值。

更改

if(!empty($_POST["username"])) {

    $usernameAuth = false; 

$usernameAuth = false; 
if(!empty($_POST["username"])) {

AND

if(!empty($_POST["email"])) {

    $emailAuth = false;

$emailAuth = false;
if(!empty($_POST["email"])) {

AND

if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

    $passAuth = false;

$passAuth = false;
if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

或者更好的是,初始化文件顶部所有这些标志的初始默认值:

$usernameAuth = false; 
$emailAuth = false;
$passAuth = false;
...
if(!empty($_POST["username"])) {
...
if(!empty($_POST["email"])) {
...
if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

这将使逻辑更加清晰,并为错误留下更少的空间。

然后检查更多这些疏忽。