如果他们已经登录,我不想向管理员显示登录页面。
如果我想在管理员登录页面上将管理员重定向到主页,该怎么办?为了您的信息,我在管理员登录后将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');
}
?>
答案 0 :(得分:1)
我建议的第一件事是你永远不想在会话中存储密码信息。密码只应用于验证登录操作,甚至应该对此比较进行哈希处理。
除此之外,你几乎就拥有了你拥有的东西。如果用户已登录并且您已将用户名存储在$_SESSION
中,则可以只测试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");
答案 1 :(得分:0)
创建一个特定于管理员的新会话。
登录时,在管理员登录时设置新的$_SESSION['admin'] = true
(使用其他会话设置)
然后在登录页面上
if (isset($_SESSION['admin']) && $_SESSION['admin'] === true) # || is the same as the or operator
header('Location: yournonloginpage.php');
答案 2 :(得分:0)
如果会话已经创建并设置然后将用户重定向回adminindex
页面,请检查这样,您必须在登录页面中检查:
session_start();
if( isset($_SESSION['name']) && $_SESSION['name'] != "" )
{
header('Location: adminindex.php');
die;
}