You are not logged in.

  • Login

1

Thursday, September 7th 2006, 1:58pm

IP-Sperre einbinden

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;
 
}
}

2

Thursday, September 7th 2006, 2:49pm

hab den code zwar nicht getestet, aber wenn er klappt, dann schreib doch mal ein kleines HowTo für unser Wiki:

z.B. hier: Perl Counter mit IP Sperre

Similar threads

Social bookmarks