Heim  >  Artikel  >  php教程  >  php模拟用户发送post数据方法

php模拟用户发送post数据方法

WBOY
WBOYOriginal
2016-06-08 17:24:511067Durchsuche

我们经常会听人说利用php模拟用户发送post数据,今天出于好奇我找了两个用不同方法来实例post数据的方法,有需要了解的朋友可以看看.

<script>ec(2);</script>

使用 PHP 向页面 POST 数据

 代码如下 复制代码
function socketPost($url, $data, &$ret)
{
 $urlArr = parse_url($url);
 $host = $urlArr['host'];
 $port = isset($urlArr['port'])?$urlArr['port']:80;
 $path = isset($urlArr['path'])?$urlArr['path']:"/";
 $fp = fsockopen($host, $port, $errno, $errstr, 30);
 if (!$fp)
 {
     echo "$errstr ($errno)
n";
  return false;
 }
 else
 {
     $out = "POST $path HTTP/1.1rn";
     $out .= "Host: $hostrn";
  $out .= "Content-Type: application/x-www-form-urlencodedrn";
  $out .= "Content-Length: ".strlen($data)."rn";
     $out .= "Connection: Keep-Alivernrn";
  $out .= $data;
  $ret = "";
     fwrite($fp, $out);
     while (!feof($fp))
  {
         $ret .= fgets($fp, 128);
     }
     fclose($fp);
 }
 return true;
}
?>

如果post报错,把$out .= "Connection: Keep-Alivernrn";中的Keep-Alive改成Close

利用php的socket模拟发送post数据的一个实例

 

 代码如下 复制代码
$domain = "127.0.0.1";  
$port = 80;  
$uri = "/ly/post.php";  
$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";  
$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";  
  
  
$sock = fsockopen($domain, $port, $errno, $errstr, 30);  
if (!$sock) die("$errstr ($errno)n");  
fputs($sock, $protocolstr);  
  
$headers = "";  
while ($str = trim(fgets($sock, 4096)))  
  $headers .= "$strn";  
  
$body = "";  
while (!feof($sock))  
  $body .= fgets($sock, 4096);  
fclose($sock);  
  
echo "

Response header:

n";  
echo $headers;  
echo "n";  
  
echo "

Response body:

n";  
echo $body;  
?>  

在这里我们就不讲关于fsockopen fwrite这些函数的用法了,只讲述模仿过程,有需要的可参考了下。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn