动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   Cgi/Perl → 阅读文章

 CGI教程(8)记录用户记录脚本之二

作者:郁郁小蝎 来源:中国站长学院 
阅读 1846 人次 , 2006-2-15 14:34:00 

记录用户记录脚本

//以下是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教程(8)记录用户记录脚本之一
· 下一篇:CGI教程(9)编写安全的CGI脚本
· Perl教学 第九篇 关联数组之四
· Perl语言的文字处理模式之一
· 实战 FastCGI_2. 安装 FastCGI之一
· CGI教学:CGI安全问题(一)
· Perl教学 第四篇 列表和数组变量之一


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077