Home Backend Development PHP Tutorial PHP imitation asp xmlhttprequest request data code_PHP tutorial

PHP imitation asp xmlhttprequest request data code_PHP tutorial

Jul 20, 2016 am 11:09 AM
asp method php url code data Class name ask

Class name: httprequest($url="",$method="get",$usesocket=0)
//$url is the requested address; the default request method is get; $usesocket defaults to 0, Use the fsockopen method. If set to 1, use the socket_create method

method:
open($ip="",$port=-1) //Open a connection to the same server. By default, you do not need to set these two parameters (when a colleague used it in Linux, he requested an IP that was not resolved by hostname, so he added these two parameters to connect to the real server IP)
settimeout($timeout=0) //Set the method for obtaining data The timeout period must be set before the send method is called to be effective. The unit is seconds. The default value is 0 for no limit.
setrequestheader($key,$value="") //Set the request header and must be set before the send method is called. Valid
removerequestheader($key,$value="") //Remove the request header of the specified key value. It must be called before the send method is called to be valid
send($data="") //Send data $data to server
getresponsebody() //Get the text returned by the server
getallresponseheaders() //Get all header information of the server response
getresponseheader($key) //Get a certain header information of the server response, For example, server, set_cookie, etc.

attributes:
$url //URL to be requested
$method //Request method (post/get)
$port //Requested port
$hostname //The requested host name
$uri //The file part of the url
$protocol //The request protocol (http) (the above 5 attributes including this attribute are automatically analyzed by the program through the url)
$excption //Exception information
$_headers=array() //Request header array("key"=>"value")
$_senddata //Data sent to the server
$status //Returned status code
$statustext //Status information
$httpprotocolversion //The http protocol version of the server

Note: The
host header is automatically set by the program when requesting using the post method , content-length and content-type have been automatically set.
Page that supports gzip compression

inc.http.php tutorial file

class httprequest{
 public $url,$method,$port,$hostname,$uri,$protocol,$excption,$_headers=array(),$_senddata,$status,$statustext,$httpprotocolversion;
 private $fp=0,$_buffer="",$responsebody,$responseheader,$timeout=0,$usesocket;
 //构造函数
 function __construct($url="",$method="get",$usesocket=0){
  $this->url = $url;
  $this->method = strtoupper($method);
  $this->usesocket = $usesocket;
  $this->setrequestheader("accept","*/*");
  $this->setrequestheader("accept-language","zh-cn");
  $this->setrequestheader("accept-encoding","gzip, deflate");
  $this->setrequestheader("user-agent","httprequest class 1.0");  //可调用setrequestheader来修改
 }
 
 //连接服务器
 public function open($ip="",$port=-1){
  if(!$this->_geturlinfo()) return false;
  $this->setrequestheader("host",$this->hostname);
  $this->setrequestheader("connection","close");
  $ip = ($ip=="" ? $this->hostname : $ip);
  $port = ($port==-1 ? $this->port : $port);
  if($this->usesocket==1){
   if(!$this->fp=$socket=socket_create(af_inet,sock_stream,0)) {
    $this->excption="can not create socket";return false;
   }else{
    if(!socket_connect($this->fp,$ip, $port) ){
     $this->excption="can not connect to server " . $this->hostname . " on port" . $this->port;return false;
    }
   }
  }else{
   if(!$this->fp=fsockopen($ip, $port,$errno,$errstr,10)) {
    $this->excption="can not connect to server " . $this->hostname . " on port" . $this->port;return false;
   }
  }
  return true;
 }
 
 public function send($data=""){
  if(!$this->fp){$this->excption="is not a resource id";return false;}
  if($this->method=="get" && $data!=""){
   $s_str="?";
   if(strpos($this->uri,"?")>0) $s_str = "&";
   $this->uri.= $s_str . $data;
   $data="";
  }
  $senddata=$this->method . " " . $this->uri . " http/1.1rn";
  if($this->method=="post"){
   $this->setrequestheader("content-length",strlen($data));
   $this->setrequestheader("content-type", "application/x-www-form-urlencoded");
  }
  foreach($this->_headers as $keys => $value){
   $senddata .= "$keys: $valuern";
  }
  $senddata .= "rn";
  if($this->method=="post") $senddata .= $data;
  $this->_senddata = $senddata;
  if($this->usesocket==1){
   socket_write($this->fp,$this->_senddata);
   $buffer="";
   $timestart = time();
   do{
    if($this->timeout>0){
     if(time()-$timestart>$this->timeout){break;}
    }
    $this->_buffer.=$buffer;
    $buffer = socket_read($this->fp,4096);
   }while($buffer!="");
   socket_close($this->fp); 
  }else{
   fputs($this->fp, $senddata);
   $this->_buffer="";
   $timestart = time();
   while(!feof($this->fp))
   {
    if($this->timeout>0){
     if(time()-$timestart>$this->timeout){break;}
    }
    $this->_buffer.=fgets($this->fp,4096);
   }
   fclose($this->fp);   
  }
  $this->_splitcontent();
  $this->_getheaderinfo();
 }
 
