6

我有两个站点dev1.test.comdev2.test.com

这是在不同服务器上运行的两个站点。dev1.test.com 是我登录的地方,我将 cookie 设置为*.test.com以验证用户是否已登录。

现在在 dev2.test.com 上,我想通过向 dev1.test.com 发送 PHP CURL 请求来检查当前用户是否已登录。在我的 curl 请求中,我想在此 curl 请求中包含 $_COOKIE 的内容(其中包含 *.test.com 的 cookie 信息)。

我应该如何在 php curl 中做到这一点?

4

4 回答 4

9

由于您有一个通配符 cookie 域,因此 dev2 也将具有与 dev1 相同的 cookie。所以基本上你需要说“通过 curl 将我的 cookie 传递给其他服务器。

您想要的 curl 选项是“CURLOPT_COOKIE”,并且您传入一个 cookie 字符串“name1=value1;name2=value2”

把它放在一起(未经测试 - 当然,你需要将它包装在其他 curl 函数中)

$cookiesStringToPass = '';
foreach ($_COOKIE as $name=>$value) {
    if ($cookiesStringToPass) {
        $cookiesStringToPass  .= ';';
    }
    $cookiesStringToPass .= $name . '=' . addslashes($value);
}
curl_setopt ($ch, CURLOPT_COOKIE, $cookiesStringToPass );
于 2012-10-23T10:27:27.730 回答
3

这是我用来通过 curl 转发 $_COOKIE 的:

$cookie_data =
  implode(
    "; ",
    array_map(
      function($k, $v) {
        return "$k=$v";
      },
      array_keys($_COOKIE),
      array_values($_COOKIE)
    )
  );
curl_setopt($ch, CURLOPT_COOKIE, $cookie_data);

参考: http: //php.net/manual/en/function.curl-setopt.php

于 2013-11-29T01:41:34.140 回答
2

除了与$_COOKIE您一起工作之外,还可以使用$_SERVER['HTTP_COOKIE']包含 HTTP 标头字符串的 。

即你只需要这样写:

curl_setopt($ch, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);
于 2017-02-28T14:19:33.887 回答
1

阅读:http ://be2.php.net/manual/en/function.curl-setopt.php

CURLOPT_COOKIEFILECURLOPT_COOKIEJAR

因此,您必须$_COOKIE从一台服务器读取,将其保存到文件中,然后将其发送到另一台服务器

它看起来像:

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
于 2012-10-23T10:20:56.010 回答