我正在尝试使用会话变量来区分管理员用户和客户端。根据用户类型,它们将显示不同的页面内容。为了做到这一点,我想根据登录后的$ _SESSION检查数据库中的用户类型。 这不是一个理想的解决方案,但我能想到的最简单,但我仍然无法让它工作。 保存用户详细信息的数据库表称为LS_Users,存储用户类型的字段(值:“A”表示admin或“C”表示客户端)称为userType。
我遇到的问题是没有正确选择用户类型。
以下代码不会读取用户类型。
$usertype = isset($_POST['userType']) ? $_POST['userType'] : $_SESSION['userType'];
$usertype=$_POST['user_type'];
$thisuserSQL="select * from LS_Users where userType = '".$usertype."'";
$exethisuserSQL=mysql_query($thisuserSQL) or die (mysql_error());
$userArray=mysql_fetch_array($exethisuserSQL);
if ($userArray['userType']!=$usertype)
{
echo "Usertype: ".$_SESSION['userType'];
}
else
{
echo "Usertype: empty";
}
And the code below returns the first value from the database instead of matching it to the actual user that logged in.
if ($_SESSION['c_userid'])
{
echo "Name: ".$_SESSION['c_fname'].", Id: ".$_SESSION['c_userid'], "Usertype: ".$_SESSION['userType'];
echo "<hr>";
$usertype = $_REQUEST['userType'];
$currentuserSQL="select * from LS_Users";
// where userType =" '$usertype';
$execurrentuserSQL=mysql_query($currentuserSQL) or die (mysql_error());
$userArray=mysql_fetch_array($execurrentuserSQL);
$_SESSION['c_userid']=$userArray['user_id'];
$_SESSION['userType']=$userArray['userType'];
echo "<p>Hello, ".$_SESSION['c_fname']."! ";
if ($_SESSION['userType']== "C")
{
echo "<p>Client";
}
elseif ($_SESSION['userType']== "A")
{
echo "<p>Admin";
}
else
{
echo "<p>Empty";
}
}
else
{
echo "Please log in.";
}
非常感谢你的帮助
答案 0 :(得分:0)
您是否在代码中加入了神奇的session_start();
函数?
将它放在每个使用会话的文件的最开头:
<?php
session_start();
...
答案 1 :(得分:0)
如果问题仅发生在userType
,我想验证您的php配置没有激活register_globals
。如果是这样,它可能是您的问题的根源。否则,请回答以下问题:
您确定其他会话变量是否正常工作?
您确定$_SESSION['userType']
的初始化是否有效?
你能在初始化之后写出来吗?