使用PHP curl发送存储在$ _COOKIE global上的cookie

Mik*_*nes 6 php curl

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

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

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

我该怎么做php curl呢?

Rob*_*bie 9

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

你想要的卷曲选项是"CURLOPT_COOKIE",你传入一串cookie"name1 = value1; name2 = value2"

把它放在一起(未经测试 - 你需要将其包装在其他卷曲功能中,当然)

$cookiesStringToPass = '';
foreach ($_COOKIE as $name=>$value) {
    if ($cookiesStringToPass) {
        $cookiesStringToPass  .= ';';
    }
    $cookiesStringToPass .= $name . '=' . addslashes($value);
}
curl_setopt ($ch, CURLOPT_COOKIE, $cookiesStringToPass );
Run Code Online (Sandbox Code Playgroud)

  • 这似乎也有效:`curl_setopt($ ch,CURLOPT_COOKIE,$ _SERVER ["HTTP_COOKIE"]);` (7认同)

Ale*_*rov 1

阅读此内容: https: //www.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");
Run Code Online (Sandbox Code Playgroud)