【问题标题】:How can we transfer session id using Curl?我们如何使用 Curl 传输会话 ID?
【发布时间】:2011-07-18 18:02:38
【问题描述】:

我们有一个服务器和多个客户端。如果用户在服务器上登录,则在服务器的 user_id 上创建会话,我们使用 OpenId 将客户端重定向到服务器。

但在我们重定向到客户端之前,我想使用 curl 获取此会话用户 ID,并且仅当客户端上存在会话时才重定向。

我们可以使用没有 cookie 的 PHP 会话来做到这一点吗?

【问题讨论】:

  • 嗯,只有两种方式来传输会话 ID:URL 和 cookie。无论如何,我无法理解您的架构。是否要将 PHP 会话 ID 传输到 OpenID 服务器?为什么不能使用 cookie,公司政策?
  • 感谢您的回复。不,就像我们希望浏览器仅在服务器上存在用户会话时才自动重定向到打开的 id 服务器。我们也可以使用 cookie,但是我们如何使用跨域来做到这一点。服务器在不同的域上,客户端在自己的域上。我们想看看是否可以使用 Curl 来检查服务器上是否存在 cookie。
  • 对不起,我仍然很难关注你。你有两台服务器,你把它们都称为“服务器”:-?您想在两个不同的服务器之间共享​​>一个会话标识符吗?
  • 我们有一个 OpenID 服务器和客户端服务器 A 和 B。用户现在可以使用相同的 OpenId 登录到 A 和 B,如果用户已经登录客户端 A,现在键入 url客户端 B 在浏览器中,他应该会自动登录。我们正在努力解决这个问题:)
  • 无论如何,PHP 会话依赖于 cookie。尝试阅读 this man page 关于传递会话 ID 的信息。但我不知道你想在哪里使用 curl。听起来离题了。

标签: php curl session-state


【解决方案1】:

能够传输会话以便您可以从另一个浏览器“控制”它们的最可靠方法是使用 MySQL 或其他一些存储介质来存储会话,这样会话就会远离浏览器,然后可以被传递。

【讨论】:

    【解决方案2】:

    由于会话无论如何都是 cookie,最简单的方法是使用 domain:sitea,siteb 更改您的 cookie。 另一种方法是在url中传递,但如果用户在浏览器中手动输入http://siteb.whatever/,它将不起作用。

    例如:

    header("Set-Cookie: $mySessionId; Domain=siteA.com; Path=/exemple/of/path; Secure;");
    header("Set-Cookie: $mySessionId; Domain=siteB.com; Path=/; Secure;");
    

    将创建两个 cookie,每次连接到 siteA.com/exemple/of/path/siteB.com/ 时都会重新发送。如果您不指定过期时间,它们将在浏览器关闭时被删除。

    消歧:有过期日期的 Cookie 是持久性 cookie,否则它们是 会话 cookie

    您也可以使用PHP setcookie()。另外,看看how cookie works.

    【讨论】:

    • 我不知道我们该怎么做...你能帮我提供一个示例代码吗..谢谢你
    • @Àlvaro:无关紧要,它只适用于链接或重定向。不是问题 cmets.@aparna 中所述的硬打字:编辑了我的答案。
    • 据我所知,它也不适用于链接或重定向。如果你有办法使这项工作,我会很感兴趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2019-08-13
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多