如何从cURL获取session_id()

mzmfm0qo  于 2022-11-30  发布在  其他
关注(0)|答案(4)|浏览(396)

我有几个关于cURL的问题:
1.我是否需要将session_start()与cURL一起使用?
1.如果没有,如何从cURL获取session_id()
1.何时生成session_id()
1.初始化cURL会话(curl_init)和执行cURL会话(curl_exec)有什么区别?

4sup72z8

4sup72z81#

php会话默认情况下是在cookie中传输的,如果你通过cURL获得网站,并试图访问同一网站的另一部分,那么你必须添加从cURL获得的会话

v2g6jxz6

v2g6jxz62#

对于将用户从一个站点切换到另一个站点并仍保持其“已登录”状态的问题,您可能需要考虑一种替代解决方案。
我发布了一个类似的主题的回应,你可能想看看:在PHP中从HTTP切换到HTTPS时会话丢失
简而言之,您可以创建一个哈希键,将用户重定向到站点B,查找哈希键,如果它们一致,则将用户登录到站点B。

pdsfdshx

pdsfdshx3#

首先,会话和cURL是完全不同和不相关的东西。会话就像当前用户的服务器端缓存。cURL是PHP中发送HTTP请求的一种方式,如GET和POST。一些API需要使用cURL来从您自己的PHP脚本/代码中与它们交互。
函数的作用是:获取或设置当前用户的当前会话ID。例如,如果你想将会话ID设置为7,你可以调用

session_id(7);
session_start();

如果要获取会话ID,可以调用

session_start();
$CurrentSessID = session_id();

会话id是在调用session_start()时生成的,除非在调用session_start()之前已经自己设置了它。

1l5u6lss

1l5u6lss4#

cURL是一个用于建立到服务器的连接的库(就像您的Web浏览器一样),并且没有session_id(因为它只是检索客户端看到的内容,而session_id()将是一个服务器端方法)。
也就是说,* 通常 * 会话ID可以在请求的头中找到,比如Set-Cookie头(或者有时在URL本身中)。因此,如果您需要确定会话,我将使用cURL的Cookie Jar功能来查找,或者确保检索带有头的内容,以便您可以查看Set-Cookie值。
跟进:

  • 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);

相关问题