长河-心灵的窗口
开发项目时,自己写的一个简单的HTTP POST类 PHP版本
上一篇 /
下一篇 2008-04-08 16:19:17
/ 个人分类:网页制作
开发项目时,自己写的一个简单的HTTP POST类 PHP版本
主要是POST数据库
GET数据我就不写了,大家都知道怎么搞
PHP 文件名: lib_postdata.php
<?php
/**
* HTTP POST 数据提交类
* @author xuwu <xw-09@163.com>
* @version 1.0 2008-4-8
* @copyright xuwu www.023si.com
* @package lib_postdata.php
*/
class post
{
var $flag = 0;
//要post的数据
var $argv = array(
'test'=>'data',
'test2'=>'data2');
var $post_url="/test.php";
var $host='127.0.0.1';
var $port=80;
var $referer="http://127.0.0.1/test.php";
//构造要post的字符串
/**
* 设置POST的相关参数
*
* @param int $flags 1 为不使用 & 为分隔
* @param array $argvs 提交的参数
* @param string $host 提交的主机
* @param string $post_url 提交的URL
* @param int $port 服务器的端口
* @param string $referer 上一页URL地址
*/
function setdata($flags,$argvs,$host,$post_url,$port,$referer){
$this->flags=$flags;
$this->argv=$argvs;
$this->host=$host;
$this->post_url=$post_url;
$this->port=$port;
$this->referer=$referer;
}
/**
* 提交前面设置的数据
*
* @return string 返回的数据
*/
function postdata(){
foreach ($this->argv as $key=>$value) {
if ($this->flags!=0) {
$params .= "&";
$this->flags = 1;
}
$params.= $key."="; $params.= urlencode($value);
$this->flags = 1;
}
$length = strlen($params);
//创建socket连接
// 错误处理
$fp = fsockopen($this->host,$this->port,$errno,$errstr,10) or exit($errstr."--->".$errno);
//构造post请求的头
$header = "POST ".$this->post_url." HTTP/1.1\r\n";
$header .= "Host:".$this->host."\r\n";
$header .= "Referer:".$this->referer."\r\n"; // 返回的URL
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".$length."\r\n";
$header .= "Connection: Close\r\n\r\n";
//添加post的字符串
$header .= $params."\r\n";
//发送post的数据
fputs($fp,$header);
$postreturn='';
$inheader = 1;
while (!feof($fp)) {
$line = fgets($fp,1024);
//去除请求包的头只显示页面的返回数据
if ($inheader && ($line == "\n" || $line == "\r\n")) {
$inheader = 0;
}
if ($inheader == 0) {
$postreturn.= $line;
}
}
// 关闭对象
fclose($fp);
return $postreturn;
}
}
?>
get.php
<?php
//session_start();
header("Content-Type:text/html; charset=utf-8");
echo "<div style=\"border:1px solid #0099FF; padding:1px; color:#999999".
" background:#CFF1FE; font-size:12px\"> 下面是get.php 返回的数据<br />";
echo "所有数据参数如下:<br />\n";
if(isset($_REQUEST)&&count($_REQUEST)>=1){
print_r($_REQUEST);
}else{
echo "<b>没有任何参数传过来</b>";
}
echo "<br />Accept 头部的内容:".$_SERVER['HTTP_ACCEPT'];
echo "<br />当前被请求的URL 地址:".$_SERVER['PHP_SELF'];
echo "<br />上一页URL 地址:".$_SERVER['HTTP_REFERER'];
echo "\n<hr />用户名:".$_POST['username']." 密码:".$_POST['password'];
echo "</div>";
?>
测试文件
test.php
<?php
include_once('lib_postdata.php');
$httpps=new post();
$PostData = array('username'=>'用户名','password'=>'密码');
$httpps->setdata(1,$PostData,'127.0.0.1','/get.php',80,'/test.php');
$p=$httpps->postdata();
if($p){
echo "<br />请求成功...<br />";
print_r($p);
}else{
echo "<br />请求发生错误...<br />";
print_r($p);
}
?>
测试的效果:
请求成功...
下面是get.php 返回的数据
所有数据参数如下:
Array ( [username] => 用户名 [password] => 密码 )
Accept 头部的内容:
当前被请求的URL 地址:/get.php
上一页URL 地址:/test.php
用户名:用户名 密码:密码
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG:
HTTP
PHP版本
POST类
数据库
项目时