2016-12-24 59 views
-2


我想讓我的表單在輸入字段上執行驗證並顯示出現錯誤的位置。相反,頁面會刷新到空白頁面。任何幫助,將不勝感激。PHP窗體去空白頁

注:這些都是在同一個文件(和registration.php)

這裏是我的代碼(PHP):

//DB information 
require("config.php"); 

//define error variables 
$usernameValidation = $passwordValidation = $emailValidation = $fNameValidation = $lNameValidation = $usernameTaken = ""; 

if(isset($_POST['submitSignUp'])) 
{ 
    function validateSignUp() 
    { 
     $username = $_POST['userSignUp']; 
     $password = $_POST['passSignUp']; 
     $confPassword = $_POST['confPassSignUp']; 
     $email = $_POST['emailSignUp']; 
     $fName = $_POST['fName']; 
     $lName = $_POST['lName']; 

     $username = mysqli_real_escape_string($con, $_POST['userSignUp']); 
     $password = mysqli_real_escape_string($con, $_POST['passSignUp']); 
     $email = mysqli_real_escape_string($con, $_POST['emailSignUp']); 
     $fName = mysqli_real_escape_string($con, $_POST['fName']); 
     $lName = mysqli_real_escape_string($con, $_POST['lName']); 

     $errors = array(); 
     //Validation on form 
     if(empty($username) || strlen($username) > 20){ 
      $usernameValidation = "errorInput"; 
      array_push($errors, "errorUsername"); 
     } 

     if(empty($fName) || strlen($fName) > 20 || !preg_match("/^[a-zA-Z ]*$/",$fName)){ 
      $fNameValidation = "errorInput"; 
      array_push($errors, "errorFName"); 
     } 

     if(empty($lName) || strlen($lName) > 30 || !preg_match("/^[a-zA-Z ]*$/",$lName)){ 
      $lNameValidation = "errorInput"; 
      array_push($errors, "errorLName"); 
     } 

     if(empty($password) || empty($confPassword) || strlen($password) > 20 || strlen($confPassword) > 20 || $password != $confPassword){ 
      $passwordValidation = "errorInput"; 
      array_push($errors, "errorPassword"); 
     } 

     if(empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)){ 
      $emailValidation = "errorInput"; 
      array_push($errors, "errorEmail"); 
     } 

     //check if username is already taken 
     $sql = mysqli_query($con, "SELECT * FROM users WHERE username = '$username'"); 

     $numRows = mysqli_num_rows($sql); 

     if($numRows > 0) 
     { 
      //username already exists 
      $usernameTaken = "That username is already taken"; 
      array_push($errors, "errorUsernameTaken"); 
     } 

     if(count($errors) > 0){ 
      return false; 
     } 
     else{ 
      //encrypt password 
      $password = md5($password); 
      //store info in DB 
      $result = mysqli_query($con, "INSERT INTO users (username, password, email, firstName, lastName) VALUES ('$username', '$password', '$email', '$fName', '$lName')"); 
      //redirect to main page 
      header('Location: index.php'); 
     } 
    } 
} 
else if(isset($_POST['submitSignIn'])) 
{ 
    function validateSignIn() 
    { 
     $username = $_POST['userSignIn']; 
     $password = $_POST['passSignIn']; 

     $errors = array(); 

     if(empty($username)){ 
      $usernameValidation = "errorInput"; 
      array_push($errors, "error"); 
     } 

     if(empty($password)){ 
      $passwordValidation = "errorInput"; 
      array_push($errors, "error"); 
     } 

     if(count($errors) > 0){ 
      return false; 
     } 

     else{ 
      $username = mysqli_real_escape_string($con, $_POST['userSignIn']); 
      $password = mysqli_real_escape_string($con, $_POST['passSignIn']); 

      $password = md5($password); 

      $sql = mysqli_query($con, "SELECT * FROM users WHERE username = '$username' AND 'password' = '$password'"); 

      $result = mysqli_num_rows($sql); 

      if($result > 0) 
      { 
       //correct information, log them in 
       header('Location: index.php'); 
      } 
      else 
      { 
       //incorrect info 
       return false; 
      } 
     } 
    } 
} 

這裏是我的代碼(HTML):

