【问题标题】:Sending cookies stored on $_COOKIE global using PHP curl使用 PHP curl 发送存储在 $_COOKIE 全局上的 cookie
【发布时间】:2012-10-13 06:08:44
【问题描述】:

我有两个站点 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 中做到这一点?

【问题讨论】:

  • 为什么不为所有.test.com设置cookie?

标签: php curl


【解决方案1】:

由于您有一个通配符 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 );

【讨论】:

  • 这似乎也有效:curl_setopt($ch, CURLOPT_COOKIE, $_SERVER["HTTP_COOKIE"]);
【解决方案2】:

这是我用来通过 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

【讨论】:

    【解决方案3】:

    除了使用$_COOKIE,您还可以使用包含HTTP 标头字符串的$_SERVER['HTTP_COOKIE']

    即你只需要这样写:

    curl_setopt($ch, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);
    

    【讨论】:

      【解决方案4】:

      阅读: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");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        • 2012-11-19
        • 2012-10-13
        • 2013-04-06
        • 2012-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多