【问题标题】:Passing session variables between HTTP and HTTPS在 HTTP 和 HTTPS 之间传递会话变量
【发布时间】:2013-06-30 12:51:43
【问题描述】:

某些托管服务提供商(如 HostGator)为帐户提供共享 SSL 证书。这意味着我的 HTTPS 链接与我的 HTTP 是不同的域。

即:网址类似于http://www.mydomain.comhttps://secure123.hostgator.com/~bill/

我正在尝试将用户登录到安全域,设置会话变量,然后重定向到主页。但是,这样做时,会话变量会丢失。

不安全的 Index.php:

<?php session_start(); 
echo $_SESSION['name'];
?>
<html><body>
<p><a href="https://secure123.hostgator.com/~bill/login.php">Login</a></p>
</body></html>

安全登录.php:

<?php session_start(); 
$_SESSION['name'] = "Bill";
header("location: http://www.mydomain.com/index.php")
?>

如何确保会话变量能够被 http 和 https 上的所有文件读取?

【问题讨论】:

  • stackoverflow.com/questions/441496/… 的可能副本 Guy 已经很好地解释了如何管理 HTTP 和 HTTPS 之间的会话
  • 通过 GET 提供 id 会导致我试图远离的混乱 URL - 用于 SEO 和书签等。还有其他方法吗?喜欢使用 POST 或其他方式?
  • 如果您浏览我提供的链接,您可以了解不同的解决方案...您可以使用 cookie、发布、实施缓存层...查看所有答案并实施最佳答案符合您的要求:)

标签: php session ssl login https


【解决方案1】:

您可以通过 GET 提供您的会话 ID。

header("location: http://www.mydomain.com/index.php?PHPSESSID=".session_id());

另一方面你可以打开session.use_trans_sid

或者使用函数session_id()设置会话ID

Manual: Passing the Session ID

【讨论】:

  • 通过 GET 提供 id 会导致我试图远离的混乱 URL - 用于 SEO 和书签等。还有其他方法吗?喜欢使用 POST 或其他方式?
  • 您确定搜索引擎会尝试登录吗?
  • 另外,您可以使用 post。登录后向用户显示从 https 到 http 的自动提交(onload -> 提交)表单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 2010-10-08
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
相关资源
最近更新 更多