设为首页
加入收藏
站内地图
旧版入口
首 页
新闻资讯
SEO研究
SEO查询
网站运营
站长学院
赚钱联盟
链接交换
下载中心
搜优客论坛
网页制作
网络编程
数据库
图形图像
操作系统
网络应用
当前位置:
首页
>
站长学院
>
网络编程
>
CGI/perl
CGI教程(8)记录用户记录脚本之二
作者:
佚名
出处:
网络转载
时间:
04-12
点击:
内容载入中...
记录用户记录脚本
//以下是mas_res程序
#include "t99_type.h"
#include
#include
#include
#include
#include
#include
#include
#include "parse.h"
#include "parse.cpp"
#include "mas_cvo.cpp"
void write_log_entry( char[], char[] );
void cgi_var_output();
char* getenv_n( char [] );
void gif_output( char [] );
int main()
{
char *query_str = getenv("QUERY_STRING");
Parse list( query_str == 0 ?
(char*)"file=mas&page=Test&" : query_str );
if ( list.get_item( "file" ) != NULL )
{
write_log_entry( list.get_item_n( "file", 1, true ),
list.get_item_n( "page" ) );
}
if ( list.get_item( "img" ) != NULL )
{
gif_output( list.get_item_n("img", 1, true) );
} else {
html("Content-type: text/html"); html("");
cgi_var_output(); // debug option
}
return 0;
}
void write_log_entry( char file[], char page[] )
{
//cout << "File = [" << file << "] page = [" << page << "]" << "\n";
//cout.flush();
ofstream inf( file, ios::app );
//inf.open( file, ios::out );
if ( !inf.fail() )
{
time_t t;
time( &t);
char *str = ctime( &t ); str[24] = '\0';
inf << setiosflags( ios::left );
inf << setw(24) << str << " " <<
setw(10) << (page!=NULL? page : (char*)"Unknown" ) << " " <<
setw(18) << getenv_n("REMOTE_ADDR") << " " <<
setw(20) << getenv_n("REMOTE_HOST") << "\n";
// setw(20) << getenv_n("REMOTE_USER") << "\n";
}
}
void gif_output( char gif[] )
{
char square [] = {
'G', 'I', 'F', '8', '9', 'a',
0002, 0000, 0002, 0000, 0263, 0000, 0000, 0000, 0000, 0000,
0277, 0000, 0000, 0000, 0277, 0000, 0277, 0277,
0000, 0000, 0000, 0277, 0277, 0000, 0277, 0000,
0277, 0277, 0300, 0300, 0300, 0200, 0200, 0200,
0377, 0000, 0000, 0000, 0377, 0000, 0377, 0377,
0000, 0000, 0000, 0377, 0377, 0000, 0377, 0000,
0377, 0377, 0377, 0377, 0377, 0054, 0000, 0000,
0000, 0000, 0002, 0000, 0002, 0000, 0100, 0004,
0003, 0020, 0200, 0010, 0000, 0073 };
html("Content-type: image/gif"); html("");
if ( gif[0] != '\0' ) // 输出GIF文件
{
ifstream in( gif );
if ( !in.fail() )
{
char c;
in.read( &c, 1 );
while ( !in.eof() )
{
cout.write( &c, 1 );
in.read( &c, 1 );
}
return; // 结束
}
}
cout.write( square, (int) sizeof( square ) );
}
当然,网页的浏览器必须是支持浏览图片以及装载图片的。几个不能装载图片的理由是:
浏览器不支持图片浏览;
用户已经取消对浏览图片的选项,因为要加块连接网络服务器的速度;
服务器件接收到返回图片的请求。
收藏本文:
【
大
中
小
】【
打印页面
】【推荐给朋友】【
关闭窗口
】
<< 上一篇 :
CGI教程(9)编写安全的CGI脚本
>> 下一篇 :
CGI教程(8)记录用户记录脚本之一
相关新闻
·
CGI教程(8)记录用户记录脚本之二
·
Cgi入门教程之:11 写文件
·
实战 FastCGI_2. 安装 FastCGI之五
·
CGI教程(10)CGI 规范之一
·
Perl教学 第八篇 子程序
·
CGI教程(12)ErrorDocument 指令
·
PerlScript 的介绍之二
·
实战 FastCGI_1.克服 CGI 的瓶颈(2)
最新资讯
·
PERL CGI 常见问题
·
谈谈cgi得速度问题
·
怎样一次打印多个文件
·
Perl 新手必读
·
Cgi入门教程之:13 设置口令
·
Cgi入门教程之:12 代码详解
·
Cgi入门教程之:11 写文件
·
Cgi入门教程之:10 email子过程
站长学院
[
ASP
]
[
PHP
]
[
JSP
]
[
CGI/perl
]
[
ASP.NET
]
[
C#
]
[
XML
]
[
编程综合
]
关 键 字:
信息分类:
新闻资讯
SEO研究
网站运营
站长学院
下载中心
推荐信息
本类热点
·
PERL CGI 常见问题
·
CGI脚本入门学习
·
perl实例分析教程之十六
·
Perl教学 第五篇 文件读写
·
perl连接access数据库之二
·
Cgi入门教程之:13 设置口令
·
CGI教程(6)调用CGI脚本文件的例子
·
谈谈cgi得速度问题
·
CGI绝对路径和相对路径的简便设置
·
CGI教程(10)CGI 规范之五