Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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 在任何地方注销,在其他地方登录_Php_Mysql_Authentication_Session - Fatal编程技术网

Php 在任何地方注销,在其他地方登录

Php 在任何地方注销,在其他地方登录,php,mysql,authentication,session,Php,Mysql,Authentication,Session,我目前使用PHP会话作为我的用户登录系统的基础,成功的登录设置为$\u SESSION['userid']。这允许用户从多台计算机登录到同一帐户 但是,我想实现以下功能: 到处注销,与堆栈溢出类似 查看登录的其他位置 两者都可能需要的不仅仅是一个会话变量,我愿意将更多信息放入数据库中以实现这些。执行上述操作的标准方法是什么?如果要销毁会话并注销,可以使用session\u destroy()函数。要删除特定会话变量,可以通过以下方式执行: unset($_SESSION['userid']);

我目前使用PHP会话作为我的用户登录系统的基础,成功的登录设置为$\u SESSION['userid']。这允许用户从多台计算机登录到同一帐户

但是,我想实现以下功能:

  • 到处注销,与堆栈溢出类似
  • 查看登录的其他位置

  • 两者都可能需要的不仅仅是一个会话变量,我愿意将更多信息放入数据库中以实现这些。执行上述操作的标准方法是什么?

    如果要销毁会话并注销,可以使用
    session\u destroy()
    函数。要删除特定会话变量,可以通过以下方式执行:

    unset($_SESSION['userid']);
    session_destroy();
    

    创建一个新的数据库表来存储会话,然后不要直接在
    $\u SESSION
    中存储信息,只需在新会话表中存储一个引用行的ID即可。此表可以包含IP地址、用户名和上次活动的时间等信息

    您的应用程序应该对照它在
    $\u SESSION
    中的内容检查sessions表,因此当您删除表中特定用户的所有行时,每个会话都将失效,无论它在哪里。您还可以查询属于特定用户的所有行,以便显示它们有活动会话的位置


    您必须开始考虑如何处理用户在没有明确注销的情况下离开会话的情况—可能是每小时或每天运行一次的计划作业,清除在特定时间段内没有任何活动的会话行。

    如果需要,可以使用
    会话\u set\u save\u handler()
    并将整个会话数据放在数据库中。很好的一个-不知道该功能。