Php 登录到表单,服务器端使用curl,然后将cookie带回浏览器

Php 登录到表单,服务器端使用curl,然后将cookie带回浏览器,php,cookies,curl,Php,Cookies,Curl,我有以下代码,它正在执行HTTP/POST以登录到web表单。站点返回的cookies存储在文件cookies.txt中 $ch = curl_init(); $opts = array( CURLOPT_URL=> $projectUrl, CURLOPT_POST=> true, CURLOPT_FOLLOWLOCATION=> true, CURLOPT_RETURNTRANSFER=> true, CURLOPT_COOK

我有以下代码,它正在执行HTTP/POST以登录到web表单。站点返回的cookies存储在文件
cookies.txt

$ch = curl_init();

$opts = array(
    CURLOPT_URL=> $projectUrl,
    CURLOPT_POST=> true,
    CURLOPT_FOLLOWLOCATION=> true,
    CURLOPT_RETURNTRANSFER=> true,
    CURLOPT_COOKIEJAR=> 'cookies.txt',
    CURLOPT_POSTFIELDS=> http_build_query($data),
);

curl_setopt_array($ch, $opts);

$ret = curl_exec($ch);

curl_close($ch);
我已经确认登录成功(因为
$ret
的值是表单后面页面的内容)

接下来,我有一点代码,它解析curl编写的cookie文件,并为每个cookie执行
set\u cookie

据我所知,这只是PHPSESSION cookie

$cookies = parseCookieFile('cookies.txt');
foreach($cookies as $c) {
    if(!setcookie($c["name"], $c["value"], $c["expires"], $c["path"], $c["domain"], $c["secure"])) {
        echo "ERROR: Could not write cookie {$c["name"]}<br />";
    }
}
$cookies=parseCookieFile('cookies.txt');
foreach($c){
如果(!setcookie($c[“名称”]、$c[“值”]、$c[“过期”]、$c[“路径”]、$c[“域”]、$c[“安全”])){
echo“错误:无法写入cookie{$c[“name”]}
”; } }
我的希望是,在后端完成所有这些工作后,我能够浏览到我登录的站点,它将检测会话cookie并将其传递给我

不幸的是,事实并非如此。我只是回到了登录表单


是否有一些愚蠢/明显的原因导致这不起作用?

您需要使用
curl\u setopt($ch,CURLOPT\u COOKIEFILE,'cookies.txt'))
我的理解是,如果我希望连续的curl调用使用相同的cookies,CURLOPT_COOKIEFILE就是这样。我想将服务器端代码生成的cookies传送到最终用户的浏览器中。@MarkBiek不!你不能将其他站点的cookie设置到用户的浏览器中。这是一个安全问题。哦,我明白了……你不能为用户设置cookies另一个域-这将是一个巨大的安全漏洞,这是有意义的。我只是不确定,因为PHP确实允许我编写cookies。浏览器似乎无法识别它们。你们中的一个应该将其作为一个答案发布,以便我可以接受:)