Home  >  Article  >  CMS Tutorial  >  What should I do if the collection function of phpcms v9 cannot be used?

What should I do if the collection function of phpcms v9 cannot be used?

藏色散人
藏色散人Original
2020-01-10 10:11:012802browse

What should I do if the collection function of phpcms v9 cannot be used?

What should I do if the collection function of phpcms v9 cannot be used?

The main reason why https website content cannot be collected is that https does not support file_get_contents to obtain content, so you can consider using curl to obtain it. (You need to enable curl, which can be viewed in pathinfo)

(1) Open phpcms\modules\collection\classes\collection.class.php

Add new functions in the class:

protected static function curl_request($url){   
        if (!function_exists('curl_init')) {   
            throw new Exception('server not install curl');   
        }   
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL,$url); 
        curl_setopt($ch, CURLOPT_HEADER,0); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//禁止调用时就输出获取到的数据 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); 
        $result = curl_exec($ch); 
        curl_close($ch); 
        return $result; 
    }

(2) Find the function get_htm, change the function

protected static function get_html($url, &$config) { 
        if (!empty($url) && $html = @file_get_contents($url)) { 
            if ($syscharset != $config['sourcecharset'] && $config['sourcetype'] != 4) { 
                $html = iconv($config['sourcecharset'], CHARSET.'//TRANSLIT//IGNORE', $html); 
            } 
            return $html; 
        } else { 
            return false; 
        } 
    }

to

protected static function get_html($url, &$config) { 
        if(substr(trim($url),0, 5) == "https"){
             $html = @self::curl_request($url);
        }else{
             $html = @file_get_contents($url);
        }
        if (!empty($url) && $html) { 
            if ($syscharset != $config['sourcecharset'] && $config['sourcetype'] != 4) { 
                $html = iconv($config['sourcecharset'], CHARSET.'//TRANSLIT//IGNORE', $html); 
            } 
            return $html; 
        } else { 
            return false; 
        } 
    }

and save it to obtain the test result

What should I do if the collection function of phpcms v9 cannot be used?

I don’t know if there are any other bugs, please leave a message for feedback!

PHP Chinese website, a large number of free PHPCMS tutorials, welcome to learn online!

The above is the detailed content of What should I do if the collection function of phpcms v9 cannot be used?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn