curl_init会导致特定网页出错

时间:2011-06-01 22:35:19

标签: php security

如果服务器禁用了“curl_init”功能,会导致错误编号7和错误消息:“无法连接到主机”或者是否有其他原因导致我收到此错误?

如果这是一个安全问题,有办法解决这个问题,因为我无法控制这些网站的安全性吗?

    <?php

$url = $_POST["url"];
$url = $url.'/';
echo "<br> <b>URL: </b>".$url;

function get_web_page($url)
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        //CURLOPT_PROXY         => "localhost:80",
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;

$html= get_web_page($url);

echo '<br> <b>Error Number: </b>'.$html['errno'];
echo '<br> <b>Error Message: </b>'.$html['errmsg'];

?>

我希望这是足够的代码来解决问题。

这是我正在努力的网站。在底部,您应该能够输入任何URL。如果你把www.csun.edu它得到那个错误。但是如果你把library.csun.edu放进去的话。

http://www.csun.edu/~ppm90976/profilepoojamanjrekar.html

1 个答案:

答案 0 :(得分:2)

你能提供你的代码吗?我会尝试回答你的问题,但根据你的问题,我不确定我是否可以。

curl_init()是自PHP4以来的本机函数。除非我弄错了,否则无法禁用。最重要的是,如果 被禁用,它将不会出现“无法连接到主机”(错误:7)错误。

所以我想你要问的是,如果远程服务器没有启用它会发生什么。这个问题实际上没有实际意义,因为在特定条件下访问其他网站/页面时,curl所做的基本上是“获取”页面。只要在您设置的条件下(使用curl_setopt()函数)可以查看网页,它就会起作用。

现在,我记得,如果您请求的页面具有重定向并且您的curl选项指定它不应该遵循重定向,则可能发生错误号7。要检查这是否是导致问题的原因,请在执行url之前设置此选项:

curl_setopt('CURLOPT_FOLLOWLOCATION', true);

如果有帮助,请告诉我。