当前位置: 代码迷 >> PHP >> Php 应用 fsockopen发送http请求
  详细解决方案

Php 应用 fsockopen发送http请求

热度:537   发布时间:2013-09-06 10:17:17.0
Php 使用 fsockopen发送http请求
<?php 
      function HTTP_Post($URL,$data, $referrer="") { 

        // parsing the given URL 
        $URL_Info=parse_url($URL); 

        // Building referrer 
        if($referrer=="") // if not given use this script as referrer 
          $referrer=$_SERVER["SCRIPT_URI"]; 

        // making string from $data 
        foreach($data as $key=>$value) 
          $values[]="$key=".urlencode($value); 
        $data_string=implode("&",$values); 

        // Find out which port is needed - if not given use standard (=80) 
        if(!isset($URL_Info["port"])) 
          $URL_Info["port"]=80; 

        // building POST-request: 
        $request.="POST ".$URL_Info["path"]." HTTP/1.1\n"; 
        $request.="Host: ".$URL_Info["host"]."\n"; 
        $request.="Referer: $referer\n"; 
        $request.="Content-type: application/x-www-form-urlencoded\n"; 
        $request.="Content-length: ".strlen($data_string)."\n"; 
        $request.="Connection: close\n"; 
        $request.="\n"; 
        $request.=$data_string."\n"; 

        $fp = fsockopen($URL_Info["host"],$URL_Info["port"]); 
        fputs($fp, $request); 
        while(!feof($fp)) { 
            $result .= fgets($fp, 128); 
        } 
        fclose($fp); 

        return $result; 
      } 

      $output1=HTTP_Post("http://www.example.com/script1.php",$_POST); 
      $output2=HTTP_Post("http://www.example.net/script2.php",$_POST); 
?>

注意:

Host:对应的值不能带有http://




  相关解决方案