【问题标题】:Session is not starting in my sub domain php会话未在我的子域 php 中启动
【发布时间】:2016-10-28 16:15:24
【问题描述】:

我已经尝试了在子域中启动会话的所有方法,但都不起作用

这是我的 php 登录代码示例

   <?php
     if(isset($_POST['login'])){
        $username = $_POST['login'];

    //Database Query
    if($everythingIsOkay){
       session_set_cookie_params(0, "/", ".example.com", false, false);
       session_start();
       $_SESSION['username'] = $username;
       $_SESSION['ini'] = true;
       session_id();
       header('Location:accountt.php');
    }
    }?>

然后我在主域中的每个页面顶部使用它

session_start();

这个在 sub.example.com 上我把它放在每个文件的顶部

<?php
session_set_cookie_params(0, "/", ".example.com", false, false);
session_start();
?>

但是还是不行,谁能告诉我怎么办?

最后我做了这个功能,会话在子域中工作,但在主域中工作

我在登录脚本顶部添加了以下功能

<?php
function new_session_start(){
    session_name();
    $secure = false;
    // This stops JavaScript being able to access the session id.
    $httponly = false;
    // Gets current cookies params. //$cookieParams["domain"],$cookieParams["lifetime"]
    $cookieParams = session_get_cookie_params();
    session_set_cookie_params(0,
        $cookieParams["path"], 
        '.example.com', 
        $secure,
        $httponly);
    session_start();          // Start the PHP session 
    session_regenerate_id(true);   // regenerated the session, delete the old one.
}
new_session_start();
?>

然后在子域页面的顶部使用它

<?php
session_set_cookie_params(0, "/", ".example.com", false, false);
session_start();
session_regenerate_id(true);
?>

【问题讨论】:

标签: php session cookies


【解决方案1】:

这里的问题与其他人的想法并不完全相同。在其他问题上,他们正在谈论如何为子域创建会话。看起来你在其他问题上所做的一切都是正确的。这里的问题出在session_set_cookie_params(0, "/", ".example.com", false, false)

您没有将此代码添加到您的主页,因此 php 将根据您的域自行制作该 cookie。您的域是 example.com,因此您的 php 会像 session_set_cookie_params(0, "/", "example.com", false, false) 一样执行此操作。

然后,当您转到您的子域时,他正在搜索 .example.com 但他不会找到它,因为您的主域的 cookie 是 example.com 而不是 .example.com。

如何解决: 添加:session_set_cookie_params(0, "/", ".example.com", false, false); 到您的主页,以便他创建正确的 cookie。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2016-10-20
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多