如何从cURL获取session_id()

时间:2011-12-14 18:45:01

标签: php session post curl

我对cURL有几个问题:

  1. 我是否需要将session_start()与cURL一起使用?

  2. 如果没有,我如何从cURL获取session_id()

  3. 何时生成session_id()

  4. 初始化cURL会话(curl_init)和执行cURL会话(curl_exec)之间有什么区别?

4 个答案:

答案 0 :(得分:0)

cURL是一个用于建立与服务器的连接的库(就像您的Web浏览器一样)并且没有session_id可以说(因为它只是检索客户看到的内容和session_id()将是一个服务器端方法。)

话虽如此,通常会话ID可以在请求的标题中找到,例如Set-Cookie标题(或者有时在URL本身中)。因此,如果您需要确定会话,我会查看使用cURL的Cookie Jar功能,或确保使用标题检索内容,以便您可以查看Set-Cookie值(s )。

后续:

  • curl_init正在建立新的cURL请求。基本上,它会创建一个新的cURL实例,然后您可以使用众多curl_setopt设置中的任何一个进行配置。
  • curl_exec根据您的配置执行cURL请求并返回结果。根据您的设置,这可能是您要使用的实际内容,一组标题,一个状态结果或其他一些值。

<?php
  // create a new instance of curl we can configure
  $curl = curl_init('http://google.com');

  // begin configuring that instance
  curl_setopt($curl, CURLOPT_COOKIE, 'PHPSESSID=12345ABCDE67890');

  // now fire off the result, with the specified cookie attached
  // (in this case, it's fetching google.com with a cookie named PHPSESSID
  // and a value of 12345ABCDE67890)
  $result = curl_exec($curl);

答案 1 :(得分:0)

默认情况下,如果你通过URL获取网页,并尝试访问同一网站的另一部分,那么你必须添加你从cURL获得的会话

答案 2 :(得分:0)

您可能需要考虑另一种解决方案,解决将用户从一个站点切换到另一个站点并仍保持“登录”状态的问题。

我发布了对您可能要查看的类似主题的回复:Session lost when switching from HTTP to HTTPS in PHP

简而言之,您可以创建一个哈希键,将用户重定向到siteB,查找哈希键以及它们是否排队,将用户登录到siteB。

答案 3 :(得分:0)

首先,会话和cURL是完全不同且无关的事情。该会话就像当前用户的服务器端缓存。 cURL是一种在PHP中发送HTTP请求的方式,例如GET和POST。有些API需要使用cURL在您自己的PHP脚本/代码中与它们进行交互。

session_id()函数用于获取或设置当前用户的当前会话ID。例如,如果要将会话ID设置为7,则可以调用

session_id(7);
session_start();

如果您想获得会话ID,请致电

session_start();
$CurrentSessID = session_id();

当您调用session_start()时会生成会话ID,除非您在调用session_start()之前自己设置它。