<body> 
<div class="login-wrap"> 
<div class="login-html"> 
    <input id="tab-1" type="radio" name="tab" class="sign-in" checked><label for="tab-1" class="tab">Sign In</label> 
    <input id="tab-2" type="radio" name="tab" class="sign-up"><label for="tab-2" class="tab">Sign Up</label> 
    <div class="login-form"> 
     <div class="sign-in-htm"> 
      <form action="" method="POST"> 
       <div class="group"> 
        <label for="user" class="label">Username</label> 
        <input id="userSignIn" name="userSignIn" type="text" class="input <?php if(isset($_POST['userSignIn'])){ echo ($usernameValidation);}?>" value="<?php if(isset($_POST['userSignIn'])){ echo htmlentities($username);}?>"> 
       </div> 
       <div class="group"> 
        <label for="pass" class="label">Password</label> 
        <input id="passSignIn" name="passSignIn" type="password" class="input <?php if(isset($_POST['passSignIn'])){ echo ($passwordValidation);}?>" data-type="password"> 
       </div> 
       <div class="group"> 
        <input id="check" type="checkbox" class="check" checked> 
        <label for="check"><span class="icon"></span> Keep me Signed in</label> 
       </div> 
       <div class="group"> 
        <input type="submit" name="submitSignIn" class="button" value="Sign In" onsubmit="return validateSignIn()"> 
       </div> 
       <div class="hr"></div> 
       <div class="foot-lnk"> 
        <a href="#forgot">Forgot Password?</a> 
       </div> 
      </form> 
     </div> 
     <div class="sign-up-htm"> 
      <form action="" method="POST"> 
       <div class="group"> 
        <label for="fName" class="label">First Name</label> 
        <input id="fName" type="text" name ="fName" class="input <?php if(isset($_POST['fName'])){ echo ($fNameValidation);}?>" value="<?php if(isset($_POST['fName'])){ echo htmlentities($fName);}?>"> 
       </div> 
       <div class="group"> 
        <label for="lName" class="label">Last Name</label> 
        <input id="lName" type="text" name ="lName" class="input <?php if(isset($_POST['lName'])){ echo ($lNameValidation);}?>" value="<?php if(isset($_POST['lName'])){ echo htmlentities($lName);}?>"> 
       </div> 
       <div class="group"> 
        <label for="user" class="label">Username</label> 
        <input id="userSignUp" type="text" name ="userSignUp" class="input <?php if(isset($_POST['userSignUp'])){ echo ($usernameValidation);}?>" value="<?php if(isset($_POST['userSignUp'])){ echo htmlentities($username);}?>"> 
        <span class="error"><?php echo $usernameTaken ?></span> 
       </div> 
       <div class="group"> 
        <label for="pass" class="label">Password</label> 
        <input id="passSignUp" name="passSignUp" type="password" class="input <?php if(isset($_POST['passSignUp'])){ echo ($passwordValidation);}?>" data-type="password"> 
       </div> 
       <div class="group"> 
        <label for="pass" class="label">Confirm Password</label> 
        <input id="confPassSignUp" name="confPassSignUp" type="password" class="input <?php if(isset($_POST['passSignUp'])){ echo ($passwordValidation);}?>" data-type="password"> 
       </div> 
       <div class="group"> 
        <label for="pass" class="label">Email Address</label> 
        <input id="emailSignUp" name="emailSignUp" type="text" class="input <?php if(isset($_POST['emailSignUp'])){ echo ($emailValidation);}?>" value="<?php if(isset($_POST['emailSignUp'])){ echo htmlentities($email);}?>"> 
       </div> 
       <div class="group"> 
        <input type="submit" name="submitSignUp" class="button" value="Sign Up" onsubmit="return validateSignUp()"> 
       </div> 
       <div class="hr"></div> 
       <div class="foot-lnk"> 
        <label for="tab-1">Already Member?</a> 
       </div> 
      </form> 
     </div> 
    </div> 
</div> 

預先感謝您!

+3

*空白頁*意味着某些東西被破壞。添加這些行'ini_set('display_errors',1); error_reporting(E_ALL);'在你的PHP腳本的最上面,看它是否會產生任何錯誤。 –

+0

仍然只是一個沒有錯誤的空白頁面。 – mikepsb

+1

做'<?php echo「Hello world」;'顯示任何內容並且運行爲'http:// localhost/hello.php'?而不是'file:/// hello.php',html源碼顯示的是什麼,代碼? –

回答

0

的問題是,你是不是叫其中一個功能

validateSignUp()validateSignUp()

你的代碼是這樣......

if(isset($_POST['submitSignUp'])) 
{ 
    function validateSignUp() 
    { 
    // .... 
    } 
} else if(isset($_POST['submitSignIn'])) { 
    function validateSignIn() 
    { 
    // .... 
    } 
} 

相反....應該是這樣...

if(isset($_POST['submitSignUp'])) 
{ 
    function validateSignUp() 
    { 
    // .... 
    } 

    validateSignUp(); // <--- Notice 
} else if(isset($_POST['submitSignIn'])) { 
    function validateSignIn() 
    { 
    // .... 
    } 

    validateSignIn(); // <--- Notice 
} 

坦率地說,我會問你如果您要在整個代碼中僅使用它們一次,則從該處刪除兩個功能...功能旨在用於多個用例並且登錄/註冊僅用於單個案例...