【问题标题】:how to give each application a different session?如何给每个应用程序一个不同的会话?
【发布时间】:2013-06-04 12:11:34
【问题描述】:

例如

App.1

session_start();

$_SESSION["用户名"] = "xyz";

$_SESSION["is_login"] = True;

''''''''''''''''''''''''''''''''''''''''''''

App.2

session_start();

$_SESSION["用户名"] = "abc";

$_SESSION["is_login"] = false;

如何为不同的应用程序同时使用上述相同的会话?

【问题讨论】:

  • 两个应用还是两个域?

标签: php session web-applications session-cookies login-script


【解决方案1】:

在调用 session_start 之前调用 session_name 函数,传入应用标识符

例如

session_name("App1");
session_start();

【讨论】:

    【解决方案2】:

    我会这样做:

    $_SESSSION['current_app'] = 'app1';
    

    App.1

    session_start();
    $_SESSION['app1']["user_name"] = "xyz";
    $_SESSION['app1']["is_login"] = True;
    

    '''''''''''''''''''''''''''''''''''''''''''

    App.2

    session_start();    
    $_SESSION['app2']["user_name"] = "abc";
    $_SESSION['app2']["is_login"] = False;
    

    检索当前会话:

    $current_app = $_SESSSION['current_app'];
    $user_name = $_SESSION[$current_app]["user_name"]
    $is_login = $_SESSION[$current_app]["is_login"]
    

    你当然可以像 Orangepill 所说的那样使用 session_name(),但是你必须考虑一些事情: (基于从 session_name() 读取 cmets - 手册 - http://php.net/manual/en/function.session-name.php

    • 您必须在每个 session_start() 之前调用 session_name(),否则它不会返回错误。
    • “昂贵”(执行脚本的时间)
    • 如果你设置了Session_name()函数将没有本质的作用 session.auto_start 在 php.ini 中为 true
    • 如果你想使用,你必须先使用 session_name() session_set_cookie_params()。 PHP 不会给你任何错误,即使 你不知道。

    【讨论】:

      【解决方案3】:

      有不同的会话名称,那会很好。

      【讨论】:

        【解决方案4】:

        您可以在单个应用程序中使用不同的会话。为此,您需要为不同的会话设置不同的 session_cookie_path。

        【讨论】:

          猜你喜欢
          • 2016-12-26
          • 1970-01-01
          • 1970-01-01
          • 2012-11-16
          • 2018-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-23
          相关资源
          最近更新 更多