Hi,
hab mir jetzt ein Script gebastelt mit dem Klicks gezählt werden. Jeder User soll aber nur einmal klicken dürfen. Deshalb hab ich das schon über cookies gemacht. Da aber nicht jeder die Cookies akzeptiert wollte ich das ganze noch mit einer IP-Sperre regeln. Das sollte dann eigentlich reichen, um nahezu guten Schutz bieten zu können.
Die IP-Sperre soll wie folgt aussehen. Die IPs sollen in eine Datei gespeichert werden und nach 24 Stunden gelöscht werden. Bei jedem Klick soll dann gesprüft werden, ob die IP schon vorhanden ist bzw. die Zeit abgelaufen ist.
Hier mal der code:
|
Perl Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#!/usr/bin/perl
use CGI qw(:standard);
my $cgi = new CGI;
$parameter = $ENV{QUERY_STRING};
$ip_adresse = $ENV{'REMOTE_ADDR'};
$klick4win_keks1 = cookie("xxx");
($was,$url) = split(/\|/ , $parameter);
$file = $url;
$file =~ s/http|\/|:|www|-|\.|\?|\=//g;
$datei = $file . ".txt";
$log = $file . ".log";
if ($klick4win_keks1) {
print $cgi->redirect('xxx');
exit;
}
else {
if ($was eq "count") {&count;};
if ($was eq "show"){&show;};
sub einlesen{
open (DATA, "<ips/$log");
$ip = <DATA>;
close (DATA);
open (CLICKDATA,"<clicks/$datei");
$clicks = <CLICKDATA>;
close (CLICKDATA);
if ($clicks eq ""){$clicks = "0";};
if ($clicks eq "250"){$clicks = "0";};
$clicks++;
}
sub show {
&einlesen;
print "Content-type: text/html\n\n";
print "document.write('$clicks ');";
if ($clicks eq "250") {print "document.write(' <a href=xxx><img src=xxx width=80 height=25 border=0 align=absmiddle></a>');";};
exit;
}
sub ausgeben{
open (CLICKDATA,">clicks/$datei");
print CLICKDATA "$clicks";
close (CLICKDATA);
open (DATA,">ips/$log");
print DATA "$ip_adresse";
close (DATA);
}
sub count {
&einlesen;
if ($ip ne $ip_adresse){
&ausgeben;
}
print "Location: $url\n\n";
exit;
}
}
|