任何人都可以帮助我吗?
我仍然是新手,在这里使用大部分的PHP东西。我有点使用会话创建多用户的问题。
我想做的就是这个。帐户仅限管理员和仅适用于普通用户的帐户。
只有在登录的普通用户才能访问仅供用户使用的网页时,管理员权限才能访问管理员页面。
到目前为止,我已经创建了一个用户登录凭据。这仅适用于管理员。我真的很困惑如何添加非管理员才能访问它们的页面。
任何人都可以帮我这个代码吗?
这是主页
<?php
//Initialize Session
session_start();
error_reporting(E_ALL ^ E_NOTICE);
//$name = $_SESSION['username'];
if(isset($_SESSION['username']))
{
header('Location: index_admin.php');
}
?>
这是管理页面
<?php
// Inialize session
session_start();
// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username']))
{
header('Location: index.php');
}
?>
这是登录表单
<form action="login.php" method="post">
<input type="text" name="uname" placeholder="USERNAME . . . " autofocus/>
<br/>
<input type="password" name="pword" placeholder="PASSWORD . . . " />
<br/>
<center><input type="submit" name="submit" value="LOGIN" /><button type="reset" value="Reset" />RESET</button></center>
</form>
这是login.php
<?php
session_start();
include("config.php");
$login = mysql_query("SELECT * FROM users WHERE (username = '" . mysql_real_escape_string($_POST['uname']) . "') and (password = '" . mysql_real_escape_string($_POST['pword']) . "')");
// Check username and password match
if (mysql_num_rows($login) == 1)
{
// Set username session variable
$_SESSION['username'] = $_POST['uname'];
// Jump to secured page
header('Location: index_admin.php');
}
else
{
// Jump to login page
header('Location: index.php');
}
?>
这是数据库
user_tbl
id = 1
username = admin
password = 12345
提前感谢您的帮助。
答案 0 :(得分:1)
答案 1 :(得分:1)
从您的问题看来,您将为管理用户和非管理用户使用相同的登录页面。就是这样,我会给出答案。
在验证特定用户的名称和密码的过程中,您需要确定已授予该用户的权限级别。您的用户表中可能有一个名为“privilege”的列。
usr_tbl需要看起来像这样:
id username password privilege
1 admin W$^%^$%^%^% admin
2 reggel DJDT&646364 user
3 ollie DTHDHFGEERT user
登录后,您将读取usr_table并将该用户的值从列中拉出并将其存储为会话变量,如下所示:
$_SESSION['privilege'] = $privilege; /* from user table */
然后你可以做这样的逻辑来决定你的用户应该看到什么,以及她应该做什么。
if ( 'admin' == $_SESSION['privilege'] ) {
// Jump to secured page
header('Location: index_admin.php');
}
else {
// Jump to login page
header('Location: index.php');
}
在以后的页面视图中,如果您的会话逻辑运行正常,$_SESSION['privilege']
变量应继续可用。
P.S。用于安全代码的mysql_
API?真?
答案 2 :(得分:0)
理想情况下,您需要扩展服务此代码的数据结构:设置用户表和组表;这些团体将意味着访问权限。提交登录页面时,请检查数据库中的用户名,然后: -
1)如果不匹配,返回“拒绝访问”屏幕
2)如果匹配,则xref与groups表一起确定该用户的权限级别。然后:- 2a)如果是admin,返回管理员屏幕,设置适当的会话变量来存储该决定。 2b)否则,返回正常用户屏幕,同上设置适当的会话变量。
您的核心问题是,在进入“主页”时,您只需检查是否设置了用户名,然后将用户带到管理界面。这是错的。尝试将您的逻辑分解为更简单的更简单的步骤,并考虑人类术语中的“if-else”逻辑。 “我想要发生什么?”然后“我需要知道如何确定如何做到这一点?”。
祝你好运!答案 3 :(得分:0)
我使用相同的字体,但出现一个错误
此页面不起作用本地主机过于频繁地重定向了您。 尝试清除您的cookie。 ERR_TOO_MANY_REDIRECTS
<?php
// Include config file
require_once "config.php";
// Initialize the session
session_start();
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
header("location: login.php");
exit;
}
$_SESSION['privilege'] = $privilege; /* from user table */
if ( 'admin' == $_SESSION['privilege'] ) {
// Jump to secured page
header('Location: index_admin.php');
}
else {
// Jump to login page
header('Location: index.php');
}
?>
<?php include "theme/header.tpl"; ?>
<div class="page-header">
<h1>Hi, <b><?php echo htmlspecialchars($_SESSION["username"]); ?></b>. Welcome to our site.</h1>
</div>
<p>
<a href="reset-password.php" class="btn btn-warning">Reset Your Password</a>
<a href="logout.php" class="btn btn-danger">Sign Out of Your Account</a>
<a href="users.php" class="btn btn-success">Users </a>
</p>
<?php include "theme/footer.tpl"; ?>