谁能帮帮我?
我在使用这里的大部分 php 东西方面还是新手。我在使用 session 创建多用户时遇到了问题。
我想做的就是这个。一个专供管理员使用的帐户和一个仅供普通用户使用的帐户。
管理员权限将只能访问管理员页面,而登录的普通用户将只能访问用户页面。
到目前为止,我已经创建了一个单一的用户登录凭据。仅供管理员使用。我真的很困惑如何添加非管理员才能访问仅供他们访问的页面。
谁能帮我处理这段代码?
这是首页
<?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
在此先感谢您的协助。
最佳答案
从您的问题看来,您将为管理用户和非管理用户使用相同的登录页面。我将针对这种情况提供答案。
在验证特定用户名和密码的过程中,您需要确定授予该用户的权限级别。您的用户表中可能有一个名为“特权”的列。
usr_tbl 需要看起来像这样:
id username password privilege
1 admin W$^%^$%^%^% admin
2 reggel DJDT&646364 user
3 ollie DTHDHFGEERT user
登录后,您会读取 usr_table 并将该用户的值从列中拉出并将其存储为 session 变量,如下所示:
$_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');
}
在以后的页面 View 中,如果您的 session 逻辑正常运行,$_SESSION['privilege']
变量应该继续可用。
附注mysql_
安全代码的API?真的吗?
关于PHP - session 多用户和管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22069398/