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() 无法建立连接

PHP fsockopen模拟POST/GET方法

如何使用 PHP 和 fsockopen 检查 UDP 地址是不是存在?

fsockopen():php_network_getaddresses:getaddrinfo失败:名称或服务未知

服务器如何开启php的fsockopen函数? 使用发邮箱类

socket_create 与 fsockopen php