我使用会话在我的网站上使用了登录系统。
这是它的外观,
<?php
session_start();
ob_start();
include 'includes/db.php';
$idadm=$_POST['idadm'];
$passadm=$_POST['passadm'];
$idadm = stripslashes($idadm);
$passadm = stripslashes($passadm);
$idadm = mysql_real_escape_string($idadm);
$passadm = mysql_real_escape_string($passadm);
$sql="SELECT * FROM admin WHERE aid='$idadm' and password='$passadm'";
$result = $conn->query($sql);
$count = $result->num_rows;
if($count == 1) {
$_SESSION['idadm'] = $idadm;
$_SESSION['passadm'] = $passadm;
if ($_SESSION['idadm'] == 'admin') {
header("location:admin/index.php");
} else {
header("location:subadmin/index.php");
}
} else {
header("location:index.php");
}
ob_end_flush();
?>
db.php具有数据库凭据。
这是受保护页面上的代码,
<?php
session_start();
if (!isset($_SESSION['idadm'])) {
header('location:/index.php');
die;
}
?>
登录脚本工作正常,除了一个问题,登录的用户可以访问admin和subadmin页面。
只有一个管理员用户,数据库中该用户的ID为“admin”。管理员应该只能访问'admin / index.php',其他用户应该能够访问'subadmin / index.php'。
如何修改脚本以实现此目的?
答案 0 :(得分:0)
首先,获取$_SESSION["idadm"]
和$_SESSION['passadm']
...
首先,在你的管理页面中会是这样的:
<?php
session_start();
if (!isset($_SESSION['idadm'])) {
header('location:/index.php');
die;
} else {
$username = $_SESSION["idadm"];
$password = $_SESSION['passadm']; // Also storing passwords in session vars is not a good idea. :/
然后打开数据库连接:
$pdo = new PDO($dsn, $DBUsername, $DBPass):
// or
$mysqli = mysqli_connect($host, $DBUsername, $DBPass, "admin")
然后检查数据库中是否有当前用户名和密码...
我在PDO中这样做:
$sth = $pdo->prepare("SELECT COUNT(*) AS number_of_users FROM table_name WHERE aid = :username AND password = :password");
$sth->bindParam(":username", $username, PDO::PARAM_STR);
$sth->bindParam(":password", hash("YOUR_HASHING_ALGO", $password), PDO::PARAM_STR); // If you have not hashed the password you can remove the hash method, but not hashing a password is a horrible idea
$result = $sth->fetch(PDO::FETCH_ASSOC);
if( (int) $result["number_of_users"] >= 1 ) {
// yay he is an admin, do somethin'
} else {
// nope, he is not allowed to enter, what to do with him?
}
最后用以下方法关闭了else块:
}
在连接字符串中,您必须使用自己的特定凭据和数据库。
希望它可以帮到你!