【问题标题】:What is cURL in PHP?PHP 中的 cURL 是什么?
【发布时间】:2011-03-04 23:44:20
【问题描述】:

在 PHP 中,我在许多 PHP 项目中看到了 cURL 这个词。它是什么?它是如何工作的?

参考链接:cURL

【问题讨论】:

标签: php curl


【解决方案1】:

cURL 是一个库,可让您在 PHP 中发出 HTTP 请求。您需要了解的有关它(以及大多数其他扩展)的所有信息都可以在PHP manual 中找到。

为了使用 PHP 的 cURL 函数 您需要安装 » libcurl 包裹。 PHP 要求您使用 libcurl 7.0.2-beta 或更高版本。在 PHP 中 4.2.3,您将需要 libcurl 版本 7.9.0 或更高版本。从 PHP 4.3.0 开始,您需要一个 libcurl 版本 7.9.8 或更高版本。 PHP 5.0.0 需要 libcurl 7.10.5 或更高版本。

您也可以在不使用 cURL 的情况下发出 HTTP 请求,但它需要在您的 php.ini 文件中启用 allow_url_fopen

// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');

【讨论】:

  • @Johannes,没有 cURL 是否可以进行 HTTP 发布请求?
  • 这意味着,如果服务器'allow_url_fopen'没有启用,那么我们就不能使用file_get_contents()函数,但是在这种情况下我们可以使用curl函数来达到同样的目的吗?我说的对吗?
  • @Arun 是的,如果 'allow_url_fopen' 没有启用,你可以使用 curl 代替 file_get_contents() 函数。 Curl 使您能够设置更多选项,如 POST 数据、cookie 等,而 file_get_contents() 不提供。
【解决方案2】:

cURL 是一种您可以从代码中点击 URL 以从中获取 html 响应的方法。 cURL 表示客户端 URL,它允许您连接其他 URL 并在您的代码中使用它们的响应。

【讨论】:

  • 在 Javascript 中就像在代码中执行 ajax 一样。 PHP 的不同之处在于您同步执行,而在 Javascript 中您则异步执行。
【解决方案3】:

PHP 中的 CURL:

总结:

PHP 中的curl_exec 命令是从控制台使用curl 的桥梁。 curl_exec 可以轻松快速地执行 GET/POST 请求、接收来自其他服务器(如 JSON)的响应以及下载文件。

警告,危险:

curl 如果使用不当是邪恶和危险的,因为它完全是从互联网上获取数据。有人可以在您的 curl 和另一台服务器之间插入 rm -rf / 到您的响应中,然后为什么我会掉到控制台并且 ls -l 甚至不再工作了?因为你错误地低估了 curl 的危险力量。不要相信从 curl 返回的任何东西都是安全的,即使您正在与自己的服务器交谈。您可能会撤回恶意软件以减轻傻瓜的财富。

示例:

这些是在 Ubuntu 12.10 上完成的

  1. 命令行中的基本 curl:

    el@apollo:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  492k  100  492k    0     0  1077k      0 --:--:-- --:--:-- --:--:-- 1240k
    

    然后你就可以在firefox中打开你的gif了:

    firefox mycat.gif
    

    光荣的猫进化出刚地弓形虫,让女人养猫,男人也养女人。

  2. cURL 示例获取访问 google.com 的请求,回显到命令行:

    这是通过 phpsh 终端完成的:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
    
    php> curl_exec($ch);
    

    将一堆压缩的 html 和 javascript(来自 google)打印并转储到控制台。

  3. cURL 示例将响应文本放入变量中:

    这是通过 phpsh 终端完成的:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif');
    
    php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    php> $contents = curl_exec($ch);
    
    php> echo $contents;
    

    该变量现在包含二进制文件,它是一只猫的动画 gif,可能性是无限的。

  4. 在 PHP 文件中执行 curl:

    将此代码放入名为 myphp.php 的文件中:

    <?php
      $curl_handle=curl_init();
      curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com');
      curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
      curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
      $buffer = curl_exec($curl_handle);
      curl_close($curl_handle);
      if (empty($buffer)){
          print "Nothing returned from url.<p>";
      }
      else{
          print $buffer;
      }
    ?>
    

    然后通过命令行运行它:

    php < myphp.php
    

    您运行了 myphp.php 并通过 php 解释器执行了这些命令,并将大量凌乱的 html 和 javascript 转储到屏幕上。

    您可以使用 curl 执行 GETPOST 请求,您只需指定此处定义的参数: Using curl to automate HTTP jobs

危险提示:

