国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

file_get_contents()的另一種使用方法

2019-11-15 02:10:22
字體:
來源:轉載
供稿:網友
file_get_contents()的另一種使用方法

今天在網上看到一篇挺不錯的文章,拿過來保存學習一下。本文源地址為:http://www.kuitao8.com/20140727/2867.shtml

$data=file_get_contents("php://input");

    php://input 是個可以訪問請求的原始數據的只讀流。 POST 請求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA,因為它不依賴于特定的 php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認沒有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內存。 enctype="multapplication/x-www-data-urlencoded和multipart/form-data兩種情況下,PHP才會將http請求數據包中相應的數據填入全局變量$_POST  2,PHP不能識別的Content-Type類型的時候,會將http請求包中相應的數據填入變量$HTTP_RAW_POST_DATA  3, 只有Coentent-Type為multipart/form-data的時候,PHP不會將http請求數據包中的相應數據填入php://input,否則其它情況都會。填入的長度,由Coentent-Length指定。  4,只有Content-Type為application/x-www-data-urlencoded時,php://input數據才跟$_POST數據相一致。  5,php://input數據總是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更湊效,且不需要特殊設置php.ini  6,PHP會將PATH字段的query_path部分,填入全局變量$_GET。通常情況下,GET方法提交的http請求,body為空。 例子 1.php用file_get_contents("php://input")或者$HTTP_RAW_POST_DATA可以接收xml數據 比如:  getXML.php;//接收XML地址  <?php      $xmldata = file_get_contents("php://input");      $data = (array)simplexml_load_string($xmldata); ?>    這里的$data就是包含xml數據的數組,具體php解析xml數據更新詳細的方法  sendXML.php <?php      $xml = '<xml>xmldata</xml>';//要發送的xml      $url = 'http://localhost/test/getXML.php';//接收XML地址       $header = 'Content-type: text/xml';//定義content-type為xml      $ch = curl_init(); //初始化curl      curl_setopt($ch, CURLOPT_URL, $url);//設置鏈接      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//設置是否返回信息      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//設置HTTP頭      curl_setopt($ch, CURLOPT_POST, 1);//設置為POST方式      curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);//POST數據      $response = curl_exec($ch);//接收返回信息      if(curl_errno($ch)){//出錯則顯示錯誤信息      PRint curl_error($ch);      }      curl_close($ch); //關閉curl鏈接      echo $response;//顯示返回信息 ?>   2.一個手機上傳圖片到服務器的小程序  上傳文件   <?php      //@file phpinput_post.php      $data=file_get_contents('btn.png');      $http_entity_body = $data;      $http_entity_type = 'application/x-www-form-urlencoded';      $http_entity_length = strlen($http_entity_body);      $host = '127.0.0.1';      $port = 80;      $path = '/image.php';      $fp = fsockopen($host, $port, $error_no, $error_desc, 30);      if ($fp){         fputs($fp, "POST {$path} HTTP/1.1/r/n");         fputs($fp, "Host: {$host}/r/n");         fputs($fp, "Content-Type: {$http_entity_type}/r/n");         fputs($fp, "Content-Length: {$http_entity_length}/r/n");         fputs($fp, "Connection: close/r/n/r/n");         fputs($fp, $http_entity_body . "/r/n/r/n");          while (!feof($fp)) {          $d .= fgets($fp, 4096);         }         fclose($fp);         echo $d;      } ?>    接收文件  <?php         /**          *Recieve image data         **/            error_reporting(E_ALL);       function get_contents() {            $xmlstr= file_get_contents("php://input");         $filename=time().'.png';         if(file_put_contents($filename,$strxml)){          echo 'success';         }else{          echo 'failed';         }         }         get_contents(); ?> 3.獲取HTTP請求原文  /**      * 獲取HTTP請求原文      * @return string      */     function get_http_raw() {      $raw = '';       // (1) 請求行      $raw .= $_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI'].' '.$_SERVER['SERVER_PROTOCOL']."/r/n";       // (2) 請求Headers      foreach($_SERVER as $key => $value) {         if(substr($key, 0, 5) === 'HTTP_') {          $key = substr($key, 5);          $key = str_replace('_', '-', $key);           $raw .= $key.': '.$value."/r/n";         }      }       // (3) 空行      $raw .= "/r/n";       // (4) 請求Body      $raw .= file_get_contents('php://input');       return $raw; }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广昌县| 光泽县| 兴化市| 义乌市| 宜兰县| 登封市| 陆丰市| 衡阳市| 梁山县| 渑池县| 伊川县| 宝兴县| 金塔县| 文昌市| 余干县| 灵台县| 台湾省| 明光市| 黄陵县| 孝感市| 正宁县| 汉中市| 康马县| 平遥县| 阿拉善盟| 开原市| 石楼县| 共和县| 合肥市| 抚顺市| 乌拉特后旗| 新昌县| 黄梅县| 招远市| 日喀则市| 灌阳县| 新竹县| 滨海县| 东丽区| 女性| 英德市|