• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> PHP 开发 >> PHP代码 >> 详细内容
 

推荐文章

 
 

热点文章

  • 3389远程服务器GHOST的视频教程
  • 利用纯真QQIP数据库做快速IP归属地查询
  • 天气预报小偷,根据IP自动判断地址
  • php在线文本编辑器
  • 实例(Smarty+FCKeditor新闻系统)
  • php里实现汉字转区位码
  • 对dvbbs.php 全文搜索的完全分析
  • php生成会动的gif图片代码
  • php的字符编码转换工具
  • DIV+CSS+PHP巨献——网页内容先竖排再横排
  • PHP获取网卡的MAC地址
  • 56.com视频采集接口程序(PHP)
 
 

相关文章

 
 

百度搜索

 
 

fsock发送表单类

  • 阅览次数:
  • 文章来源: CodePub整理
  • 原文作者:
  • 整理日期: 2008-08-16
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

支持Input、Textarea、Select、File、Radio、Checkbox、Select-multiple、File[],一般表单能发送了。
当元素值为文件路径的时候,视为文件上传,如路径错误则普通方式发送,文件要php可读到的文件,不支持远程文件,需要的可以自己写下远程读取文件。

CODE:
<?php
/***************************************************************************
*                        FSock_Class.php
*                ------------------------------
*        Date                : Jun 21, 2007
*        Copyright        : (C) 2007 - DreamSoft Co.,Ltd.
*        Mail                : Dream@Dreamsoft.Ca
*        Desc.                : Socktes
*        History                :
*                Date    :
*                Author  :
*                Modif.  :
***************************************************************************/

