PHP fsockopen() cookie
Posted
技术标签:
【中文标题】PHP fsockopen() cookie【英文标题】:s 【发布时间】:2012-06-08 14:05:18 【问题描述】:我正在尝试创建一个“远程登录”站点,但是当我尝试下面的代码时,我收到关于 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);
?>
【问题讨论】:
动态的,这根本不是真的。自己阅读 HTTP 标头并手动处理 cookie 很容易。 要说你可以解析“Set-Cookie:”头文件。 是的,我见过 Set-Cookie,但我不知道它是哪个 cookie... 我们怎么知道它是哪个cookie? 【参考方案1】:您首先必须请求主页 URL,它会为您提供 cookie 标头。通过将它们添加到您的 $header
变量来解析它们并将它们发送到服务器。
您不想关心网站需要哪个 cookie - 只需发送所有这些 cookie,这样可以保证未来的发展。
如果您不想自己做这一切,请查看 PEAR 的 HTTP_Request2 包 - 它内置了 cookie 处理。
【讨论】:
以上是关于PHP fsockopen() cookie的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 和 fsockopen 检查 UDP 地址是不是存在?
fsockopen():php_network_getaddresses:getaddrinfo失败:名称或服务未知