当我在admin.php的使用它的代码只是不给我回音IM期待,而我有我的数据库中正确的值
我已经尝试在谷歌/计算器搜索,但找不到任何解决它只是不连接的权限。试图盈方把ISSET代码,但还没有工作了。
数据库:
用户名/密码/电子邮件/角色admin / test123 / @ html.com /管理
当记录(会议),它还是给了我基本上没有什么。
<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
session_start();
if ($stmt = $mysqli->prepare("SELECT id, username, password, salt, role
FROM members
WHERE username = ? LIMIT 1")) {
$stmt->bind_param('s', $username); // Bind "$email" to parameter.
$stmt->execute(); // Execute the prepared query.
$stmt->store_result();
// get variables from result.
$stmt->bind_result($user_id, $username, $db_password, $salt, $role);
$stmt->fetch();
$role = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $role);
$_SESSION['role'] = $role;
}
$role = "admin";
if(isset($_SESSION['role'])) {
if($_SESSION['role'] == $role) {
echo "welcome adminisn";
} else {
echo ("Acces Denied");
exit();
}
} else {
echo "Session not set";
}
它给了我访问被拒绝,而我在角色列有管理
我想,为什么它不工作是因为你还没有分配$ _SESSION [“角色”]当用户登录,你没有一个语句来检查,如果没有指定它的值。
无论哪种方式,这个代码将工作:
<?php
session_start(); // If we remove this then we get error Session not set
$role = "admin"; // If we change the role to something else we get access not granted
if(isset($_SESSION['role'])) {
if($_SESSION['role'] == $role) {
echo "Welcome admin";
} else {
echo("Access not granted");
exit();
}
} else {
echo "Session not set!";
}
我们需要先初始化在session_start()。我手动分配的角色,但你应该把它从数据库中查询到检查,如果用户拥有管理员权限或没有。然后,我们将检查是否会话设置。如果没有,那么我们将显示消息会话未设置。
如果会话设置,我们需要比较用户角色的作用。如果匹配,我们得到一个问候欢迎管理员,如果角色是别的东西,我们得到消息访问不批。
我建议检查PHP手册一点看起来更进会议。这是很容易忘记的东西,然后整个事情是行不通的。至少,这是我以前的经验。
资金使用的_SESSION
!?
if(isset($_session['role'])) {
这是分配是否正确?什么是$role
?如果$role
设置为"admin"
,然后管理国防部的所有功能。对于所有其他值,它是为所有残疾。
$_SESSION['role'] = $role;