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

首頁 > 開發 > PHP > 正文

php模擬用戶發送post數據方法

2024-05-04 21:58:19
字體:
來源:轉載
供稿:網友

我們經常會聽人說利用php模擬用戶發送post數據,今天出于好奇我找了兩個用不同方法來實例post數據的方法,使用 PHP 向頁面 POST 數據,代碼如下:

  1. <?php 
  2. function socketPost($url$data, &$ret
  3.  $urlArr = parse_url($url); 
  4.  $host = $urlArr['host']; 
  5.  $port = isset($urlArr['port'])?$urlArr['port']:80; 
  6.  $path = isset($urlArr['path'])?$urlArr['path']:"/"
  7.  $fp = fsockopen($host$port$errno$errstr, 30); 
  8.  if (!$fp
  9.  { 
  10.      echo "$errstr ($errno)<br />n"
  11.   return false; 
  12.  } 
  13.  else 
  14.  { 
  15.      $out = "POST $path HTTP/1.1rn"
  16.      $out .= "Host: $hostrn"
  17.   $out .= "Content-Type: application/x-www-form-urlencodedrn"
  18.   $out .= "Content-Length: ".strlen($data)."rn"
  19.      $out .= "Connection: Keep-Alivernrn"
  20.   $out .= $data
  21.   $ret = ""
  22.      fwrite($fp$out); 
  23.      while (!feof($fp)) 
  24.   { 
  25.          $ret .= fgets($fp, 128); 
  26.      } 
  27.      fclose($fp); 
  28.  } 
  29.  return true; 
  30. ?> 

如果post報錯,把$out .= "Connection: Keep-Alivernrn";中的Keep-Alive改成Close,利用php的socket模擬發送post數據的一個實例,代碼如下:

  1. <?php    
  2. $domain = "127.0.0.1";    
  3. $port = 80;    
  4. $uri = "/ly/post.php";    
  5. $data="txtName=111&txtEmail=222@1.net&rabSex=%D0%A1%BD%E3&txtFrom=%BD%AD%CE%F7%C1%FA%C4%CF&txtQq=2222&txtUrl=33333333&txtFace=images%2Fface%2Fface05.gif&txtEm=images%2Fem%2Fem01.gif&txtBody=rrr";    
  6. $protocolstr ="POST {$uri} HTTP/1.1rnHost: {$domain}rnContent-type: application/x-www-form-urlencodedrnContent-length: " . strlen($data) . "rnReferer: http://10.10.10.10/ly/index.phprnUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)rnAccept: */*rnrn{$data}rnrn";  
  7. $sock = fsockopen($domain$port$errno$errstr, 30);    
  8. if (!$sockdie("$errstr ($errno)n");    
  9. fputs($sock$protocolstr);  
  10. $headers = "";    
  11. while ($str = trim(fgets($sock, 4096)))    
  12.   $headers .= "$strn";  
  13. $body = "";    
  14. while (!feof($sock))    
  15.   $body .= fgets($sock, 4096);    
  16. fclose($sock);  
  17. echo "<h2>Response header:</h2>n";    
  18. echo $headers;    
  19. echo "n";  
  20. echo "<h2>Response body:</h2>n";    
  21. echo $body;    
  22. ?>    

在這里我們就不講關于fsockopen fwrite這些函數的用法了,只講述模仿過程,有需要的可參考了下.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘孜| 黑龙江省| 高陵县| 琼结县| 拉萨市| 开江县| 当阳市| 仪征市| 兴仁县| 宁海县| 陕西省| 逊克县| 奇台县| 巴林左旗| 收藏| 嘉祥县| 易门县| 广元市| 巫溪县| 恩平市| 菏泽市| 陈巴尔虎旗| 正安县| 汉川市| 延寿县| 曲阜市| 崇州市| 彭阳县| 连山| 浙江省| 江华| 西乌珠穆沁旗| 三明市| 郁南县| 师宗县| 江源县| 昌图县| 安阳市| 若羌县| 东安县| 固镇县|