2016-12-24 25 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 
} 

私はあなたに尋ねますあなたのコード全体で一度だけ使用するなら、そこから両方の関数を削除する...関数は複数のユースケースに対して作成されることを意図されており、ログイン/サインアップは単一のケースのみである...

関連する問題