2015-12-17 106 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; 
?>