PHP $ _Session变量无法识别

时间:2011-04-27 20:48:36

标签: php session

我正在尝试使用会话变量来区分管理员用户和客户端。根据用户类型,它们将显示不同的页面内容。为了做到这一点,我想根据登录后的$ _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.";
}

非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

您是否在代码中加入了神奇的session_start();函数?

将它放在每个使用会话的文件的最开头:

<?php
  session_start();
  ...

答案 1 :(得分:0)

如果问题仅发生在userType,我想验证您的php配置没有激活register_globals。如果是这样,它可能是您的问题的根源。否则,请回答以下问题:

您确定其他会话变量是否正常工作? 您确定$_SESSION['userType']的初始化是否有效? 你能在初始化之后写出来吗?