长河-心灵的窗口

开发项目时,自己写的一个简单的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类 数据库 项目时

长河-心灵的窗口 引用 删除 xuwu125   /   2008-04-08 16:35:31
返回信息
请求成功...

下面是get.php 返回的数据
所有数据参数如下:
Array ( [username] => 用户名 [password] => 密码 )
Accept 头部的内容:
当前被请求的URL 地址:/e10shangweb/cert/get.php
上一页URL 地址:/test.php
--------------------------------------------------------------------------------
用户名:用户名 密码:密码
长河-心灵的窗口 引用 删除 xuwu125   /   2008-04-08 16:34:54
$httpps=new post();
$httpps->setdata(1,$PostData,'127.0.0.1','/e10shangweb/cert/get.php',80,'/test.php');
$p=$httpps->postdata();
if($p){
        echo "<br />请求成功...<br />";
        print_r($p);
}else{
        echo "<br />请求发生错误...<br />";
        print_r($p);
}
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-11-12  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 156588
  • 日志数: 44
  • 图片数: 2
  • 影音数: 18
  • 文件数: 32
  • 书签数: 186
  • 建立时间: 2007-09-20
  • 更新时间: 2008-10-15

RSS订阅

Open Toolbar