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

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

推荐文章

 
 

热点文章

  • CGI教程(7)解码数据发送给CGI脚本
  • CGI编程--Perl的安装配置
  • PERL与MySQL(DBI接口)
  • PERL与MySQL
  • Perl直接入门详尽指南
  • PERL 的 CGI 文件及目录操作
  • Perl教学 第十二篇 Perl5中的引用(指针)
  • Perl连接Oracle数据库
  • 关于CGI绝对路径、相对路径和URL
  • PerlScript 的介绍之一
  • 一个程序自动刷新页面的例子(例如搜新浪小人)
  • CGI简明教程第六章
 
 

相关文章

 
 

百度搜索

 
 

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

  • 阅览次数:
  • 文章来源: CP整理
  • 原文作者: 不详
  • 整理日期: 2006-10-05
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

记录用户记录脚本

  在<IMG>标签使用一个指定CGI脚本的URL,可以在图象被传递之前进行额外处理。额外的处理记录了有关网页当前用户的详细信息。这个额外信息将发送给CGI脚本来指定Action的正确的详细数据。比如 :

格式化的文本
HTML

.
<IMG SRC="/cgi-bin/mas_rec?page=HTML&file=log&img=dot.gif"

ALT="Record not made">


语句中的CGI脚本mas_rec是用C++编写的,它发送以下的信息:

参数名字
要求

File
文件的名字,在上面用法信息将被附上

Page
网页的名字,它将被记录在日志中

img
要装载的图片

记录用户记录脚本

//以下是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 ) );

}

  当然,网页的浏览器必须是支持浏览图片以及装载图片的。几个不能装载图片的理由是:

  浏览器不支持图片浏览;

  用户已经取消对浏览图片的选项,因为要加块连接网络服务器的速度;

  服务器件接收到返回图片的请求。
  

上一篇:ASP抽取数据的执行效率
下一篇:比AcdSee功能还强大的图片处理、编辑软件,推荐下载!
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

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

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