Schrift
[thread]174[/thread]

Problem mit COUNT-SKRIPT: ..



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Gast Gast
 2004-02-20 15:58
#1265 #1265
Hallo zusammen.

Hoffe im richtigen Thread zu posten.

Ich habe ein Problem mit diesem Counter-Skript.
Es wird einfach nicht weitergezählt.
Jeder ist KLICK 1 obwohl es bis 555 gezählt werden soll.
Achja...Ich musste die Datei count.pl in count.cgi umbenennen, da mein Server ansonsten bei Aufruf immer zum
downloaden aufruft.
KANN MIR JEMAND HELFEN ???
---------------------------------
Code: (dl )
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
#!/usr/bin/perl 

$parameter = $ENV{QUERY_STRING};
$ip_adresse = $ENV{'REMOTE_ADDR'};

($was,$url) = split(/\|/ , $parameter);

$file = $url;
$file =~ s/http|\/|:|www|-|\.|\?|\=//g;
$datei = $file . ".txt";
$log = $file . ".log";

if ($was eq "count") {&count;};
if ($was eq "show"){&show;};

sub einlesen{
open (DATA, "<$log");
$ip = <DATA>;
close (DATA);
open (CLICKDATA,"<$datei");
$clicks = <CLICKDATA>;
close (CLICKDATA);
if ($clicks eq ""){$clicks = "0";};
if ($clicks eq "555"){$clicks = "0";};
$clicks++;
}

sub show {
&einlesen;
print "Content-type: text/html\n\n";
print "document.write('$clicks ');";
if ($clicks eq "555") {
print "document.write(' <a href=http://www.meinedomain.de/gewinn-id3464442578 target=main><img src=http://www.meinedomain.de/images/gewinn.gif width=80 height=25 border=0 align=absmiddle></a>');";
};
exit;
}

sub ausgeben{
open (CLICKDATA,">$datei");
print CLICKDATA "$clicks";
close (CLICKDATA);
open (DATA,">$log");
print DATA "$ip_adresse";
close (DATA);
}

sub count {
&einlesen;
if ($ip ne $ip_adresse){
&ausgeben;
}
print "Location: $url\n\n";
exit;
}

--------------------------------

Edit renee: [code]-Tags eingefügt...\n\n

<!--EDIT|renee|1077286384-->
esskar
 2004-02-20 16:18
#1266 #1266
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
es wird die ipadresse überprüft...
es muss also immer eine andere sein...
btw. dieses stück code ist der letzte schrott
[E|B]
 2004-02-20 17:04
#1267 #1267
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Japp, seh ich genauso.
*werbungmach*
=> http://www.cgi-world.de/cgi-bin....ebcount
Schau mal dort nach. ;)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
eisbeer
 2004-02-20 17:52
#1268 #1268
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=esskar,20.02.2004, 15:18]btw. dieses stück code ist der letzte schrott[/quote]
!\n\n

<!--EDIT|eisbeer|1077292337-->
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
eisbeer
 2004-02-20 17:55
#1269 #1269
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
ausserdem will ich diese Logfile sehen ...
Ohne ein einziges \n oder sowas :) nichtmal
ein Trennzeichen.

Desweiteren setzt du $ip eh nicht ...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
Tosch69de
 2004-02-20 19:12
#1270 #1270
User since
2004-02-20
8 Artikel
BenutzerIn
[default_avatar]
Hallo.

Das Skript mag ja scheisse sein..aber es gehört zu einem
Gewinnspiel, dass auf Klicks bei Bannern basiert.

Das Skript selber funzt ja nur leider zählt dieser Counter nicht
weiter.
Ich habe auch schon geschaut, wo er die Daten bzw. die
Klicks hinterlegt aber werde nicht fündig.

Wenn ich z.B. einen Counter wie von [E][B] vorgeschlagen
einbauen würde, zählt der dann alle Banner in einer dat oder unterscheidet er das auch ??

Würde mich über eure Hilfe freuen.

Tosch69de
[E|B]
 2004-02-20 22:26
#1271 #1271
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Das Script ist nicht für Bannerklicks konzipiert, sondern ist ein ganz normaler Counter.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2004-02-20 22:31
#1272 #1272
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wie gesagt...
er zählt nicht weiter, weil die ip verglichen wird...
ersetz mal

Code: (dl )
if ($ip ne $ip_adresse)


in

Code: (dl )
if (1 or $ip ne $ip_adresse)
Tosch69de
 2004-02-21 12:27
#1273 #1273
User since
2004-02-20
8 Artikel
BenutzerIn
[default_avatar]
funktioniert leider auch nicht esskar.
der zähler bleibt auf null.
wo hinterlegt er denn die klicks ?
bei dem skript von E B ist ja zum beispiel die count.dat.
ich habe schon alles auf dem server durchsucht.

naja........werde mich nach einem anderen skript umschauen
müssen.

gruss..............tosch69de
format_c
 2004-02-21 12:59
#1274 #1274
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
OK schauen wir mal
Quote
Code: (dl )
open (CLICKDATA,">$datei");


OK also $datei.

MMh wo kommt $datei her:
Quote
Code: (dl )
$datei = $file . ".txt"; 


Whow wo kommt $file her...
Quote
Code: (dl )
1
2
$file = $url;
$file =~ s/http|\/|:|www|-|\.|\?|\=//g;


Also aus der URL die als Paramter nach dem "?" in der Query mitgegeben wird. Das schreit nach Sicherheitslücken.
Aber weiter...
warum wird jetzt nix gespeichert?
OK Die Datei wird, so wie sie definiert wird, Vorrausgesetzt die RegEx schmeist alles bis auf den Dateinamen raus (Ich denke den kann man auch noch zum Aufgeben bringen), im CurrentDirectory (pwd) gespeichert werden.

Nehmen wir mal an, du hast nicht den user wwwrun oder wwwroot benutzt um die Dateien (Script) dort abzulegen, ergo das Verzeichnis wird wahrscheinlich auch diesem user (nicht wwwrun oder wwwroot) gehören und der Apache ist minder durchdacht konfiguriert, wird das Script mit dem User wwwrun oder wwwroot (Apache 2.0) ausgeführt, ergo wird auch die Datei $datei mit dem user in dem Verzeichnis erstellt. Wenn die Rechtevergabe des Verzeichnisses jetzt noch das Werk komplettiert und das Betriebssystem dem user wwwrun oder wwwroot den Mittelfinger zeigt und obendrein dein ausgewähltes Script keinerlei ErrorHandling vorweist wundert es micht nicht, dass es nicht funktioniert.

Mein Tipp nach dieser predigt vorrausgesetzt es stimmt das wie ich es gesagt hab:
Er stell in dem Verzeich wo auch cgi-bin liegt ein Verzeichnis data und legt als besitzer wwwrun oder wwwroot fest (eher wwwrun) und änder die Zeile wie folgt ab: $datei = '../data/' . $file . ".txt";

PS: ich hab mir Frechheit rausgenommen und angenommen dass Apache als Webserver-Plattform verwendet wird.

Gruß Alex

Edit: Mein Rat: Wenn du weiterhin ernsthaft programmieren willst, solltest du dir nochmals Gedanken über die Grundlagen (hier von perl-programmierung) machen. ich kann die für perl ein gutes Buch von O'Reillys empfehlen Perl Kochbuch etwas schwerer zu verstehen Programmieren mit Perl. Dabei ist wie nich anders zu erwarten Ausdauer beim lesen gefordert. wollt ich nur noch kurz loswerden.\n\n

<!--EDIT|format_c|1077361658-->
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2004-02-20 15:58.