Beitrag von Nick (66 Beiträge) am Samstag, 11.August.2001, 10:29.
IP-Adresse sperren
Hallöchen allerseits,
dank Sander & Claus S. habe ich wirklich eine schöne Klick-Statistik hinbekommen, doch leider scheint es unter der leiben Internet-Gemeinde den ein oder anderen Schelm zu geben, der seinen Link jeweils ganz oben sehen möchte... Drum hab ich schnell ins Forum gelunst, um nicht wieder fragen zu müssen, aber: Ich komm natürlich nicht klar.
Habe folgenden Code im Eintrag http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/baseportal/forum&wcheck=1&Pos=2512.2
im Forum gefunden
<html>
<body bgcolor="#ffffff">
<perl>
$sek=20;
$gesperrt="0";
$ip=$_REMOTE_ADDR;
$jetztzeit=time;
$zeitschranke=$jetztzeit - $sek;
out "IP: ".$ip."<br>";
get "ip==$ip","sperre";
if ($zeit > $zeitschranke)
{
$gesperrt="1";
}
if ($gesperrt eq "0")
{
put ["ip",$ip,"zeit",$jetztzeit],"sperre";
del "zeit<$zeitschranke","sperre";
}
out "Zeitschranke: ".$sek." Sekunden<br>";
if ($gesperrt eq "0")
{
out "Du darfst abstimmen!";
}
else
{
out "Du darfst erst in ".($zeit+$sek-$jetztzeit)." Sekunden wieder!";
}
out <<EOF;
</perl>
</body>
</html>
und habe eigentlich folgendes Problem:
Bei mir sollte nur dann der Klick nicht gezählt werden, wenn derjenige doppelt auf einen link klickt, klicks auf anderer sollen aber gezählt werden...
Hier noch mein klickcounter:
<perl>
if ($urlgo =~ /ragers/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /goinape/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /therockinguys/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /vitaminic/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo\">";
}else
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.mp3\">";
}
</perl>
<body bgcolor="#9966CC" face="verdana" text="#FFFF00" link="#66FF00">
<img src="http://www.net-pic.de/Bilder/rockabilly.gif" width="500" height="108" border="0" align="absmiddle">
<p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Please
visit the band's homepage - this service would not be possible without these artists!!!
</font></b></font></p>
<perl>
get "Id==$Id", "my_db";
$Download_Range++;
mod "Id==$_id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
</perl>
Also zusammenfassend:
Welche Felder muß ich in welcher DB anlegen, und wie muß ich mein Klickcounter verändern, um meinen Wunsch zu realisieren?
Und, wenn dies dann gelöst ist, wie kann ich meine Dankbarkeit erweisen?? Wein, Weib oder Gesang???
Antworten
Beitrag von Sander (8133 Beiträge) am Sonntag, 12.August.2001, 14:41.
Re: IP-Adresse sperren
wenn ich mir das so anschaue, habe ich den Eindruck, das man nur ein klick machen darf. Bei einer Linkliste etwas blöd aber für ein Voting passend. da muß noch irgendwie dazu, um welches Programm/Seite/mp3 sich das handelt.
Sander
Antworten
Beitrag von Nick (66 Beiträge) am Sonntag, 12.August.2001, 15:38.
Re: IP-Adresse sperren
Ja, so sehe Ich das auch - aber weißt Du auch nix konkreteres?
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 13.August.2001, 12:14.
Re: IP-Adresse sperren
mach ich mir mal gedanken dazu
Sander
Antworten
Beitrag von Nick (66 Beiträge) am Dienstag, 14.August.2001, 09:57.
Re: IP-Adresse sperren
jou, danke schon mal. Ginge es denn, sagen wir mal wenigstens vom Ansatz her, daß man meinen counter
<perl>
get "Id==$Id", "my_db";
$Download_Range++;
mod "Id==$_id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
</perl>
in folgendes umschreibt
<perl>
$sek=20;
$gesperrt="0";
$ip=$_REMOTE_ADDR;
$jetztzeit=time;
$zeitschranke=$jetztzeit - $sek;
out "IP: ".$ip."<br>";
get "ip==$ip","sperre";
if ($zeit > $zeitschranke)
{
$gesperrt="1";
}
if ($gesperrt eq "0")
{
put ["ip",$ip,"zeit",$jetztzeit],"sperre";
del "zeit<$zeitschranke","sperre";
}
out "Zeitschranke: ".$sek." Sekunden<br>";
if ($gesperrt eq "0")
{
get "Id==$Id", "my_db";
$Download_Range++;
mod "Id==$_id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
}
else
{
out "Your download will not be counted. ";
}
</perl>
Klappt nicht, aber eigentlich hätte doch jetzt beim zweiten Versuch eines Downloads dieser nicht gezählt werden dürfen, oder?
Aber wäre es nicht sowieso einfacher, ich erweiterte "meine_db" einfach um zwei Felder ( "ip" und "zeit"), oder ist das nicht so knorke (z.B. wg. Umfang der db)?
Gruß Nick
Antworten
Beitrag von nomi (1 Beitrag) am Dienstag, 3.Januar.2006, 11:00. WWW: www.nomi.th
192.168.0.1
Antworten
Beitrag von Markus (0 Beiträge) am Montag, 13.August.2001, 16:48.
Re: IP-Adresse sperren
Hi
Ich habe Dir hier eine Lösung. Ich habe das bei mir so realisiert. Du musst in der DB "sperre" ein zusätzliches Feld (z.B. sperre_link_id) anlegen, in welchem die Id des zu sperrenden Links abgespeichert ist. Die variable "link_id" muss die aktuelle link-Id enthalten. Ich würde diese perl-Sequenz in einem seperaten file speichern ("counter"), welches man dann per <include src=counter&link_id=$link_id> aufruft. Das ist natürlich Dir überlassen, ob du trennst.
Im überigen gehe ich davon aus, dass das Feld "Download_Range" in der selben DB ist wie die sonstigen Felder (Name, Adresse, usw.) zum jeweiligen Link.
Ich hoffe es funktioniert auch, und es sind keine Tippfehler drin. Bei mir funktioniert es so.
Gruss
Markus
Perl-Code:
<perl>
$sek=3600;
$gesperrt="0";
$ip=$_REMOTE_ADDR;
$jetztzeit=time;
$zeitschranke=$jetztzeit - $sek;
del "zeit<$zeitschranke","sperre";
get "ip==$ip","sperre";
while(get_next("sperre")) {
if ($sperre_link_id==$link_id) {
$gesperrt="1";
}
}
if ($gesperrt eq "0")
{
put ["ip",$ip,"zeit",$jetztzeit,"sperre_link_id",$link_id],"sperre";
get "Id==$link_id", "my_db";
$Download_Range++;
mod "Id==$link_id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
}
</perl>
Antworten
Beitrag von Markus (0 Beiträge) am Montag, 13.August.2001, 19:03.
Re: IP-Adresse sperren
Hi
Ich habe Dir hier eine Lösung. Ich habe das bei mir so realisiert. Du musst in der DB "sperre" ein zusätzliches Feld (z.B. sperre_link_id) anlegen, in welchem die Id des zu sperrenden Links abgespeichert ist. Die variable "link_id" muss die aktuelle link-Id enthalten. Ich würde diese perl-Sequenz in einem seperaten file speichern ("counter"), welches man dann per <include src=counter&link_id=$link_id> aufruft. Das ist natürlich Dir überlassen, ob du trennst.
Im überigen gehe ich davon aus, dass das Feld "Download_Range" in der selben DB ist wie die sonstigen Felder (Name, Adresse, usw.) zum jeweiligen Link.
Ich hoffe es funktioniert auch, und es sind keine Tippfehler drin. Bei mir funktioniert es so.
Gruss
Markus
Perl-Code:
<perl>
$sek=3600;
$gesperrt="0";
$ip=$_REMOTE_ADDR;
$jetztzeit=time;
$zeitschranke=$jetztzeit - $sek;
del "zeit<$zeitschranke","sperre";
get "ip==$ip","sperre";
while(get_next("sperre")) {
if ($sperre_link_id==$link_id) {
$gesperrt="1";
}
}
if ($gesperrt eq "0")
{
put ["ip",$ip,"zeit",$jetztzeit,"sperre_link_id",$link_id],"sperre";
get "Id==$link_id", "my_db";
$Download_Range++;
mod "Id==$link_id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
}
</perl>
Antworten
Beitrag von Nick (66 Beiträge) am Dienstag, 14.August.2001, 10:02.
Re: IP-Adresse sperren
Huuups, tut mir leid; hab jetzt erst Deinen Eintrag gesehen, habe schon wieder wild drauf los getippt, probier das direkt mal aus, vielen Dank schon mal& sorry für die Nichtbeachtung!!1
Antworten
Beitrag von Nick (66 Beiträge) am Dienstag, 14.August.2001, 10:24.
Re: IP-Adresse sperren
Sodele, hab's gerade ausprobiert - funzt leider net... :-(
Im counter kütt immer
(perl) in /Nick_Mash/counter: syntax error at (eval 377) line 5, near " $sek"
Mein Counter sieht jetzt so aus:
<perl>
if ($urlgo =~ /ragers/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /goinape/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /therockinguys/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /vitaminic/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo\">";
}else
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.mp3\">";
}
</perl>
<body bgcolor="#9966CC" face="verdana" text="#FFFF00" link="#66FF00">
<img src="http://www.net-pic.de/Bilder/rockabilly.gif" width="500" height="108" border="0" align="absmiddle">
<p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Please
visit the band's homepage - this service would not be possible without these artists!!!
</font></b></font></p>
<p align="center"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3">Your
download should start within 10 seconds.</font></b></p>
<perl>
<html>
<body bgcolor="#ffffff">
<perl>
$sek=3600;
$gesperrt="0";
$ip=$_REMOTE_ADDR;
$jetztzeit=time;
$zeitschranke=$jetztzeit - $sek;
del "zeit<$zeitschranke","sperre";
get "ip==$ip","sperre";
while(get_next("sperre")) {
if ($sperre_link_id==$link_id) {
$gesperrt="1";
}
}
if ($gesperrt eq "0")
{
put ["ip",$ip,"zeit",$jetztzeit,"sperre_link_id",$link_id],"sperre";
get "Id==$link_id", "my_db";
$Download_Range++;
mod "Id==$link_id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
}
</perl>
</body>
...und ich habe 2 db; einmal "sperre" mit 3 Feldern:
"ip", Sortierung Text / "zeit", Sortierung Zahl / sperre_link_id", Sortierung Zahl
und einmal "meine_db" mit 6 Feldern, unter diesen auch "download_range".
Kann gut sein, daß ich Deine Anweisung nicht so ganz umgesetzt habe - ist alles (immer noch) neu für mich. So zum Beispiel die Sache mit der "link_id". Muß ich mehr machen als ich bis jetzt verändert habe??
Gruß und Dank
Nick
Antworten
Beitrag von Claus S. (1671 Beiträge) am Dienstag, 14.August.2001, 14:58.
Re: IP-Adresse sperren
hi nick,
nicht immer sind perl-fehlermeldungen nachvollziehbar,
in diesem fall schon ;-)
Syntaxfehler in zeile 5 in der nähe von $sek!!!
du solltest bei der subtraktion klammern benutzen.
gruss claus
Antworten
Beitrag von Markus (0 Beiträge) am Dienstag, 14.August.2001, 16:13.
Re: IP-Adresse sperren
Ne, funktioniert auch ohne Klammern. Aber Du hast 2 mal den Befehl <perl> und </perl> verwendet. Oberhalb <html> und unterhalb </html>, die musst du löschen.
Antworten
Beitrag von Nick (66 Beiträge) am Dienstag, 14.August.2001, 19:42.
Re: IP-Adresse sperren
Oh oh, das ging mal schwer in die Hose... Hab gerade das "perl" zuviel entfernt und dann den Counter getestet: Resultat war, daß alle (!, ca. 350) Einträge den Download_range auf 34 hatten. In der db "sperre" waren nichts ausser 3 mal das feld "zeit" ausgefüllt...
Bitte helfen...
Antworten
Beitrag von Markus (0 Beiträge) am Dienstag, 14.August.2001, 23:31.
Re: IP-Adresse sperren
Dann ist das mit der link_Id noch nicht richtig gesetzt. Die Variable "Link_ID" muss die aktuelle ID des entsprechenden Link beinhalten. Wenn die nicht gesetzt ist, ist es klar, dass alle Einträge geändert werden.
Versuch mal diese ($link_Id) durch $Id zu ersetzten.
Antworten
Beitrag von Nick (66 Beiträge) am Mittwoch, 15.August.2001, 10:01.
Re: IP-Adresse sperren
Langsam scheinen wir der Lösung näher zu kommen...
Jetzt werden wenigstens nicht mehr alle Download_Ranges auf einmal überschrieben, aber (:-(): Im Feld "ip" und im Feld "sperre_link_id" sind immer noch keine Einträge; Lediglich die IP-Adresse wird immer fein gespeichert...
Wenn Du Dich nochmal bemühen könntest...
Gruß & Dank
Nick
Hier mein aktueller Counter:
<perl>
if ($urlgo =~ /ragers/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /goinape/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /therockinguys/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.MP3\">";
}
if ($urlgo =~ /vitaminic/)
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo\">";
}else
{
out "<meta http-equiv=\"refresh\" content=\"10; URL=$urlgo.mp3\">";
}
</perl>
<body bgcolor="#9966CC" face="verdana" text="#FFFF00" link="#66FF00">
<img src="http://www.net-pic.de/Bilder/rockabilly.gif" width="500" height="108" border="0" align="absmiddle">
<p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b><font size="2">Please
visit the band's homepage - this service would not be possible without these artists!!!
</font></b></font></p>
<p align="center"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3">Your
download should start within 10 seconds.</font></b></p>
<html>
<body bgcolor="#ffffff">
<perl>
$sek=3600;
$gesperrt="0";
$ip=$_REMOTE_ADDR;
$jetztzeit=time;
$zeitschranke=$jetztzeit - $sek;
del "zeit<$zeitschranke","sperre";
get "ip==$ip","sperre";
while(get_next("sperre")) {
if ($sperre_link_id==$Id) {
$gesperrt="1";
}
}
if ($gesperrt eq "0")
{
put ["ip",$ip,"zeit",$jetztzeit,"sperre_link_id",$Id],"sperre";
get "Id==$Id", "my_db";
$Download_Range++;
mod "Id==$Id", ["Download_Range", $Download_Range,"Last_Visit",datum("jetzt")],"my_db";
}
</perl>
</body>
</html>
<p><font color="#FF3399" face="Verdana, Arial, Helvetica, sans-serif" size="1"><b><a href="http://www.topsitelists.com/topsites.cgi?ID=269&user=rockabilly&area=bestsites" target="_blank"><img src="http://www.studio28.net/rabtopsite/rabtop_btn.gif" border=0></a>Your
download did start? Then how about a click right on here to support our work:<a href="http://www.topsitelists.com/topsites.cgi?ID=269&user=rockabilly&area=bestsites" target="_blank"><img src="http://www.studio28.net/rabtopsite/rabtop_btn.gif" border=0></a></b></font></p>
Antworten
Beitrag von Nick (66 Beiträge) am Mittwoch, 15.August.2001, 11:58.
Re: IP-Adresse sperren
kleiner Nachtrag:
Lediglich das feld "zeit" wird eingetragen, "ip" und sperre_link_id" bleiben leer (db "sperre")
Antworten
Beitrag von Markus (0 Beiträge) am Mittwoch, 15.August.2001, 12:21.
Re: IP-Adresse sperren
Ich sehe keine Fehler...
Du schreibst, die Felder ip und sperre_link_id bleiben leer. Wieso wird dann die IP-Adresse gespeichert? Wo wird sie denn gespeichert, wenn nicht im Feld ip?!?
Teste mal, ob dir Werte stimmen, indem du die Variabeln vor dem put-Befehl ausgibst (out "IP: $ip sperre_link_id: $ID";)
Antworten
Beitrag von Markus (0 Beiträge) am Mittwoch, 15.August.2001, 12:33.
Re: IP-Adresse sperren
ups, bei $ID muss natürlich das D klein geschrieben sein. --> out "IP: $ip sperre_link_id: $Id";
Antworten
Beitrag von Nick (66 Beiträge) am Mittwoch, 15.August.2001, 15:14.
Re: IP-Adresse sperren
Danke mal am Rande für Deine Hilfe.
Hab's befolgt, da steht dann einfach nichts außer:
IP: sperre_link_id:
Ich hab echt keine Ahnung - liegt's vielleicht an der Datenbank?
Antworten
Beitrag von Nick (66 Beiträge) am Mittwoch, 15.August.2001, 15:41.
Re: IP-Adresse sperren - Oh, Gott
Huihuihuihui, ich glaub, ich hab jetzt den Fehler...
Hab immer fröhlich aus dem Forum mit control & c kopiert und wieder bei mir eingefügt, und beim IE scheint das auch ohne Probleme zu klappen, jetzt sitze ich baer an nem anderen rechner mit Netscape, und hier haben sich beim kopieren ungefär 19 fantastillionen TABS eingeschlichen... Werde jetzt in mich kehren, TABS killen und korrigieren...
Danke für die Bemühungen, ich laß wieder von mir hören!!
Grüße aus Düsseldorf
Nick
Antworten