2

我正在尝试创建一个“远程登录”站点,但是当我尝试下面的代码时,我得到了关于 cookie 被禁用的错误,我已经用谷歌搜索了一个解决方案,但唯一解决的案例是 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);
}
?>
4

1 回答 1

2

您首先必须请求主页 URL,它将为您提供 cookie 标头。$header通过将它们添加到您的变量来解析它们并将它们发送到服务器。

您不想关心站点需要哪个 cookie - 只需发送所有这些 cookie,这使其面向未来。

如果你不想自己做这一切,看看 PEAR 的HTTP_Request2包——它内置了 cookie 处理。

于 2012-06-08T16:15:53.270 回答