sirryadmin 发表于 2017-10-31 10:30:26

discuz3.4设置https之后,UC通信失败解决方法

在UC目录找到文件:/public_html/uc_server/model/misc.php

加中间红色的那一段,从 if(substr($url,0,5)=='https' 到 return curl_exec($ch); }:


    function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE    , $ip = '', $timeout = 15, $block = TRUE, $encodetype= 'URLENCODE') {
      $return = '';
      $matches = parse_url($url);
      $scheme = $matches['scheme'];
      $host = $matches['host'];
      $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
      $port = !empty($matches['port']) ? $matches['port'] : 80;

                if(substr($url,0,5)=='https'){
                            $ch = curl_init($url);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                            if($post){
                                    curl_setopt($ch, CURLOPT_POST, 1);
                                    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
                            }
                            if($cookie){
                                    curl_setopt($ch, CURLOPT_COOKIE, $cookie);
                            }
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                            return curl_exec($ch);
                  }

      if($post) {
            $out = "OST $path HTTP/1.0\r\n";
            $header = "Accept: */*\r\n";
            $header .= "Accept-Language: zh-cn\r\n";
            $boundary = $encodetype == 'URLENCODE' ? '' : ';'.substr($post, 0, trim(strpos($post, "\n")));
            $header .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data$boundary\r\n";
            $header .= "User-Agent: $_SERVER\r\n";
            $header .= "Host: $hostport\r\n";
            $header .= 'Content-Length: '.strlen($post)."\r\n";
            $header .= "Connection: Close\r\n";
            $header .= "Cache-Control: no-cache\r\n";
            $header .= "Cookie: $cookie\r\n\r\n";
            $out .= $header.$post;


编后语:经测试,即使是UC显示通讯失败,但是在前台注册的时候还是同步的,对网站运行不影响,有强迫性的人就修改一下吧。
页: [1]
查看完整版本: discuz3.4设置https之后,UC通信失败解决方法