PHP中使用socket方式GET、POST数据实例

前端技术 2023/09/04 PHP

1. 使用 PHP 获得网页内容 GET方式

复制代码 代码如下:

<?php
function socketGet($url, &$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)<br />\\n\";
  return false;
 }
 else
 {
     $out = \"GET $path HTTP/1.1\\r\\n\";
     $out .= \"Host: $host\\r\\n\";
     $out .= \"Connection: Close\\r\\n\\r\\n\";
  $ret = \"\";
     fwrite($fp, $out);
     while (!feof($fp))
  {
         $ret .= fgets($fp, 128);
     }
     fclose($fp);
 }
 return true;
}
?>

2. 使用 PHP 向页面 POST 数据

复制代码 代码如下:

<?php
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)<br />\\n\";
  return false;
 }
 else
 {
     $out = \"POST $path HTTP/1.1\\r\\n\";
     $out .= \"Host: $host\\r\\n\";
  $out .= \"Content-Type: application/x-www-form-urlencoded\\r\\n\";
  $out .= \"Content-Length: \".strlen($data).\"\\r\\n\";
     $out .= \"Connection: Keep-Alive\\r\\n\\r\\n\";
  $out .= $data;
  $ret = \"\";
     fwrite($fp, $out);
     while (!feof($fp))
  {
         $ret .= fgets($fp, 128);
     }
     fclose($fp);
 }
 return true;
}
?>

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

本文地址:https://www.stayed.cn/item/10655

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。