文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程CGI/PerlCGI教程(7)解码数据发送给CGI脚本
精品推荐
特别推荐
·在CGI中如何使用cookie的方法
·CGI脚本在WIN2000、WINNT下安装
热点TOP10
·cgic: 为C语言编写CGI的C函数库
·Perl实例:
·在CGI中如何使用cookie的方法
·CGI 安全问题
·怎样一次打印多个文件
·CGI脚本在WIN2000、WINNT下安装
·CGI教程(4)HTML 表单
·cgilib例
·Perl教学 第十二篇 Perl5中的引用之二
·Perl教学 第十二篇 Perl5中的引用之一
·Perl/Tk FAQ - 4. 哪里有Perl/Tk?
·用Perl写出自己的安全工具--初级
·购建ASP、CGI、PHP+MySQL运行环境——服务器运行环境配置全攻略(二)
·跟我学Perl
·访问标准CGI变量
·关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞
·关于Sendmail和Perl的邮件附件过滤系统
·关于odbc的一个文挡说明
·建立个人服务器脱机调试CGI脚本
·计数器的编写方法

CGI教程(7)解码数据发送给CGI脚本

日期:2007年5月10日 作者: 查看:[大字体 中字体 小字体]


解码数据发送给CGI脚本

  当使用表单的时候,收集在表单的信息给发送给CGI脚本用于处理。这个信息被放置在环境变量QUERY_STRING中。

  为了清除地将信息传递给环境变量QUERY_STRING,被修改锚标签的表单将被使用。在这个被修改的锚标签中,传递给环境变量QUERY_STRING的数据是在指示CGI脚本的URL之后附上的。字符”?”被用来分隔指定CGI脚本以及发送给脚本的数据的URL。比如:

<A HREF="/cgi-bin/script?name=Your+name&action=find"> Link </A>

其中数据"name=Your+name&action=find"被放置在环境变量QUERY_STRING中并且CGI脚本被执行。

  下面给出一个例子:由C++编写一个类,具体文件parse.h 和parse.cpp被用于在QUERY_STRING中提取个别的组件,其中的头文件t99_type.h在上节教程已经提到,它是包含了一些定义。具体代码如下:

//以下是parse.h文件

#ifndef CLASS_PARSE

#define CLASS_PARSE

//#define NO_MAP // 定义没有用户处理

#include "t99_type.h"//这个文件在前面教程中有

class Parse

{

public:

Parse( char [] );

~Parse();

void set( char [] );

char *get_item( char [], int pos=1, bool=false );

char *get_item_n( char [], int pos=1, bool=false );

protected:

void remove_escape(char []);

int hex( char ); //返回十六进制数

char *map_uname( char [] );

private:

enum { SEP = '&' }; // 使用&分隔字符

char *the_str; // 字符部分

int the_length; // 字符长度

};

#endif

//以下是parse.cpp文件

#ifndef CLASS_PARSE_IMP

#define CLASS_PARSE_IMP

#include "parse.h"

#include

#include

#ifndef NO_MAP

# include

#endif

Parse::Parse( char list[] )

{

the_str = NULL;

set( list );

}

Parse::~Parse()

{

if ( the_str != NULL ) { // 释放存储

delete [] the_str;

}

}

void Parse::set( char list[] )

{

if ( the_str != NULL ) { // 释放存储器

delete [] the_str;

}

the_length = strlen( list ); // 字符长度

the_str = new char[the_length+1]; // 分配空间

strcpy( the_str, list ); // 复制

}

char *Parse::get_item( char name[], int pos, bool file )

{

int len = strlen( name );

int cur_tag = 1;

for( int i=0; i
{

if ( the_str[i] == name[0] &&

strncmp( &the_str[i], name, len ) == 0 )

{

if ( the_str[i+len] == '=' )

{

if ( cur_tag == pos )

{

int start = i+len+1; int j = start;

while ( the_str[j] != SEP && the_str[j] != '\0' ) j++;

int str_len = j-start;

char *mes = new char[ str_len+1 ];

strncpy( mes, &the_str[start], str_len );

mes[str_len] = '\0';

remove_escape( mes );

# ifndef NO_MAP

return file ? map_uname(mes) : mes;

# else

return file ? mes : mes;

# endif

} else {

cur_tag++;

}

}

}

}

return NULL;

}

char *Parse::get_item_n( char name[], int pos, bool file )

[1] [2] [3] 下一页 




上一篇:CGI教程(8)记录用户记录脚本

下一篇:CGI教程(6)调用CGI脚本文件的例子

CGI教程(7)解码数据发送给CGI脚本 相关文章:
·CGI教程(7)解码数据发送给CGI脚本
·CGI教程(7)解码数据发送给CGI脚本之一
·CGI教程(7)解码数据发送给CGI脚本之二
·CGI教程(7)解码数据发送给CGI脚本之三
CGI教程(7)解码数据发送给CGI脚本 相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn