PHP利用fsockopen POST HTTP请求(URL)并获取返回值
2013-08-01 16:11
155 查看
<?php
$srv_ip = '192.168.1.5';//你的目标服务地址.
$srv_port = 80;//端口
$url = 'http://localhost/fsock.php'; //接收你post的URL具体地址
$fp = '';
$errno = 0;//错误处理
$errstr = '';//错误处理
$timeout = 10;//多久没有连上就中断
$post_str = "username=demo&password=hahaha";//要提交的内容.
//打开网络的 Socket 链接。
$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
if (!$fp){
echo('fp fail');
}
$content_length = strlen($post_str);
$post_header = "POST $url HTTP/1.1\r\n";
$post_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$post_header .= "User-Agent: MSIE\r\n";
$post_header .= "Host: ".$srv_ip."\r\n";
$post_header .= "Content-Length: ".$content_length."\r\n";
$post_header .= "Connection: close\r\n\r\n";
$post_header .= $post_str."\r\n\r\n";
fwrite($fp,$post_header);
$inheader = 1;
while(!feof($fp)){//测试文件指针是否到了文件结束的位置
$line = fgets($fp,1024);
//去掉请求包的头信息
if ($inheader && ($line == "\n" || $line == "\r\n")) {
$inheader = 0;
}
if ($inheader == 0) {
echo $line;
}
}
fclose($fp);
unset ($line);
?>
简要说明:代码第二行是你的IP地址或域名,第四行是你要POST的页面的具体地址,本例用的是fsock.php,fsock.php内容如下:
<?php
echo "username:".$_POST['username']."<br/>";
echo "password:".$_POST['password'];
?>
结果为:
username:demo
password:hahaha
$srv_ip = '192.168.1.5';//你的目标服务地址.
$srv_port = 80;//端口
$url = 'http://localhost/fsock.php'; //接收你post的URL具体地址
$fp = '';
$errno = 0;//错误处理
$errstr = '';//错误处理
$timeout = 10;//多久没有连上就中断
$post_str = "username=demo&password=hahaha";//要提交的内容.
//打开网络的 Socket 链接。
$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
if (!$fp){
echo('fp fail');
}
$content_length = strlen($post_str);
$post_header = "POST $url HTTP/1.1\r\n";
$post_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$post_header .= "User-Agent: MSIE\r\n";
$post_header .= "Host: ".$srv_ip."\r\n";
$post_header .= "Content-Length: ".$content_length."\r\n";
$post_header .= "Connection: close\r\n\r\n";
$post_header .= $post_str."\r\n\r\n";
fwrite($fp,$post_header);
$inheader = 1;
while(!feof($fp)){//测试文件指针是否到了文件结束的位置
$line = fgets($fp,1024);
//去掉请求包的头信息
if ($inheader && ($line == "\n" || $line == "\r\n")) {
$inheader = 0;
}
if ($inheader == 0) {
echo $line;
}
}
fclose($fp);
unset ($line);
?>
简要说明:代码第二行是你的IP地址或域名,第四行是你要POST的页面的具体地址,本例用的是fsock.php,fsock.php内容如下:
<?php
echo "username:".$_POST['username']."<br/>";
echo "password:".$_POST['password'];
?>
结果为:
username:demo
password:hahaha
相关文章推荐
- PHP中获取当前页面的完整URL
- PHP中获取当前页面的完整URL
- php url里#后面的参数无法获取
- php获取URL中带#号等特殊符号参数的解决方法
- PHP获取当前页面的URL
- PHP中获取当前页面的完整URL
- PHP中获取当前页面的完整URL
- PHP获取当前页面的名称,主机名,URL完整地址,URL参数,获取IP
- php中获取url与物理路径的总结
- php获取当前域名、主机、URL、端口、参数、网址、路径、代理等
- PHP获取URL地址的一些坑
- ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
- js解析url参数如http://www.taobao.com/index.php?key0=21&key1=你哈&(获取key0和key1的值)
- PHP中获取当前页面的完整URL
- PHP 获取指定URl页面中所有链接
- PHP中获取当前页面的完整URL
- 利用js动态生成URL以及获取URL参数
- js和php获取当前页面URL的各项参数
- php利用腾讯ip分享计划获取地理位置示例分享