Php 使用会话变量区分网站用户类型,例如管理员或成员
嗨,我正在尝试区分使用我的网站的用户是管理员还是会员。我有一个数据库,其中有用户角色表,例如userrole1=member和userRole2=admin。我有一段代码,用于获取该特定用户的userRoleID并将其存储在一个变量中:Php 使用会话变量区分网站用户类型,例如管理员或成员,php,mysql,session,Php,Mysql,Session,嗨,我正在尝试区分使用我的网站的用户是管理员还是会员。我有一个数据库,其中有用户角色表,例如userrole1=member和userRole2=admin。我有一段代码,用于获取该特定用户的userRoleID并将其存储在一个变量中: $result = "SELECT userRoleID FROM tbl_users" or die("Error: " . mysqli_error($con)); $res = $con->query($result
$result = "SELECT userRoleID FROM tbl_users" or die("Error: " . mysqli_error($con));
$res = $con->query($result);
while($row = mysqli_fetch_array($res)) {
$UserRoleID = $row['userRoleID'];
$_SESSION['user_role'] = $UserRoleID;
}
它正在成功地工作
正如您在代码的最后一行中所看到的,我正在尝试将包含userID的变量存储在一个会话变量中,这个会话变量也很成功
现在,我尝试在另一个php页面中使用该会话变量来决定向用户显示什么,即如果他是管理员,他将获得更多功能,如果他是成员,他将获得更少功能。我有以下代码:
<?php
if (!empty($_SESSION['user_role'] == '2'))
{ ?>
<li><a href='index.php'>Home</a></li>
<li><a href='#'>About Us</a></li>
<li><a href='#'>Contact Us</a></li>
<li><a href='loginpage.php'>Login</a></li>
<?php } else if ($_SESSION['user_role'] == '3')
{ ?>
<li><a href='index.php'>Home</a></li>
<li><a href='#'>About Us</a></li>
<li><a href='#'>Contact Us</a></li>
<li><a href='loginpage.php'>Login</a></li>
<li><a href='#'>Admin</a></li>
<?php } ?>
正如您所看到的,在这段代码中,它是否根据用户角色决定向用户显示哪些菜单项。但它不起作用,我有以下错误:
注意:未定义的变量:\第7行C:\xampp\htdocs\WSSA1S1\new\pagetemplateHEADER.php中的会话
注意:未定义的变量:\第14行C:\xampp\htdocs\WSSA1S1\new\pagetemplateHEADER.php中的会话
我认为这是因为php代码的开头没有session_start(),但是当我插入session_start()时,我得到了以下错误:
注意:会话已启动-忽略第4行C:\xampp\htdocs\WSSA1S1\new\pagetemplateLOGINSEC.php中的会话\u start()
有人能给我一些建议吗
另外,我是PHP、MySql和stackoverflow的初学者,因此如果解决方案简单,请对我放松。为了保持简单,
to keep things simple,
I would suggest something like the following:
<?php
if( (isset($_SESSION['user_role']) ) && (false != $_SESSION['user_role']) )
{
if( '2' == $_SESSION['user_role'] )
{
echo "<li><a href='index.php'>Home</a></li>";
echo "<li><a href='#'>About Us</a></li>";
echo "<li><a href='#'>Contact Us</a></li>";
echo "<li><a href='loginpage.php'>Login</a></li>";
}
elseif ('3' == $_SESSION['user_role'] )
{
echo "<li><a href='index.php'>Home</a></li>";
echo "<li><a href='#'>About Us</a></li>";
echo "<li><a href='#'>Contact Us</a></li>";
echo "<li><a href='loginpage.php'>Login</a></li>";
echo "<li><a href='#'>Admin</a></li>";
}
else
{ // error condition
// display details of invalid $_SESSION['user_role']
}
}
else
{ // error condition
// display details of missing or empty $_SESSION['user_role']
}
?>
我建议如下:
(!empty($\u SESSION['user\u role']='2')
不是一个好主意。请尝试如果(设置($\u SESSION['user\u role'])&($\u SESSION['user\u role']='2')
这将避免未定义的变量
注意这是因为您没有SESSION u启动()
请仔细阅读@Scorpion$result=“从tbl_用户中选择userRoleID”或死亡(“错误:“.mysqli_错误($con))
…说明了一切…..你不想加入一个WHERE
子句吗?@steven删除了我的错误,谢谢,但是现在php标记之间的HTML代码仍然没有显示出来。谢谢你回答@user3629249,但是由于某些原因HTML标记仍然没有被输出:/