小心倾倒 curl 输出,如果其中任何一个被解释和执行,您的盒子将被拥有,您的信用卡信息将被出售给第三方,并且您将从阿拉巴马州单人地板获得 900 美元的神秘费用是海外信用卡欺诈犯罪团伙的前线公司。

【讨论】:

  • 你能提供一个链接来备份你在这里提到的“危险”吗?
  • @floatingLomas Eric 试图解释的是所有用户提供的内容都存在的一个问题:你不能信任任何人。与用户提供的内容一样,可以使用简单的 MITM 来利用 cURL 将恶意代码注入您的应用程序。当然,这只是一个问题,如果它得到“解释和执行”,正如 Eric 正确陈述的那样。只需搜索 eval is evil 就会发现很多可能的安全风险(例如stackoverflow.com/questions/951373/when-is-eval-evil-in-php
  • @floatingLomas ...另外,Eric 似乎对向他收取 900 美元的阿拉巴马州单人地板公司感到偏执。
  • 除了iframe还有其他选择吗?
  • 如果他们真的要卖给你地板,这不是妄想症。
【解决方案4】:

cURL 是一种您可以从代码中点击 URL 以从中获取 HTML 响应的方法。它用于 PHP 语言的命令行 cURL。

<?php
// Step 1
$cSession = curl_init(); 
// Step 2
curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false); 
// Step 3
$result=curl_exec($cSession);
// Step 4
curl_close($cSession);
// Step 5
echo $result;
?> 

第 1 步:使用 curl_init() 初始化 curl 会话。

第 2 步:为CURLOPT_URL 设置选项。该值是我们将请求发送到的 URL。使用参数q= 附加搜索词curl。设置CURLOPT_RETURNTRANSFER 的选项。 True 将告诉 curl 返回字符串而不是打印出来。为CURLOPT_HEADER 设置选项,false 将告诉 curl 忽略返回值中的标头。

第 3 步:使用 curl_exec() 执行 curl 会话。

第 4 步:关闭我们创建的 curl 会话。

第五步:输出返回字符串。