 public function getresponsebody(){
  if($this->getresponseheader("content-encoding")=="gzip" && $this->getresponseheader("transfer-encoding")=="chunked"){
   return gzdecode_1(transfer_encoding_chunked_decode($this->responsebody));
  }else if($this->getresponseheader("content-encoding")=="gzip"){
   return gzdecode_1($this->responsebody);
  }else{
   return $this->responsebody;
  }
 }
 
 public function getallresponseheaders(){
  return  $this->responseheader;
 }
 
 public function getresponseheader($key){
  $key = str_replace("-","-",$key);
  $headerstr = $this->responseheader . "rn";
  $count = preg_match_all("/n$key:(.+?)r/is",$headerstr,$result,preg_set_order);
  if($count>0){
   $returnstr="";
   foreach($result as $key1=>$value){
    if(strtoupper($key)=="set-cookie"){
     $value[1] = substr($value[1],0,strpos($value[1],";"));
    }
    $returnstr .= ltrim($value[1]) . "; ";
   }
   $returnstr = substr($returnstr,0,strlen($returnstr)-2);
   return $returnstr;
  }else{return "";}
 }
 
 public function settimeout($timeout=0){
  $this->timeout = $timeout; 
 }
 
 public function setrequestheader($key,$value=""){
  $this->_headers[$key]=$value;
 }
 
 public function removerequestheader($key){
  if(count($this->_headers)==0){return;}
  $_temp=array();
  foreach($this->_headers as $keys => $value){
   if($keys!=$key){
    $_temp[$keys]=$value;
   }
  }
  $this->_headers = $_temp;
 }
 
 //拆分url
 private function _geturlinfo(){
  $url = $this->url;
  $count = preg_match("/^http://([^:/]+?)(:(d+))?/(.+?)$/is",$url,$result);
  if($count>0){
   $this->uri="/" . $result[4];
  }else{
   $count = preg_match("/^http://([^:/]+?)(:(d+))?(/)?$/is",$url,$result);
   if($count>0){
    $this->uri="/";
   }
  }
  if($count>0){
   $this->protocol="http";
   $this->hostname=$result[1];
   if(isset($result[2]) && $result[2]!="") {$this->port=intval($result[3]);}else{$this->port=80;}
   return true;
  }else{$this->excption="url format error";return false;}
 }
 
 private function _splitcontent(){
  $this->responseheader="";
  $this->responsebody="";
  $p1 = strpos($this->_buffer,"rnrn");
  if($p1>0){
   $this->responseheader = substr($this->_buffer,0,$p1);
   if($p1+4_buffer)){
    $this->responsebody = substr($this->_buffer,$p1+4);
   }
  }
 }
 
 private function _getheaderinfo(){
  $headerstr = $this->responseheader;
  $count = preg_match("/^http/(.+?)s(d+)s(.+?)rn/is",$headerstr,$result);
  if($count>0){
   $this->httpprotocolversion = $result[1];
   $this->status = intval($result[2]);
   $this->statustext = $result[3];
  }
 }
}


//以下两函数参考网络
function gzdecode_1 ($data) {
 $data = ($data);
 if (!function_exists ( 'gzdecode' )) {
  $flags = ord ( substr ( $data, 3, 1 ) );
  $headerlen = 10;
  $extralen = 0;
  $filenamelen = 0;
  if ($flags & 4) {
   $extralen = unpack ( 'v', substr ( $data, 10, 2 ) );
   $extralen = $extralen [1];
   $headerlen += 2 + $extralen;
  }
  if ($flags & 8) // filename
   $headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1;
  if ($flags & 16) // comment
   $headerlen = strpos ( $data, chr ( 0 ), $headerlen ) + 1;
  if ($flags & 2) // crc at end of file
   $headerlen += 2;
  $unpacked = @gzinflate ( substr ( $data, $headerlen ) );
  if ($unpacked === false)
   $unpacked = $data;
  return $unpacked;
 }else{
  return gzdecode($data);
 }
}

