| |
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 )
上一篇:CGI教程(8)记录用户记录脚本
下一篇:CGI教程(6)调用CGI脚本文件的例子
|
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
| |