主题:  一个关于下载次数计数器的问题?

evan_5d

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2002/6/3 11:32:54
#12003/2/25 14:50:22
找了半天找到了一个cgi的计数器,我是用asp做的网页,cgi一窍不通的,里边的参数怎么改啊什么的都不懂的,上传到哪里也不知道,谁可以帮帮我吗?
下面分别是这个下载次数计数器的说明和源代码,谁帮我分析分析、讲解讲解、讨论讨论、学习学习、研究研究好吗?



evan_5d

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2002/6/3 11:32:54
#22003/2/25 14:51:47
1.修改clickcount.cgi
将第一行#!/usr/bin/perl修改为"Server上Perl的目录",注意#和!不能去掉喔.

2.以ASCII型态上传cliclcount.cgi至Server.

3.设定权限,clickcount.cgi档 chmod 755.

4.在想要产生Clickcount效果的地方,以下面的设定方式设定.

xxx.zipEEE

AAA=>cliclcount.cgi的URL
BBB=>click後要下载出的档案URL
CCC=>要写入click次数数字的档案之绝对位置
DDD=>CCC中要写入click次数数字位置的MARK
EEE=>预设次数
注意必需分为叁行,但是不要担心,Html下看起来像一行.

举例如下:
abc.zip1

5.执行测试.



evan_5d

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2002/6/3 11:32:54
#32003/2/25 14:52:13
#!/usr/bin/perl
############################
@querys = split(/&/, $ENV{'QUERY_STRING'});
foreach $query (@querys) {
($name, $value) = split(/=/, $query);
$FORM{$name} = $value;
}

if ($FORM{'url'}) {
$url = "$FORM{'url'}";
$url =~ s/\&x//g;
$url =~ s/\+/ /g;
$url =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$url =~ s/~!/ ~!/g;
$url =~ s/\%2F/\//g;
&checkempty($url,"未指定url");
}
else {
&error("未指定url");
}

if ($FORM{'file'}) {
$file = "$FORM{'file'}";
$file =~ s/\&x//g;
$file =~ s/\+/ /g;
$file =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$file =~ s/~!/ ~!/g;
$file =~ s/\%2F/\//g;
&checkempty($file,"未指定file");
}
else {
&error("未指定file");
}

if ($FORM{'mark'}) {
$mark = "$FORM{'mark'}";
$mark =~ s/\&x//g;
$mark =~ s/\+/ /g;
$mark =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$mark =~ s/~!/ ~!/g;
$mark =~ s/\%2F/\//g;
&checkempty($mark,"未指定mark");
}
else {
&error("未指定mark");
}

print "Location: $url\n\n";

open(MAIN,"$file");
@main =
;
close(MAIN);

$check=0;
open(MAIN,">$file");
foreach (@main) {
if ($_ =~ /(.*)/) {
$clickcount=$1+1;
$check=1;
$_ =~ s/(.*)/$clickcount/g;
}
print MAIN "$_";
}
close(MAIN);

if ($ckeck==0) {
&error("无法发现mark");
}
exit 0;

########
sub checkempty {
$checkvalue = $_[0];
$checkerror = $_[1];
$checkvalue =~ s/
//g;
$checkvalue =~ s/\n//g;
$checkvalue =~ s/ //g;
if ($checkvalue eq "") {
&error($checkerror);
}
}

########
sub error {
print "Content-type: text/html\n\n";
print "错误\n";
print "\n";
print "

\n";
print "错误:$_[0]\n";
print "

\n";
exit 0;
}



evan_5d

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2002/6/3 11:32:54
#42003/2/25 14:55:56
我希望统计这个页面几个软件被下载的次数:
页面网址:http://www.sunshinesoft.com.cn/1.asp
希望统计被下载的软件的连接:http://www.zjz13521.com/sunshinesoft/install_win98.exe
www.zjz13521.com/sunshinesoft/install_win2000.exe
www.zjz13521.com/sunshinesoft/sp1.exe

谢谢!



evan_5d

职务:普通成员
等级:1
金币:0.0
发贴:76
注册:2002/6/3 11:32:54
#52003/2/26 16:37:48
没有人能够帮我的吗?



沉默是金

职务:普通成员
等级:6
金币:11.2
发贴:4357
注册:2004/2/18 11:17:25
#62003/2/27 8:59:41
用ASP喽,先得到它的ID号,然后点击次数+1
id=request.querystring("id")
sql="update table set hit="&hit+1&" where id="&id
set rs=cn.execute
response.redirect "下载页"


难人一个……

我是小呆瓜

职务:普通成员
等级:3
金币:1.0
发贴:716
注册:2001/12/11 13:23:44
#72003/2/28 10:08:47
那如果我进入了下载页,但是没下载不就多加了一次了吗



沉默是金

职务:普通成员
等级:6
金币:11.2
发贴:4357
注册:2004/2/18 11:17:25
#82003/2/28 11:27:37
所以你要得到你要下载文件的ID号,还要得到要下载的URL,
按照上面的方法进入下载页后,刷新后点击数是不会加一的。


难人一个……

我是小呆瓜

职务:普通成员
等级:3
金币:1.0
发贴:716
注册:2001/12/11 13:23:44
#92003/2/28 14:43:10
如果更新的话一定要有对象啊,比如说文本框之类的,那我现在的话如何更新呢?