报告页面会将我重定向到登录页面

时间:2015-12-12 06:06:57

标签: php

我的reports.php页面一直将我重定向回登录页面,即使我已经登录了网站。我不太确定我在这里做错了什么。

报告页面:

<?php require_once('dbadmin.php');?>
<?php 
  session_start();
  $user = $_SESSION['users']; 
  if(!isset($users)){
    header("Location:admin_login.php");
  }
?>
<!DOCTYPE html>
<html>
    <head>
    <meta charset="UTF-8">
    <title>e</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
      <header><img src="images/eastersealsclevelogo.png" alt="Easter Seals Logo" width="445" height="300"</img> </header>
      <nav>
         <ul>
           <li><a href="index.html" class="current">Home</a></li>
           <li><a href="signup.php" class="current">Run Sign-Up</a></li>
           <li><a href="refer.php" class="current">Refer-a-Friend</a></li>
            <li><a href="admin_login.php" class="current">Admin Login</a></li>
            <li><a href="reports.php" class="current">Reports</a></li>
         </ul>
      </nav>
    <h1>Reports</h1>
    <table border="1" style="width:100%">
  <tr>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Email</th>
    <th>Address</th>
    <th>City</th>
    <th>State</th>
    <th>Distance</th>
  </tr>
   <?php
    include('dbuser.php');
    $select = "SELECT `fname`, `lname`, `email`, `distance` FROM runner ORDER BY `lname`";
    $result = mysql_query($connect, $select) or die ('Oops! '.mysql_error($connect));
if($rowcnt==0){
        echo "<tr><td colspan=3>There are currently no results.</td</tr>";}
        while($row = mysql_fetch_assoc($result)) {
        echo '<tr><td>'.$row['fname'].'</td>';
        echo '<td>'.$row['lname'].'</td>';
        echo '<td>'.$row['email'].'</td>';
        echo '<td>'.$row['distance'].'</td></tr>';
      }
    ?>      </table>
    <footer></footer>
   </body>

</html> 

adminlogin page:

<?php require_once('dbadmin.php');?>
<?php
session_start();
if(isset($_POST['adminlogin'])) {
    $username = trim($_POST['user']);
    $password = trim($_POST['password']);
    include('dbadmin.php');
    $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
    $result = mysql_query($sql) or die("Invalid query: ".mysql_error());
    if(mysql_num_rows($result)==0) {
        $confirm = '<h2 style="color:red;">Invalid Credentials!</h2>';
    } else {
        $_SESSION['user'] = $username;
        $confirm = '<h2> Login Successful</h2>';
    }
}
?>
<!DOCTYPE html>
<html>
<head>
<title>My Gaming Products Site</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
      <header><img src="images/eastersealsclevelogo.png" alt="Easter Seals Logo" width="445" height="300"/> </header>
      <nav>
         <ul>
           <li><a href="index.html" class="current">Home</a></li>
           <li><a href="signup.php" class="current">Run Sign-Up</a></li>
           <li><a href="refer.php" class="current">Refer-a-Friend</a></li>
            <li><a href="admin_login.php" class="current">Admin Login</a></li>
            <li><a href="reports.php" class="current">Reports</a></li>
         </ul>
      </nav>
    <h1>Enter Your Login Information</h1>
    <?php if(isset($confirm)) echo $confirm; ?> 
       <form method="post" name="adminlogin" id="adminlogin" title="adminlogin" action="admin_login.php">
    <p>User: <br> <input type="text" name="user"></p>
    <p>Password: <br><input type="password" name="password"></p>
    <p><input type="submit" name="adminlogin" id="adminlogin" value="Login"></p>
</form>
    </p>
    <footer>| WDD420</footer>
   </body>
</body>
</html>

我认为这可能与我的报告页面有关,但我不确定它是否与登录页面有任何关系。

3 个答案:

答案 0 :(得分:1)

在您的adminlogin.php页面中,会话变量为$ _SESSION ['user']。但在reports.php页面中,它会检查$ _SESSION ['users']。将其更改为$ _SESSION ['user']并将变量名称从$ users更改为$ user。

  session_start();
  $user = $_SESSION['user']; 
  if(!isset($user)){
    header("Location:admin_login.php");
  }

答案 1 :(得分:0)

尝试通过以下方式检查用户:

session_start();
if(!isset($_SESSION['users']) && empty($_SESSION['users'])){
    header("Location:admin_login.php");
}

尝试此操作以检查变量是否已设置:

session_start();
if(isset($_SESSION['users']) && !empty($_SESSION['users'])) {
   print_r($_SESSION['users']);
}

尝试此操作以检查=&gt; var_dump($_SESSION['users']);

session_start();放在php页面的第一行。

注意:另请注意,您需要调用session_start();如果您正在使用会话变量,请在每个页面上。

答案 2 :(得分:0)

尝试使您的脚本更具可读性,我建议使用函数:

<?php
function is_loggedin()
    {
        return (!empty($_SESSION['users']));
    }

session_start();

if(!is_loggedin()){
    header("Location:admin_login.php");
    exit;
}
?>

通过执行$user = $_SESSION['users']然后检查是否设置了$user,因为您设置了它,所以总是如此。您需要查看empty()