function transfer_encoding_chunked_decode($in) {
 $out = "";
 while ( $in !="") {
  $lf_pos = strpos ( $in, "12" );
  if ($lf_pos === false) {
   $out .= $in;
   break;
  }
  $chunk_hex = trim ( substr ( $in, 0, $lf_pos ) );
  $sc_pos = strpos ( $chunk_hex, ';' );
  if ($sc_pos !== false)
   $chunk_hex = substr ( $chunk_hex, 0, $sc_pos );
  if ($chunk_hex =="") {
   $out .= substr ( $in, 0, $lf_pos );
   $in = substr ( $in, $lf_pos + 1 );
   continue;
  }
  $chunk_len = hexdec ( $chunk_hex );
  if ($chunk_len) {
   $out .= substr ( $in, $lf_pos + 1, $chunk_len );
   $in = substr ( $in, $lf_pos + 2 + $chunk_len );
  } else {
   $in = "";
  }
 }
 return $out;
}
function utf8togb($str){
 return iconv("utf-8","gbk",$str);
}

function gbtoutf8($str){
 return iconv("gbk","utf-8",$str);
}
?>

response.asp教程文件

<%
response.cookies("a") = "anlige"
response.cookies("a").expires = dateadd("yyyy",1,now())
response.cookies("b")("c") = "wsdasdadsa"
response.cookies("b")("d") = "ddd"
response.cookies("b").expires = dateadd("yyyy",1,now())
response.write "querystring : " & request.querystring & "
"
for each v in request.querystring
 response.write v & "=" & request.querystring(v) & "
"
next
response.write "
form : " &  request.form  & "
"
for each v in request.form
 response.write v & "=" & request.form(v) & "
"
next
response.write "
url : " &  request.servervariables("url")  & "
"
response.write "referer : " &  request.servervariables("http_referer")  & "
"
response.write "host : " &  request.servervariables("http_host")  & "
"
response.write "user-agent : " &  request.servervariables("http_user_agent")  & "
"
response.write "cookie" & request.servervariables("http_cookie")
%>

index.php文件

get transfer data
post transfer dataSend source information to the server
Send user-agent to the server< ;/a>
Get the status returned by the server
Get the server response headers
Save image



< ;?php
include("inc_http.php");
$responseurl = "http://dev.mo.cn/aiencode/http/response.asp";

$act = isset($_get["action"]) ? $_get["action"] : "";
if($act == "get"){ //get transfer data

$myhttp = new httprequest("$responseurl?a=text");
$myhttp->open();
$myhttp->send("name=anlige&city=" . urlencode("Hangzhou"));
echo($myhttp->getresponsebody());

}else if($act == "post"){ //Post data

$myhttp = new httprequest ("$responseurl?a=text","post");
$myhttp->open();
$myhttp->send("name=anlige&city=" . urlencode("Hangzhou") );
echo($myhttp->getresponsebody());

}else if($act == "header_referer"){ //Send source information to the server

$myhttp = new httprequest("$responseurl?a=text","post");
$myhttp->open();
$myhttp->setrequestheader("referer","http:/ /www.baidu.com");
$myhttp->send("name=anlige&city=" . urlencode("Hangzhou"));
echo($myhttp->getresponsebody());

}else if($act == "header_useragent"){ //Send user-agent to the server

$myhttp = new httprequest("$responseurl?a=text","post" );
$myhttp->open();
$myhttp->setrequestheader("referer","http://www.baidu.com");
$myhttp->setrequestheader ("user-agent","mozilla/4.0 (compatible; msie 7.0; windows nt 6.0; trident/4.0)");
$myhttp->send("name=anlige&city=" . urlencode("Hangzhou" ));
echo($myhttp->getresponsebody());

}else if($act == "status"){ //Get the status returned by the server

$myhttp = new httprequest("$responseurl?a=text","post");
$myhttp->open();
$myhttp->send("name=anlige&city=" . urlencode ("Hangzhou"));
echo($myhttp->status . " " . $myhttp->statustext ."

");
echo( $myhttp->getresponsebody());

}else if($act == "get_headers"){ //Get server response headers

$myhttp = new httprequest("$responseurl ?a=text","get");
$myhttp->open();
$myhttp->send("name=anlige&city=" . urlencode("Hangzhou"));
echo($myhttp->getallresponseheaders()."

");
echo($myhttp->getresponseheader("server")."

");

}else if($act == "get_image"){

$myhttp = new httprequest("http://www.baidu .com/img/baidu_logo.gif");
$myhttp->open();
$myhttp->send();
$fp = @fopen("demo.gif", "w");
fwrite($fp,$myhttp->getresponsebody());
fclose($fp);
echo("}

?>


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/444789.htmlTechArticleClass name: httprequest($url=,$method=get,$usesocket=0) //$url is The requested address; the default request method is get; $usesocket defaults to 0 and uses the fsockopen method. If set to 1, use so...
Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles