卷曲无法正常工作

时间:2011-10-09 13:47:47

标签: php curl

<?php

function cuload($url, $got = array()){

//include(MDL.'socket_adapter.php');
$user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0";

$default_options = array(
    'data'          => 'og',
    'post_data'        => false,
    'referer'        => false,
    'cookie'           => false,
    'auth'             => false,
    'proxy'           => false,
    'pauth'           => false,
    'returndata'      => true,
);

foreach($default_options as $opt=>$value) {
    if(!isset($default_options[$opt])) {$got[$opt] = $value; }
}


$curl = curl_init();
//if(strstr($referer,"://")){
//curl_setopt ($curl, CURLOPT_REFERER, $got['referer']);}
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt ($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt ($curl, CURLOPT_HEADER, 1);
if(isset($got['returndata'])){
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
}else{
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, false);
}
curl_setopt ($curl, CURLOPT_ENCODING, 'gzip, deflate');
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);

    //curl_setopt($curl ,CURLOPT_USERAGENT, $got_opt['user_agent']); //The Name of the UserAgent we will be using ;)
    if(isset($got['post'])){curl_setopt($curl ,CURLOPT_POST , true); curl_setpot($curl ,CURLOPT_POSTFIELDS , $post); }
    if(isset($got['referer'])) curl_setopt($curl,CURLOPT_REFERER, $options['referer']);
    if(isset($got['cookie'])){ if($got['cookie'] == "0"){
    curl_setopt($curl ,CURLOPT_COOKIEJAR, TBP."cookie.txt"); }//If ever needed...
    elseif($got['cookie'] != "0"){
    curl_setopt($curl ,CURLOPT_COOKIE, $got['cookie']); }}
    //curl_setopt($curl ,CURLOPT_FOLLOWLOCATION, true);
    //curl_setopt($curl ,CURLOPT_MAXREDIRS, 5);
    //curl_setopt($curl ,CURLOPT_SSL_VERIFYPEER, false);

    $custom_headers = array();
    $custom_headers[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    $custom_headers[] = "Pragma: no-cache";
    $custom_headers[] = "Cache-Control: no-cache";
    $custom_headers[] = "Accept-Language: en-us;q=0.7,en;q=0.3";
    $custom_headers[] = "Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7";
    if(isset($url_parts['user']) and isset($url_parts['pass'])) {
        $custom_headers[] = "Authorization: Basic ".base64_encode($url_parts['user'].':'.$url_parts['pass']);
    }elseif(isset($got['auth'])){
    $uj = explode(":",$got['auth']); $custom_headers[] = "Authorization: Basic ".base64_encode($uj[0].':'.$uj[1]); }
    if(isset($got['pauth'])){
        curl_setopt($curl ,CURLOPT_PROXYUSERPWD ,$pauth); }
    if(isset($got['proxy'])){
        curl_setopt($curl ,CURLOPT_PROXY ,$proxy); }

    curl_setopt($curl ,CURLOPT_HTTPHEADER, $custom_headers);

    $response = curl_exec($curl);
    $info = curl_getinfo($curl); 
curl_close ($curl);
ob_end_clean();

return $response;
}

?>

好的,现在当我在同一页面上尝试这个脚本时:

<?php
$page = cuload('http://www.google.com');
?>

但是现在没有回应$ page变量,它会回显内容。我不需要回应任何东西这里只需要从$ page变量内容中找到一些链接..在深入探索脚本后我发现可能是curl_exec中存在问题导致如果我删除return $response仍然是显示内容!我无法理解为什么当我没有回复$page时,它会给出$page的输出。 请帮帮我!

1 个答案:

答案 0 :(得分:0)

而不是

foreach($default_options as $opt=>$value) {
if(!isset($default_options[$opt])) {$got[$opt] = $value; }
}

试试这个:

foreach($default_options as $opt=>$value) {
if(!empty($default_options[$opt])) {$got[$opt] = $value;}
}