PHP模拟请求提交数据有 file_get_contentscurlsocket,它们都可以通过模拟表单提交,实现数据传输。

1、file_get_contents模拟POST提交:

$arr=array('http'=>array('method'=>'POST', 'content'=>'name=wang&pwd=123'));

$result = file_get_contents("要请求的地址", false, stream_context_create($arr));

2、curl模拟POST提交:

$arr = array(
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HEADER => false,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => array(‘name’=>’wang’,’pwd’=>’123′)
);

$ch = curl_init($url);

curl_setopt_array($ch, $arr);

$response = curl_exec($ch);

curl_close($ch);

echo $response;

3、socket来模拟POST提交:

$url = "www.wangzhiguang.com.cn";

$host = 80;

$content = "name=wang&pwd=123";

$fp = fsockopen($content, $host, $errno, $errstr);

$length = strlen($content);

$header = <<<HEADER
  POST {$url} HTTP/1.1
  Host: {$host}
  Content-Type: application/x-www-form-urlencoded
  Content-Length: {$length}
  Connection: close
  {$content}
HEADER;

fwrite($fp, $header);

while (!feof($fp)) {
    $result .= fread($fp, 512);
}

$result = explode("\r\n\r\n", $result, 2);

connection: close和post数据之间要空一行

最好通过返回值$result你就可以看到发送状态了。

文档更新时间: 2021-09-29 14:52   作者:admin