2015-12-17 104 views
2

當我第一次打開登錄頁面時,即使我使用了正確的用戶名和密碼,登錄頁面也沒有被重定向到主頁。但在第二次登錄時,它正在被正確地重定向到主頁。 login.php的代碼如下所示。登錄頁面無法運作

<?php 
session_start(); 
$_SESSION['login_user'] = false; 
?> 

的login.php的休息是簡單的HTML和登錄表單數據發送到validate.php 其中validate.php看起來是這樣的。

<?php 
session_start(); 
    $username=""; 
    $password=""; 
    $usernameErr=""; 
    $passwordErr=""; 
    $empty=false; 
    $_SESSION['login_user'] = false; 
    if(isset($_POST['submit'])) 
    { 
     if(empty($_POST['username'])) 
     { 
      $empty=true; 
      $usernameErr="Username is empty. Please try again"; 
     } 
     else 
      { 
       $username=$_POST['username']; 
      } 
     if(empty($_POST['password'])) 
     { 
      $empty=true; 
      $passwordErr="Password is empty. Please try again"; 
     } 
     else 
      { 
       $password=$_POST['password']; 
      } 
     if(!$empty) 
     { 
      $servername="myxor.in.mysql"; 
      $dbusername="myxor_in"; 
      $dbpassword="srikanth177"; 
      $dbname="myxor_in"; 
      $conn=new mysqli($servername, $dbusername, $dbpassword, $dbname); 
      if($conn->connect_error) 
      { 
       die("Connection failed: " . $conn->connect_error); 
      } 
      $sql = "SELECT firstname,package,username,password FROM users WHERE username='$username'"; 
      $result = $conn->query($sql); 
      if (($result->num_rows) > 0) 
      { 
       $row = $result->fetch_assoc(); 
       if($username === $row['username']) 
        { 
         if($password === $row['password']) 
         { 
          $_SESSION['fname'] = $row['firstname']; 
          $_SESSION['pack'] = $row['package']; 
          //$_SESSION['login_user'] = $username; 
          $_SESSION['login_user'] = true; 
          header('Location: http://www.myxor.in/home.php'); 
          exit; 
         } 
         else 
         { 
          $passwordErr = "Invalid Password. Please Try Again"; 
         } 
        } 
      } else 
      { 
       $usernameErr = "Invalid Username. Please Try Again"; 
      } 
     } 
    } 
    else echo "submit not set"; 
    echo $usernameErr; 
    echo "<br>"; 
    echo $passwordErr; 
?> 

爲什麼登錄頁面是不是首次運作的任何建議(請注意,當我登錄第二次的被正確地重定向到所需home.php)

+0

可能在設置會話中存在一些問題。 P1。檢查當第二次登錄該登錄頁面時,會話是否啓用? –

+0

首先,您應該檢查$ _SESSION ['login_user']是真實的,如果是的話,然後將其重定向到home.php – WisdmLabs

+0

就在您將$ _SESSION ['login_user']設置爲true的位置上方,您應該回顯某些內容作爲測試以查看是否它實際上已經到了這一點。嘗試如下所示:'echo「到此爲止#1」;''''''''''''''你還需要在重定向之前放置一個臨時'exit',否則你將看不到消息。如果您沒有看到「到達這裏#1」消息,請在腳本的另一個位置放置另一條消息,看看是否出現該消息。這是基本的錯誤測試,以縮小腳本的哪些部分正在運行。如果你需要看到一個變量的內容,那麼也是這樣。 – kojow7

回答

0

您應該打印在您的會話變量登錄頁面。事情是這樣的:

var_dump($_SESSION); 

所以,當你輸入登錄信息,而不是被重定向的第一次嘗試,你會看到,如果正在設置的值。這是邁出的第一步。然後,您將更好地瞭解需要更改文件的內容。

0

嘗試使用下面的代碼。

<?php 
    session_start(); 
    $username=""; 
    $password=""; 
    $usernameErr=""; 
    $passwordErr=""; 
    $empty=false; 
    $_SESSION['login_user'] = false; 
    if(isset($_POST['submit'])) 
    { 
     if(empty($_POST['username'])) 
     { 
      $empty=true; 
      $usernameErr="Username is empty. Please try again"; 
     } 
     else 
     { 
      $username=$_POST['username']; 
     } 
     if(empty($_POST['password'])) 
     { 
      $empty=true; 
      $passwordErr="Password is empty. Please try again"; 
     } 
     else 
     { 
      $password=$_POST['password']; 
     } 
     if(!$empty) 
     { 
      $servername="myxor.in.mysql"; 
      $dbusername="myxor_in"; 
      $dbpassword="srikanth177"; 
      $dbname="myxor_in"; 
      $conn=new mysqli($servername, $dbusername, $dbpassword, $dbname); 
      if($conn->connect_error) 
      { 
       die("Connection failed: " . $conn->connect_error); 
      } 
      $sql = "SELECT firstname,package,username,password FROM users WHERE username='$username'"; 
      $result = $conn->query($sql); 
      if (($result->num_rows) > 0) 
      { 
       $row = $result->fetch_assoc(); 
       if($username == $row['username']) 
        { 
         if($password == $row['password']) 
         { 
          $_SESSION['fname'] = $row['firstname']; 
          $_SESSION['pack'] = $row['package']; 
          //$_SESSION['login_user'] = $username; 
          $_SESSION['login_user'] = true; 
          header('Location: http://www.myxor.in/home.php'); 
         } 
         else 
         { 
          $passwordErr = "Invalid Password. Please Try Again"; 
         } 
        } 
      } else 
      { 
       $usernameErr = "Invalid Username. Please Try Again"; 
      } 
     } 
    } 
    else echo "submit not set"; 
    echo $usernameErr; 
    echo "<br>"; 
    echo $passwordErr; 
?>