【问题标题】:How to continue a CakePHP 3 session in a regular PHP script?如何在常规 PHP 脚本中继续 CakePHP 3 会话?
【发布时间】:2017-10-05 15:47:55
【问题描述】:

我的情况如下。我有一个 cakephp 项目和一个在同一台服务器上运行的单独的纯 php 脚本。 当我使用我的客户端浏览器连接到 cakephp 项目时,它会建立一个应有的会话。

现在我想用我的普通 php 脚本继续会话数据。我再次使用相同的客户端浏览器访问纯 php 脚本(因此请求元数据应该相同并且会话应该被识别)并将 cakephp 会话选项设置为 PHP。

'Session' => [
  'defaults' => 'php',
 ],

但是,我不知道如何在纯 php 脚本上继续会话。 我会假设我的普通 php 脚本的以下两行会起到神奇的作用:

session_start(); 
echo json_encode($_SESSION);

亲切的问候, 马吕斯

【问题讨论】:

    标签: php session cakephp cakephp-3.x


    【解决方案1】:

    CakePHPs PHP 会话默认值(与所有内置默认值一样)确实将 cookie 的名称/会话的名称(session.nameINI 设置)更改为CAKEPHP

    https://github.com/cakephp/cakephp/blob/3.5.3/src/Network/Session.php#L133-L138

    所以您要么必须更改它以匹配您的普通 PHP 应用程序使用的默认值(很可能是 PHPSESSID,即 PHP 默认值):

    'Session' => [
        'defaults' => 'php',
        'cookie' => session_name(), // would use the PHP default
    ],
    // ...
    

    或更改后一个应用程序以使用为您的 CakePHP 应用程序配置的名称:

    session_name('CAKEPHP');
    session_start();
    // ...
    

    还要确保 session.cookie_pathsession.cookie_domain 配置涵盖您的两个应用程序位置。

    另见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多