我正在尝试创建一个“远程登录”站点,但是当我尝试下面的代码时,我收到有关 cookie 被禁用的错误,我已经在 google 上搜索了解决方案,但唯一解决的情况是 cURL 方式这样做(cookie jar),我怎样才能解决cookie问题?我怎样才能找到网站需要的cookie(大约有10个)?
<?php
$vars = array(
'email' => "*****",
'pass'=>"*****"
);
$content = http_build_query($vars);
$host = 'www.site.com';
$service_uri = '/login.php';
$vars ='login_mode=1';
$header = "Host: $host\r\n";
$header .= "User-Agent: PHP Script\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Referer: http://www.site.com \r\n";
$header .= "Content-Length: ".strlen($content)."\r\n";
$header .= "Connection: close\r\n\r\n";
$fp = fsockopen("".$host,80, $errno, $errstr);
if (!$fp)
{
echo "$errstr ($errno)<br/>\n";
echo $fp;
}
else
{
fputs($fp, "POST $service_uri HTTP/1.1\r\n");
fputs($fp, $header.$content);
while(!feof($fp))
{
echo fgets($fp, 128);
}
fclose($fp);
}
?>
最佳答案
您首先必须请求主页 URL,这将为您提供 cookie header 。解析它们并将它们添加到您的 $header
变量中,将它们发送到服务器。
您不想关心网站需要哪个 cookie - 只需发送所有 cookie,这样就可以面向 future 。
如果您不想自己做这一切,请查看 PEAR 的 HTTP_Request2包 - 它内置了 cookie 处理。
关于PHP fsockopen() cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950389/