IP-Sperre einbinden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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:

    Quellcode

    1. #!/usr/bin/perl
    2. use CGI qw(:standard);
    3. my $cgi = new CGI;
    4. $parameter = $ENV{QUERY_STRING};
    5. $ip_adresse = $ENV{'REMOTE_ADDR'};
    6. $klick4win_keks1 = cookie("xxx");
    7. ($was,$url) = split(/\|/ , $parameter);
    8. $file = $url;
    9. $file =~ s/http|\/|:|www|-|\.|\?|\=//g;
    10. $datei = $file . ".txt";
    11. $log = $file . ".log";
    12. if ($klick4win_keks1) {
    13. print $cgi->redirect('xxx');
    14. exit;
    15. }
    16. else {
    17. if ($was eq "count") {&count;};
    18. if ($was eq "show"){&show;};
    19. sub einlesen{
    20. open (DATA, "<ips/$log");
    21. $ip = <DATA>;
    22. close (DATA);
    23. open (CLICKDATA,"<clicks/$datei");
    24. $clicks = <CLICKDATA>;
    25. close (CLICKDATA);
    26. if ($clicks eq ""){$clicks = "0";};
    27. if ($clicks eq "250"){$clicks = "0";};
    28. $clicks++;
    29. }
    30. sub show {
    31. &einlesen;
    32. print "Content-type: text/html\n\n";
    33. print "document.write('$clicks ');";
    34. if ($clicks eq "250") {print "document.write(' <a href=xxx><img src=xxx width=80 height=25 border=0 align=absmiddle></a>');";};
    35. exit;
    36. }
    37. sub ausgeben{
    38. open (CLICKDATA,">clicks/$datei");
    39. print CLICKDATA "$clicks";
    40. close (CLICKDATA);
    41. open (DATA,">ips/$log");
    42. print DATA "$ip_adresse";
    43. close (DATA);
    44. }
    45. sub count {
    46. &einlesen;
    47. if ($ip ne $ip_adresse){
    48. &ausgeben;
    49. }
    50. print "Location: $url\n\n";
    51. exit;
    52. }
    53. }
    Alles anzeigen