Class Fsock
{
        var $_Vars=array();
        var $_Boundary;

        function __construct()
        {
                defined('DEBUG') or define('DEBUG', 'LOG');
                $this->_Error();
        }

        /***
        * 发送数据
        * @param  string  $_Url   网址,http://...../test.php?ac=a
        * @param  string  $_Ip    来源ip
        * @param  string  $_Ref   来源
        * @return string
        */
        function Send($_Url, $_Ip='127.0.0.1', $_Ref='localhost')
        {
                $_PUrl = parse_url($_Url);
                if(!is_array($_PUrl)) return 901;
                $_PUrl['port']  = $_PUrl['port']  ? $_PUrl['port']  : 80;
                $_PUrl['query'] = $_PUrl['query'] ? $_PUrl['query'] : '';

                $_Fp = @fsockopen($_PUrl['host'], $_PUrl['port'], $_ErrNo, $_ErrStr);
                if(!$_Fp) { $this->_Error[902] .= "{$_ErrNo} {$_ErrStr}"; return 902; }

                srand((double)microtime()*1000000);
                $this->_Boundary = '---------------------------'.substr(md5(rand(0,32000)),0,10);

                $_Data = $this->_Post();

                fputs($_Fp, sprintf("POST %s%s%s HTTP/1.0\n", $_PUrl['path'], $_PUrl['query'] ? "?" : "", $_PUrl['query']));
                fputs($_Fp, "Host: {$_PUrl[host]}\n");
                fputs($_Fp, "X-Forwarded-For: $_Ip\r\n");
                fputs($_Fp, "Referer: $_Ref\n");
                fputs($_Fp, "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\n");
                fputs($_Fp, "Content-type: multipart/form-data; boundary={$this->_Boundary}\n");
                fputs($_Fp, "Content-length: ".strlen($_Data)."\n");
                fputs($_Fp, "Connection: close\n\n");
                fputs($_Fp, "$_Data\n");

                $_Status = fgets($_Fp, 100);
                if(!eregi("^HTTP/1\.. 200", $_Status)) return 903;

                $_Res = "";
                $_Header = 1;

                while(!feof($_Fp))
                {
                        $_Line = fgets($_Fp, 1024);
                        if($_Header && ($_Line == "\n" || $_Line == "\r\n")) { $_Header = 0; }
                        elseif(!$_Header) { $_Res .= $_Line; }
                }
                fclose($_Fp);
                return $_Res;
        }

        /***
        * 添加元素
        * @param  string  $_Name   元素名
        * @param  string  $_Value  值
        */
        function Add($_Name, $_Value)
        {
                if(is_array($_Name))
                {
                        $_Args = func_get_args();
                        foreach($_Args as $_Arr){ $this->_Vars = array_merge($_Arr, $this->_Vars); }
                } else { $this->_Vars[$_Name] = $_Value; }
        }

        function _Post()
        {
                $_Res = "";
                foreach($this->_Vars as $_k=>$_v)
                {
                        if(is_array($_v)) { for($i=0;$i<count($_v);$i++) $_Res .= $this->_Get($_k.'[]',$_v[$i]); }
                        else $_Res .= $this->_Get($_k,$_v);
                }
                return $_Res;
        }

        function _Get($_Name, $_Value)
        {
                $_Res = "--{$this->_Boundary}";
                $_Res.="\nContent-Disposition: form-data; name=\"{$_Name}\"";
                if(@is_file($_Value) and @is_readable($_Value))
                {
                        $_Data = join('', file($_Value));
                        $_Res .= "; filename=\"{$_Value}\"\nContent-Type: ".$this->_Mime($_Value);
                        $_Value= $_Data;
                }
                $_Res.= "\n\n{$_Value}\n";
                $_Res.= "--{$this->_Boundary}\n";
                return $_Res;
        }

        function _Mime($_File)
        {
                $_T = pathinfo($_File);
                $_E = $_T[extension];
                return empty($this->_Mime[$_E]) ? 'text/plain' : $this->_Mime[$_E];
        }

        function Error($_Error_Code)
        {
                if    (DEBUG == 'RETURN') { return $_Error_Code; }
                elseif(DEBUG == 'DIE')    { die($this->_Error[$_Error_Code]); }
                else {
                        global $__ERROR;
                        $__ERROR .= date('[m-d-Y  H:i:s]')." [{$_Error_Code}] {$this->_Error[$_Error_Code]} IN {$_SERVER['PHP_SELF']} - Class(Fsock)\r\n";
                        return false;
                }
        }

        function _Error()
        {
                $this->_Error[901] = 'Dream 901 - URL地址错误';
                $this->_Error[902] = 'Dream 902 - 无法打开URL,错误信息:';
                $this->_Error[903] = 'Dream 903 - 发送失败';
                $this->_Mime  = array(
                        'swf' => 'application/x-shockwave-flash',
                        'tar' => 'application/x-tar',
                        'zip' => 'application/zip',
                        'mid' => 'audio/midi',
                        'mp3' => 'audio/mpeg',
                        'ram' => 'audio/x-pn-realaudio',
                        'ra'  => 'audio/x-realaudio',
                        'wav' => 'audio/x-wav',
                        'bmp' => 'image/bmp',
                        'gif' => 'image/gif',
                        'jpg' => 'image/jpeg',
                        'png' => 'image/png',
                        'tif' => 'image/tiff',
                        'css' => 'text/css',
                        'txt' => 'text/plain',
                        'rtx' => 'text/richtext',
                        'rtf' => 'text/rtf',
                        'xml' => 'text/xml',
                        'mpeg'=> 'video/mpeg',
                        'mov' => 'video/quicktime',
                        'avi' => 'video/x-msvideo',
                        'movie'=> 'video/x-sgi-movie',
                        'wml' => 'text/vnd.wap.wml');
        }

        function __destruct()
        {
                $this->_Error = NULL;
                $this->_Vars  = NULL;
                $this->_Mime  = NULL;
                $this->_Boundary = NULL;
        }
}
远程提交表单用到这个。
下载:完整文件和演示

上一篇:PayPal全中文详解
下一篇:PHP初级程序员面试题及答案
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号