public function curlCall($apiurl, $auth, $rflag)
{
    $ch = curl_init($apiurl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    if($auth == 'auth') { 
        curl_setopt($ch, CURLOPT_USERPWD, "passw:passw");
    } else {
        curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1");
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $dt = curl_exec($ch);        
    curl_close($ch);
    if($rflag != 1) {
        $dt = json_decode($dt,true);        
    }
    return $dt;
}

这也用于身份验证。我们还可以设置用户名和密码进行认证。

有关更多功能,请参阅用户手册或以下教程:

http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl

【讨论】:

    【解决方案5】:

    首先让我们了解curl、libcurl和PHP/cURL的概念。

    1. curl:使用 URL 语法获取或发送文件的命令行工具。

    2. libcurl:由 Daniel Stenberg 创建的库,它允许您使用许多不同类型的协议连接和通信到许多不同类型的服务器。 libcurl 目前支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。 libcurl 还支持 HTTPS 证书、HTTP POST、HTTP PUT、FTP 上传(这也可以通过 PHP 的 ftp 扩展完成)、基于 HTTP 表单的上传、代理、cookie 和用户+密码身份验证。

    3. PHP/cURL:使 PHP 程序可以使用 libcurl 的 PHP 模块。

    使用方法:

    step1:使用 curl_init() 初始化 curl 会话。

    step2:设置 CURLOPT_URL 的选项。这个值是我们将请求发送到的 URL。使用参数“q=”附加一个搜索词“curl”。设置选项 CURLOPT_RETURNTRANSFER,true 将告诉 curl 返回字符串而不是打印出来。为 CURLOPT_HEADER 设置选项,false 将告诉 curl 忽略返回值中的标题。

    step3:使用 curl_exec() 执行 curl 会话。

    step4:关闭我们创建的 curl 会话。

    step5:输出返回字符串。

    制作演示

    您将需要创建两个 PHP 文件并将它们放置到您的 Web 服务器可以从中提供 PHP 文件的文件夹中。就我而言,为了简单起见,我将它们放入 /var/www/ 中。

    1. helloservice.php2。演示.php

    helloservice.php 非常简单,基本上只是回显它获得的任何数据:

    <?php
      // Here is the data we will be sending to the service
      $some_data = array(
        'message' => 'Hello World', 
        'name' => 'Anand'
      );  
    
      $curl = curl_init();
      // You can also set the URL you want to communicate with by doing this:
      // $curl = curl_init('http://localhost/echoservice');
    
      // We POST the data
      curl_setopt($curl, CURLOPT_POST, 1);
      // Set the url path we want to call
      curl_setopt($curl, CURLOPT_URL, 'http://localhost/demo.php');  
      // Make it so the data coming back is put into a string
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      // Insert the data
      curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data);
    
      // You can also bunch the above commands into an array if you choose using: curl_setopt_array
    
      // Send the request
      $result = curl_exec($curl);
    
      // Get some cURL session information back
      $info = curl_getinfo($curl);  
      echo 'content type: ' . $info['content_type'] . '<br />';
      echo 'http code: ' . $info['http_code'] . '<br />';
    
      // Free up the resources $curl is using
      curl_close($curl);
    
      echo $result;
    ?>
    

    2.demo.php页面,可以看到结果:

    <?php 
       print_r($_POST);
       //content type: text/html; charset=UTF-8
       //http code: 200
       //Array ( [message] => Hello World [name] => Anand )
    ?>
    

    【讨论】:

    • 你好,请告诉我关于页面 1. using-curl.php
    • @Kaveh:抱歉,我忘记了第二页。更新了答案。现在请检查。
    【解决方案6】:

    PHP 的 cURL 扩展旨在允许您在 PHP 脚本中使用各种 Web 资源。

    【讨论】:

      【解决方案7】:

      PHP 中的 cURL 是从 php 语言中使用命令行 cURL 的桥梁

      【讨论】:

        【解决方案8】:

        卷曲

        • cURL 是一种您可以从代码中点击 URL 以从中获取 HTML 响应的方法。
        • 用于 PHP 语言的命令行 cURL。
        • cURL 是一个库,可让您在 PHP 中发出 HTTP 请求。

        PHP 支持由 Daniel Stenberg 创建的库 libcurl,它允许您使用许多不同类型的协议连接到许多不同类型的服务器并与之通信。 libcurl 目前支持 http、https、ftp、gopher、telnet、dict、file 和 ldap 协议。 libcurl 还支持 HTTPS 证书、HTTP POST、HTTP PUT、FTP 上传(这也可以通过 PHP 的 ftp 扩展完成)、基于 HTTP 表单的上传、代理、cookie 和用户+密码身份验证。

        一旦你编译了支持 cURL 的 PHP,你就可以开始使用 cURL 函数了。 cURL 函数背后的基本思想是,您使用 curl_init() 初始化 cURL 会话,然后您可以通过 curl_setopt() 设置传输的所有选项,然后您可以使用 curl_exec() 执行会话,然后您使用 curl_close() 结束会话。

        示例代码

        // error reporting
        error_reporting(E_ALL);
        ini_set("display_errors", 1);
        
        //setting url
        $url = 'http://example.com/api';
        
        //data
        $data = array("message" => "Hello World!!!");
        
        try {
            $ch = curl_init($url);
            $data_string = json_encode($data);
        
            if (FALSE === $ch)
                throw new Exception('failed to initialize');
        
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
                curl_setopt($ch, CURLOPT_TIMEOUT, 5);
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        
                $output = curl_exec($ch);
        
            if (FALSE === $output)
                throw new Exception(curl_error($ch), curl_errno($ch));
        
            // ...process $output now
        } catch(Exception $e) {
        
            trigger_error(sprintf(
                'Curl failed with error #%d: %s',
                $e->getCode(), $e->getMessage()),
                E_USER_ERROR);
        }
        

        更多信息,请查看-

        【讨论】:

          【解决方案9】:

          php curl 函数(POST、GET、DELETE、PUT)

          function curl($post = array(), $url, $token = '', $method = "POST", $json = false, $ssl = true){
              $ch = curl_init();  
              curl_setopt($ch, CURLOPT_URL, $url);    
              curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
              if($method == 'POST'){
                  curl_setopt($ch, CURLOPT_POST, 1);
              }
              if($json == true){
                  curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
                  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                      'Content-Type: application/json','Authorization: Bearer '.$token,'Content-Length: ' . strlen($post)));
              }else{
                  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
                  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
              }
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_SSLVERSION, 6);
              if($ssl == false){
                  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
              }
              // curl_setopt($ch, CURLOPT_HEADER, 0);     
              $r = curl_exec($ch);    
              if (curl_error($ch)) {
                  $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                  $err = curl_error($ch);
                  print_r('Error: ' . $err . ' Status: ' . $statusCode);
                  // Add error
                  $this->error = $err;
              }
              curl_close($ch);
              return $r;
          }
          

          【讨论】:

            【解决方案10】:

            Php curl 类(GET、POST、FILES UPLOAD、SESSIONS、SEND POST JSON、FORCE SELFSIGNED SSL/TLS):

            <?php
                // Php curl class
                class Curl {
            
                    public $error;
            
                    function __construct() {}
            
                    function Get($url = "http://hostname.x/api.php?q=jabadoo&txt=gin", $forceSsl = false,$cookie = "", $session = true){
                        // $url = $url . "?". http_build_query($data);
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_HEADER, false);        
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
                        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                        if($session){
                            curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                            curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                            curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
                        }
                        if($forceSsl){
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
                        }
                        if(!empty($cookie)){            
                            curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
                        }
                        $info = curl_getinfo($ch);
                        $res = curl_exec($ch);        
                        if (curl_error($ch)) {
                            $this->error = curl_error($ch);
                            throw new Exception($this->error);
                        }else{
                            curl_close($ch);
                            return $res;
                        }        
                    }
            
                    function GetArray($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
                        $url = $url . "?". http_build_query($data);
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_HEADER, false);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
                        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                        if($session){
                            curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                            curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                            curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
                        }
                        if($forceSsl){
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
                        }
                        if(!empty($cookie)){
                            curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
                        }
                        $info = curl_getinfo($ch);
                        $res = curl_exec($ch);        
                        if (curl_error($ch)) {
                            $this->error = curl_error($ch);
                            throw new Exception($this->error);
                        }else{
                            curl_close($ch);
                            return $res;
                        }        
                    }
            
                    function PostJson($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
                        $data = json_encode($data);
                        $ch = curl_init($url);                                                                      
                        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                        curl_setopt($ch, CURLOPT_POST, 1);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                                                                  
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
                        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                        if($session){
                            curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                            curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                            curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
                        }
                        if($forceSsl){
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
                        }
                        if(!empty($cookie)){
                            curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
                        }
                        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                            'Authorization: Bearer helo29dasd8asd6asnav7ffa',                                                      
                            'Content-Type: application/json',                                                                                
                            'Content-Length: ' . strlen($data))                                                                       
                        );        
                        $res = curl_exec($ch);
                        if (curl_error($ch)) {
                            $this->error = curl_error($ch);
                            throw new Exception($this->error);
                        }else{
                            curl_close($ch);
                            return $res;
                        } 
                    }
            
                    function Post($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $files = array('ads/ads0.jpg', 'ads/ads1.jpg'), $forceSsl = false, $cookie = "", $session = true){
                        foreach ($files as $k => $v) {
                            $f = realpath($v);
                            if(file_exists($f)){
                                $fc = new CurlFile($f, mime_content_type($f), basename($f)); 
                                $data["file[".$k."]"] = $fc;
                            }
                        }
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_setopt($ch, CURLOPT_POST, 1);
                        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");        
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
                        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // !!!! required as of PHP 5.6.0 for files !!!
                        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
                        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
                        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                        if($session){
                            curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                            curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                            curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
                        }
                        if($forceSsl){
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
                        }
                        if(!empty($cookie)){
                            curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
                        }
                        $res = curl_exec($ch);
                        if (curl_error($ch)) {
                            $this->error = curl_error($ch);
                            throw new Exception($this->error);
                        }else{
                            curl_close($ch);
                            return $res;
                        } 
                    }
                }
            ?>
            

            例子:

            <?php
                $urlget = "http://hostname.x/api.php?id=123&user=bax";
                $url = "http://hostname.x/api.php";
                $data = array("name" => "Max", "age" => "36");
                $files = array('ads/ads0.jpg', 'ads/ads1.jpg');
            
                $curl = new Curl();
                echo $curl->Get($urlget, true, "token=12345");
                echo $curl->GetArray($url, $data, true);
                echo $curl->Post($url, $data, $files, true);
                echo $curl->PostJson($url, $data, true);
            ?>
            

            php文件:api.php

            <?php
                /*
                $Cookie = session_get_cookie_params();
                print_r($Cookie);
                */
                session_set_cookie_params(9000, '/', 'hostname.x', isset($_SERVER["HTTPS"]), true);
                session_start();
            
                $_SESSION['cnt']++;
                echo "Session count: " . $_SESSION['cnt']. "\r\n";
                echo $json = file_get_contents('php://input');
                $arr = json_decode($json, true);
                echo "<pre>";
                if(!empty($json)){ print_r($arr); }
                if(!empty($_GET)){ print_r($_GET); }
                if(!empty($_POST)){ print_r($_POST); }
                if(!empty($_FILES)){ print_r($_FILES); }
                // request headers
                print_r(getallheaders());
                print_r(apache_response_headers());
                // Fetch a list of headers to be sent.
                // print_r(headers_list());
            ?>
            

            【讨论】:

              猜你喜欢
              • 2018-05-10
              • 1970-01-01
              • 1970-01-01
              • 2012-11-05
              • 1970-01-01
              • 2016-08-01
              • 1970-01-01
              • 1970-01-01
              • 2016-07-17
              相关资源
              最近更新 更多