用于http和https的具有不同域名的php会话cookie

用于http和https的具有不同域名的php会话cookie,php,https,session-cookies,setcookie,Php,Https,Session Cookies,Setcookie,我使用自定义会话代码管理网站(单页应用程序),该代码由我无权访问的团队管理。该应用程序是使用appweb自定义构建的,与任何其他公共托管网站不同。此应用程序已在http和https中提供。在这种情况下,在登录http之后,如果用户登录到https,则不会设置安全属性,尽管有以下代码 $https = $_SERVER['SERVER_PROTOCOL'] == 'https' ? 1 : 0; ini_set("session.cookie_secure", $https); //or sess

我使用自定义会话代码管理网站(单页应用程序),该代码由我无权访问的团队管理。该应用程序是使用appweb自定义构建的,与任何其他公共托管网站不同。此应用程序已在http和https中提供。在这种情况下,在登录http之后,如果用户登录到https,则不会设置安全属性,尽管有以下代码

$https = $_SERVER['SERVER_PROTOCOL'] == 'https' ? 1 : 0;
ini_set("session.cookie_secure", $https);
//or
session_set_cookie_params(0, '/', null, $https, 1);
因此,我用上面的代码重写了会话cookie,如下所示。成功了

$sessname = session_name();
setcookie($sessname, $_COOKIE[$sessname], 0, '/', null, $https, 1);
异常情况是在两个选项卡中同时打开http和https时,这会导致会话无效或自定义代码。虽然这是一个负面场景,但如果用户确实喜欢上面的内容,这可能会给用户带来困惑

我知道还有其他方法可以绕过这个问题,我一直在使用重定向之类的方法。但我想检查我的替补队员是否有效

现在,作为替补,我一直在想以下几点

$https = $_SERVER['SERVER_PROTOCOL'] == 'https' ? 1 : 0;
$sessname = session_name();
$domain = $_SERVER['SERVER_PROTOCOL'].'.'.$_SERVER['REMOTE_ADDR'];
setcookie($sessname, $_COOKIE[$sessname], 0, '/', $domain, $https, 1);
在这里,我为相同会话id的http和https设置了不同的域名。登录http时,php会话id的域将为http.10.10.1,登录https时,php会话id的域将设置为https.10.10.1。它正在工作


这是正确的方法吗。会有任何副作用吗?

为什么不将每个http请求重定向到https?使用PHP或htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
否则,我想您可能会想看看这些类似的问题:



如果可能的话,我一开始就不会问这个问题。算了吧。很抱歉,我在问题中没有提到这一点。如此悲伤。现在它就在那里。你看了类似的问题了吗?这有什么帮助吗?你没有回答我的问题。第三个在这里不适用。代码库不同,因此无法应用前两个。我的替补怎么样?