Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
会话管理:PHP+;MySQL_Php_Mysql_Session - Fatal编程技术网

会话管理:PHP+;MySQL

会话管理:PHP+;MySQL,php,mysql,session,Php,Mysql,Session,我正在用PHP+MySQL开发一个知识管理系统,在这个系统中,我将教职员工和学生放在不同的表中。现在我在会话管理方面面临一些问题 如果以学生身份登录,我可以访问student\u profile.php?id=1,但是如果我将url更改为staff\u profile.php?id=1,我将以staff身份登录 我如何解决这个问题 另外,我可以把学生和教职员放在同一张桌子上吗?有什么问题吗?把学生和教职员工放在同一张桌子上是完全可以的。如果它们具有相似的属性,则为。这些将被视为“用户”的子类。但

我正在用PHP+MySQL开发一个知识管理系统,在这个系统中,我将教职员工和学生放在不同的表中。现在我在会话管理方面面临一些问题

如果以学生身份登录,我可以访问
student\u profile.php?id=1
,但是如果我将url更改为
staff\u profile.php?id=1
,我将以staff身份登录

我如何解决这个问题


另外,我可以把学生和教职员放在同一张桌子上吗?有什么问题吗?

把学生和教职员工放在同一张桌子上是完全可以的。如果它们具有相似的属性,则为。这些将被视为“用户”的子类。但你说的更多的是授权。因此,您首先需要验证用户是否是学生或职员。如果您发现该用户是一名学生并转到员工url,则需要重定向或干脆拒绝访问

例如,假设您有这个数据库设置

                    User
                  /      \
              Student   Staff
现在有一个名为User的表。每个人都会在这里。有几种方法可以做到这一点,您可以创建一个新属性(列),它只是某种布尔值

所以你的用户表看起来像

Userid | Name | Address | ... | Staff
在哪里


这可能是进行查询时最快的方法。现在,若您需要其中任何一个的附加信息,只需创建一个具有特定属性的Student and Staff表。然后,您可以在需要时查询附加信息。

没问题。在不进行小/大重写的情况下,不管您的代码在做什么,只需将“角色”放入会话中,并在每次查询之前检查角色。角色=职员或角色=学生。不要用饼干来装,因为它们是可以改变的。检查每次访问的角色。

当用户成功登录时,您可以为会话密钥设置不同的值(标识)

在login.php中

<?php
 session_start();

 if(user_is_student()) {
      $_SESSION["usertype"]="student";
      ...
 }
 else 
 if(user_is_staff()) {
      $_SESSION["usertype"]="staff";
      ...
 }
?>

这没有帮助。您想显示文件中的一些代码吗?如果不知道您的会话代码,很难告诉您,请将您的php代码粘贴到这里。。
<?php
 session_start();

 if(user_is_student()) {
      $_SESSION["usertype"]="student";
      ...
 }
 else 
 if(user_is_staff()) {
      $_SESSION["usertype"]="staff";
      ...
 }
?>
<?php
  session_start();
  $validUser=false;
  if(isset($_SESSION["usertype"]))
   {
     if($_SESSION["usertype"]=="staff")
       {
          $validUser=true;
        }
   }
 if(!$validUser) {
     header("Location: login.php");
 }
?>