PHP有多少种方法用POST数据打开URL?

时间:2010-10-31 08:40:19

标签: php

我正在编写一个PHP错误集合小部件,它从应用程序收集错误,然后通过向URL发出POST请求来报告它们。

有多少不同的方法可以做到这一点,你如何检测它们是否可用?在不同的服务器上可能没有安装扩展,可能会关闭安全选项,所以我想尝试尽可能多的。

  • CURL是一个;检查这是否已安装的最佳方法是什么?
  • fopen()如果有权限但可以做URL,但我认为你不能发送POST数据?
  • http://uk3.php.net/manual/en/book.http.php看起来需要卷曲,所以我们也可以使用curl。
  • 可以使用PHP套接字,只需自己编写HTTP协议;任何好的图书馆吗?

此服务是BSD许可下的开放源代码BTW:http://elastik.sourceforge.net/

4 个答案:

答案 0 :(得分:1)

哦等等,看起来fopen可以包含POST数据:http://wezfurlong.org/blog/2006/nov/http-post-from-php-without-curl

编辑:无法轻微编辑,无法从该网址获取代码,因此这是我的最终代码:

    if (ini_get('allow_url_fopen')) {
        $params = array('http' => array(
                'method' => 'POST',
                'content' => http_build_query($data),
                'header'=> "Content-type: application/x-www-form-urlencoded\r\n",
            ));
        $ctx = stream_context_create($params);
        $fp = fopen($url, 'rb', false, $ctx);
        if (!$fp) {
            print "FOPEN ERROR!";
            die();
        }
        fclose($fp);
    }

答案 1 :(得分:1)

Zend_Http_Client实现了四种不同的连接目标的方式,并且可以轻松扩展(当然,您不需要使用完整的框架;)。

答案 2 :(得分:1)

要回答至少部分问题,您应该能够检测到extension_loaded()是否加载了curl:

if (!extension_loaded('curl')) {
    # Yay curl!
}

答案 3 :(得分:0)

Snoopy是用于发出HTTP请求的流行且功能齐全的库。