【发布时间】: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.net/manual/en/function.error-reporting.php 并在所有内容上使用 var_dump()。 POST 的东西也是未知的。
-
我检查了错误但没有,会话在主域中工作,但在子域中不仅在访问时工作
example.com/subdir@Fred-ii- -
检查这个---> stackoverflow.com/questions/644920/…