Kleines großes Zählerscript Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kleines großes Zählerscript Problem

    Hallo!

    Zu aller erst: Ich habe von PHP nicht wirklich Ahnung, deshalb komme ich bei einem (denke ich) relativ einfachen Script was ich mir geschrieben habe nicht weiter.

    Ich habe eine Seite (content.php) auf die von fünf verschiedenen Domains
    (ich nenne sie mal Seite1, Seite2 ... Seite5) von mir gelinkt wird.
    Nun möchte ich wissen, von welcher Seite der Besucher kommt und habe die Links folgendermaßen verändert: http://www.meineseite.de/content.php?referer=seite1

    Auf der Content.php habe ich nun folgendes Script eingebunden, welches mittels der in der URL übergebenen Variable den Referer erkennt und den Zählerstand in einer Textdatei (je eine für jeden "Referer") um 1 erhöhen soll.

    Das funktioniert aber nicht so wie ich es will???????? Der Zählerstand in der Textdatei bleibt immer auf 1???

    Hier mein Script auf der "content.php":



    <?php
    $ref = $_GET['referer'];
    $cfile1 = "referer1.txt";
    $cfile2 = "referer2.txt";
    $cfile3 = "referer3.txt";
    $cfile4 = "referer4.txt";
    $cfile5 = "referer5.txt";
    $cfile6 = "uknow.txt";


    if ($ref == seite1)
    {
    if(!file_exists($cfile1)){
    print("Zählerdatei nicht gefunden!");
    die;
    }
    $fp1 = fopen($cfile1, "r") or die("Konnte Zählerdatei nicht öffnen!");

    $count1 = fgets($fp1, 1024);
    fclose($fp1);
    $count1++;

    $fp1 = fopen($cfile1, "w") or die("Konnte Zählerdatei nicht öffnen!");
    fputs($fp1, $count1);
    fclose($fp1);
    }

    elseif ($ref == seite2)
    {
    if(!file_exists($cfile2)){
    print("Zählerdatei nicht gefunden!");
    die;
    }
    $fp2 = fopen($cfile2, "r") or die("Konnte Zählerdatei nicht öffnen!");

    $count2 = fgets($fp2, 1024);
    fclose($fp2);
    $count2++;

    $fp2 = fopen($cfile2, "w") or die("Konnte Zählerdatei nicht öffnen!");
    fputs($fp2, $count2);
    fclose($fp2);
    }

    elseif ($ref == seite3)
    {
    if(!file_exists($cfile3)){
    print("Zählerdatei nicht gefunden!");
    die;
    }
    $fp3 = fopen($cfile3, "r") or die("Konnte Zählerdatei nicht öffnen!");

    $count3 = fgets($fp3, 1024);
    fclose($fp3);
    $count3++;

    $fp3 = fopen($cfile3, "w") or die("Konnte Zählerdatei nicht öffnen!");
    fputs($fp3, $count3);
    fclose($fp3);
    }

    elseif ($ref == seite4)
    {
    if(!file_exists($cfile4)){
    print("Zählerdatei nicht gefunden!");
    die;
    }
    $fp4 = fopen($cfile4, "r") or die("Konnte Zählerdatei nicht öffnen!");

    $count4 = fgets($fp4, 1024);
    fclose($fp4);
    $count4++;

    $fp4 = fopen($cfile4, "w") or die("Konnte Zählerdatei nicht öffnen!");
    fputs($fp4, $count4);
    fclose($fp4);
    }

    elseif ($ref == seite5)
    {
    if(!file_exists($cfile5)){
    print("Zählerdatei nicht gefunden!");
    die;
    }
    $fp5 = fopen($cfile5, "r") or die("Konnte Zählerdatei nicht öffnen!");

    $count5 = fgets($fp5, 1024);
    fclose($fp5);
    $count5++;

    $fp5 = fopen($cfile5, "w") or die("Konnte Zählerdatei nicht öffnen!");
    fputs($fp5, $count5);
    fclose($fp5);
    }

    else {
    if(!file_exists($cfile6)){
    print("Zählerdatei nicht gefunden!");
    die;
    }
    $fp6 = fopen($cfile6, "r") or die("Konnte Zählerdatei nicht öffnen!");

    $count6 = fgets($fp6, 1024);
    fclose($fp6);
    $count6++;

    $fp6 = fopen($cfile6, "w") or die("Konnte Zählerdatei nicht öffnen!");
    fputs($fp6, $count6);
    fclose($fp6);
    }
    ?>




    Wäre echt nett, wenn sich das mal jemand ansehen könnte und ggf. den Fehler beseitigt, bzw. mir
    sagt, wie man es richtig macht. Vielleicht gibt es ja auch eine viel elegantere Lösung?


    Mit bestem Dank im Vorraus grüßt euch


    Chris

  • #2
    gibt ne imho elegantere lösung

    links:
    datei.php?ref=seite1
    datei.php?ref=seite2
    ...
    datei.php?ref=seite4385746

    counter.txt:
    seite1=45
    seite2=5746
    ...
    seite4385746=1

    datei.php
    PHP-Code:
    //Parameter fehlt
    if (!isset($_GET['ref']))
        
    $_GET['ref']=-1;

    //Counter einlesen
    $eintrag=file('counter.txt');

    //Entsprechenden Eintrag suchen
    $eintrag=array_search($_GET['ref'], $eintrag);

    if (
    $eintrag===false)
    //Eintrag steht bereits drin
    {
        
    $wert=explode('='$eintraege[$eintrag]);
        
    $wert[1]++;
        
    $eintraege[$eintrag]=implode('='$wert);
    }
    elseif (
    $_GET['ref']!=-1)
        
    //Eintrag steht noch nicht drin
        
    $eintraege[]=$GET['ref'].'=1';

    //Datei öffnen
    $datei=fopen('counter.txt''wb');

    //Neuen Inhalt schreiben
    fwrite($dateiimplode("\n"$eintraege));

    //Datei schließen
    fclose($datei); 
    (ohne funktionsgarantie)

    am elegantesten isses imo mit ner datenbank
    Zuletzt geändert von mrhappiness; 10.10.2003, 15:59.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hallo mrhappiness!

      Danke für die schnelle Antwort. Hab es gleich ausprobiert. Schreibt in die
      counter.txt aber immer "=1", egal wie oft ich die Seite aufrufe. Referer wird nicht erkannt. Es wird beim Ausführen aber auch kein Fehler angezeigt?

      Hier meine Testseite:

      <html>

      <head>
      <meta http-equiv="Content-Language" content="de">
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
      <title>Test Start</title>
      </head>

      <body>

      <p>Das ist die Verweisseite:</p>
      <ul>
      <li><a href="zaehler2.php?ref=seite1" target="_blank">Seite1</a></li>
      <li><a href="zaehler2.php?ref=seite2" target="_blank">Seite 2</a></li>
      <li><a href="zaehler2.php?ref=seite3" target="_blank">Seite3</a></li>
      </ul>

      </body>

      </html>


      Hier nochmal die Zählerseite "zaehler2.php":

      PHP-Code:
      <html>
      <head>
      <meta http-equiv="Content-Language" content="de">
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
      <title>Test</title>
      </head>
      <body>
      <p>Das ist Datei, in der das Script ausgeführt wird. Ansonsten befindet
      sich hier irgendeine Beschreibung etc.</p>

      <?php
      //Parameter fehlt
      if (!isset($_GET['ref']))
          
      $_GET['ref']=-1;

      //Counter einlesen
      $eintrag=file('counter.txt');

      //Entsprechenden Eintrag suchen
      $eintrag=array_search($_GET['ref'], $eintrag);

      if (
      $eintrag===false)
      //Eintrag steht bereits drin
      {
          
      $wert=explode('='$eintraege[$eintrag]);
          
      $wert[1]++;
          
      $eintraege[$eintrag]=implode('='$wert);
      }
      elseif (
      $_GET['ref']!=-1)
          
      //Eintrag steht noch nicht drin
          
      $eintraege[]=$GET['ref'].'=1';

      //Datei öffnen
      $datei=fopen('counter.txt''wb');

      //Neuen Inhalt schreiben
      fwrite($dateiimplode("\n"$eintraege));

      //Datei schließen
      fclose($datei);
      ?>
      </body>
      </html>

      Wo könnte der Fehler liegen? Probier schon seit gestern rum...???!!??

      Viele Grüße von Chris
      Zuletzt geändert von chris16356; 11.10.2003, 14:30.

      Kommentar


      • #4
        bitte gewöhn dir die [php] tags an
        vorher glotz ich mri das nich an

        Kommentar


        • #5
          @Trashar:

          SORRY! Du hast recht.

          Habs oben im Beitrag geändert!


          Viele Grüße, Chris

          Kommentar


          • #6
            PHP-Code:
            //Entsprechenden Eintrag suchen
            $eintrag=array_search($_GET['ref'], $eintrag);

            if (
            $eintrag===false)
            //Eintrag steht bereits drin 
            wenn array_search() false zurückgibt, deutest du das als bereits vorhandenen eintrag?

            andersherum wär's ja vielleicht sinnvoller ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Neuer Versuch...aber....

              Ich habe jetzt einen neuen Versuch gestartet:

              PHP-Code:
              <html>
              <head>
              <meta http-equiv="Content-Language" content="de">
              <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
              <title>Test</title>
              </head>
              <body>
              <p>Zähler-Datei1</p>

              <p>Das ist die Datei, in der das Script ausgeführt wird. Ansonsten befindet
              sich hier irgendeine Beschreibung etc.</p>

              <p><a href="weiter.htm">weiter &gt;</a></p>

              <?php
              if (!isset($_GET['ref']))
                 
              $referer = -1;                
              else
                 
              $referer $_GET['ref'];
              //Counter einlesen
              $eintraege=file('counter.txt');   
              $eintrag=array_search($referer$eintraege);  
              if (
              $eintrag !== false)            
              {
                 
              $wert=explode('='$eintraege[$eintrag]);
                 
              $wert[1]++;
                 
              $eintraege[$eintrag]=implode('='$wert);
              }
              else                             
              {
                 
                 
              $eintraege[]=$_GET['ref'].'=1';   
              }
              //Datei öffnen
              $datei=fopen('counter.txt''wb');
              //Neuen Inhalt schreiben
              fwrite($dateiimplode("\n"$eintraege));
              //Datei schließen
              fclose($datei);

              ?>
              </body>
              </html>
              Schreibt zumindest schonmal was in die counter.txt rein, aber:

              die Einträge sehen so aus:

              seite1=1
              seite1=1
              seite2=1
              seite3=1 u.s.w.

              sollte aber so sein:

              seite1=2
              seite2=1 etc.

              live-Beispiel unter http://www.adria-service.de/index.htm


              Viele Grüße von Chris

              Kommentar

              Lädt...
              X