-1

如果管理员已经登录,我不想向管理员显示登录页面。如果我想在管理员进入管理员登录页面时将管理员重定向到主页该怎么办。为了您的信息,我已将header.php管理员登录后的每个管理员页面都包含在内。非常感谢您的帮助!谢谢!

下面显示了我的header.php编码的一部分:

<?php             
    session_start();
    if(!isset($_SESSION['name']) or (!isset($_SESSION['password'])) 
  or $_SESSION['name'] == '' or $_SESSION['password'] == '' )       
    {
            header('Location: index.php');
    }
?>

下面显示了我的管理员登录页面编码:

<form method="post" action="login_now.php" name="form1" id="form1" onSubmit="MM_validateForm('Name','','R','Password','','R','Security_code','','R');return document.MM_returnValue"> 


  <table style="width: 100%;">      

  <tbody>
     <tr>
      <td style="text-align: center;" rowspan="4"><img src="../admin/images/login.png" alt="Please enter your login details."></td>
      </tr>

           <tr>

             <td>

             Username<span class="required">*</span>

             <br>

        <input type="text" class="form-control" style="width: 150px; height: 20px" name="Name" id="Name" class="inputstyle"/>

            <br>
            <br>

               Password<span class="required">*</span>

           <br>

        <input type="password" class="form-control" style="width: 150px; height: 20px" name="Password" id="Password" class="inputstyle"/>

        <br>


             </td>
</tr>

<tr>
<td> <br> </td>
</tr>     

<tr>

      <td align="right" width="240px">  

       <input type="submit" value="Login" class="buttons" />

下面显示了我的login_now.php编码:

<?php session_start(); 
  ob_start();
  include("../DBScripts/DB.php");
    $adminName = $_POST['Name'];
    $adminPassword = $_POST['Password'];
  $Security = $_POST['Security_code'];
  $hidden = $_POST['Security_required'];

    $conn = dbConnect();

    if (!$conn)
        die("Couldn't connect to MySQL");

    $query = "select * from user where usernm='$adminName' and userpw='$adminPassword'";   
    $result = mysql_query($query, $conn);   
  $row = mysql_fetch_array($result);
    if (mysql_num_rows($result) > 0 && $row['userty']== user && $Security == $hidden)
    {     
    $_SESSION['name'] = $adminName;
    $_SESSION['password'] = $adminPassword;
    header ('Location: ../Users/home_user.php');
   } 
    else if(mysql_num_rows($result) > 0 && $row['userty']== admin && $Security == $hidden)
    {
    $_SESSION['name'] = $adminName;
    $_SESSION['password'] = $adminPassword;
        header('Location: adminindex.php');
      }
    else
    {
        header('Location: index.php');
    }

?>
4

3 回答 3

1

我建议的第一件事是,您永远不想在会话中存储密码信息。密码应该只用于验证登录操作,甚至这个比较也应该被散列。

除此之外,你几乎拥有你所拥有的。如果用户已登录并且您已将他们的用户名存储在 中$_SESSION,您只需 test isset($_SESSION['name']),然后根据需要重定向。只需确保实现取消设置的注销功能$_SESSION['name']

如果我理解您的要求,您只需将其插入登录页面,然后从其余页面中删除 header.php :

if(isset($_SESSION['name'])){
    header("Location: index.php");
    die();
}

这将使得在已经登录的情况下无法访问登录页面。如果$_SESSION['name']已初始化并且不为空,则您有一个用户登录,否则没有。

然后您需要提供一个注销页面,最简单的方法是在某处创建一个名为 logout 的链接,该链接指向可能包含的 logout.php:

unset($_SESSION['name']);
header("Location: index.php");
于 2013-11-04T09:27:34.070 回答
0

如果会话已经创建并设置,然后将用户重定向回adminindex页面,请像这样检查,您必须在登录页面中检查:

session_start();
if( isset($_SESSION['name']) && $_SESSION['name'] != "" )
{
        header('Location: adminindex.php');
        die;
}
于 2013-11-04T09:41:37.383 回答
0

创建一个特定于管理员的新会话。

$_SESSION['admin'] = true登录时,当管理员登录时设置一个新的(与其他会话一起设置)

然后在登录页面,

if (isset($_SESSION['admin']) && $_SESSION['admin'] === true) # || is the same as the or operator
    header('Location: yournonloginpage.php');
于 2013-11-04T09:13:03.477 回答