Seite 2 von 2 ErsteErste 12
Ergebnis 21 bis 33 von 33

Thema: PHP Counter

  1. #21
    Zitat Zitat
    Original geschrieben von Bermuda

    Endlich hats funktioniert!
    Vielen Dank!
    Was ich jetzt noch wissen muss ist, ob ich auch meine Zahlen dafür benutzen kann.
    Oder ob ich die Zahlen auch größer machen kann.
    Desweiteren müsstest du mir die Reloadsperre in den anderen einbauen, da ich es ja nicht in die news.php einbauen kann.
    Oder wie sol ich es machen?



    Gruß Bermuda
    Das Script mit der Reloadsperre kannst du verwenden wie es ist und einfach in deine counter.php setzen (nicht dazusetzen! Dadurch ersetzen. ), es sei denn ich hab'n PHP-Fehler irgendwo übersehen.


    Wegen eigene Grafiken im Counter:
    Nuja, mit eigenen Digits (Zahlenbildern) arbeiten, wird da um einiges komplizierter werden. Zumal man bei der PHP-Version die dein Server installiert hat, nicht mehr mit .gif-Dateien arbeiten kann. PHP Versionen ab AFAIK 4.1.0 setzen komplett auf PNG. Außerdem wäre's mit jeder Menge Fummelei verbunden.

    Die Schrift vergrößern geht hingegen sehr einfach.
    Du musst nur 3 Stellen im Script ändern.
    1.:
    PHP-Code:
    ImageString ($image300"$counter"$textcolor); 
    Die "3" in dieser Funktion, ist die Schriftgröße. Sollte es dein Serversystem allerdings nicht anders anbieten, gehts nur bis Schriftgröße 5.
    2.:
    PHP-Code:
    $image imagecreate(7013); 
    Natürlich musst du auch noch die Basisbildgröße anpassen, sonst wird die vergrößerte Schrift nicht komplett dargestellt. Die "70" ist die Breite des Basisbildes, die 13 die Höhe. Ich hab 70 gewählt weil der Platz bei dieser Schriftgröße bis etwa 10.000.000 Visits reichen sollte. Mit relativ geringem Scriptingaufwand und Fummelei könnte man es sicherlich auch hinbekommen die Babsisbildgröße dynamisch erzeugen zu lassen indem man ausliest wie viele Stellen der Counterwert hat und den einzelnen Zahlen dann eine jeweilige Breite einräumt und diesen Wert dann mit der Anzahl der Digits multipliziert. Vielleicht liefer ich das Script noch nach wenn du es selbst nicht hinekommst.
    3.: <img src="counter.php" width="70" height="13"> die Dimensionen im IMG-Tag mitd em du den Cunter einbindest. Natürlich müsste man auf die width-Angabe im Falle des in 2.: beschriebenen Counterbildes, mit dynamischer Größe, verzichten.


    Du könntest dich allerdings auch ein wenig in die Grafikfunktionen PHP's reinarbeiten und dann ggf. sogar andere Schriftarten verwenden. Allerdings kenn ich mich damit nicht aus, ich hab immer nur diese eine Schriftart verwendet weil ich etwas anderes nie brauchte.
    Hier eine Gesamtübersicht der Grafikfunktionen:
    http://de.php.net/manual/de/ref.image.php

    Hier jene die ggf. von Interesse sein könnten in diesem Kontext:
    http://de.php.net/manual/de/function.imagefttext.php
    http://de.php.net/manual/de/function.imageloadfont.php <- Beonders interessant.
    http://de.php.net/manual/de/function...encodefont.php
    http://de.php.net/manual/de/function...extendfont.php
    http://de.php.net/manual/de/function...psloadfont.php
    http://de.php.net/manual/de/function.imagepstext.php

    Wenn du zu Erkenntnissen über die Verwendung anderer Fonts gekommen bist, wär ich sehr interssiert wenn du sie mit uns teilst.

  2. #22
    Ich habe es jetzt mal mit der Reloadsperre versucht.
    Da muss irgendwo ein Fehler drinnen stecken.
    Der Counter wird nämlich nicht angezeigt.

    Was die images angeht, ich habe das nochmal überprüft und es werden immernoch *gif Dateien angezeigt.
    Aber wenn ich die vorhandenen Digits einfach vergrößere reicht mir das aus!
    Ich fänds nur noch toll wenn das mit der Reloadsperre auch noch funktionieren würde^^.


    Gruß Bermuda

    Geändert von Bermuda (15.07.2004 um 19:45 Uhr)

  3. #23
    Einen Fehler verursacht diese Zeile:
    PHP-Code:
    $zeit=time($zeit); 
    time() hat keine Parameter,
    PHP-Code:
    $zeit time(); 
    reicht also aus.

    Dann konnte ich eventuell ja doch noch helfen

  4. #24
    Erstmal danke.
    Aber es sind trotzdem irgendwo noch Fehler drinnen, da es immernoch nicht funktioniert.
    Hier ist nocheinmal der Code wie er jetzt ist:
    <?php
    $counter = "counter/count.txt";
    $zeitfenster = 600;
    $zeit = time();
    $update="1";

    $fp = fopen("counter.txt","r");
    $i=0;
    while (feof($fp)==0) {
    $line=chop(fgets($fp,260));
    $i++;
    $testarray[$i]=$line;
    }

    fclose($fp);
    $diff = $zeit-$testarray[3];
    if (($diff) >= $zeitfenster) { $update="0"; }
    if ($testarray[2] != $REMOTE_ADDR or $update == "0") {
    $ftp = @fopen($counter,"r+");
    $count = (int)fgets($ftp,100);
    $count++;
    rewind($ftp);
    fwrite($ftp,"$count\n$REMOTE_ADDR\n$zeit\n");
    fclose($ftp);

    // Grafik-Funktionen
    $image = imagecreate(70, 13); // erzeugt das Basisbild

    $trans = imagecolorallocate($image, 0xCC, 0xCC, 0xCC); // Transparenz definieren (für den Hintergrund)
    $textcolor = imagecolorallocate($image, 192, 192, 192); // Textfarbe im RGB-Format(änderbar)
    $transparent = imagecolortransparent($image, $trans); // Transparenz zuordnen

    ImageString ($image, 3, 0, 0, "$counter", $textcolor); // den Counterstand in das Bild zeichnen

    header('Content-type: image/png'); // Dem Browser sagen dass das hier ein Bild ist
    header('Cache-Control: no-cache, must-revalidate'); // Der Browser solls nicht cachen
    header('Pragma: no-cache');

    imagepng($image); // Gibt das Bild als PNG-Grafik aus
    imagedestroy($image); // löscht das Bild aus dem Datenpuffer

    ?>

  5. #25
    Hier bitte:
    PHP-Code:
    <?php

    $counter 
    "counter/count.txt";
    $zeitfenster 600;
    $zeit time();
    $update="1";

    $fp fopen($counter,"r");
    $i=0;
    while (
    feof($fp)==0) {
    $line=chop(fgets($fp,260));
    $i++;
    $testarray[$i]=$line;
    }

    fclose($fp);
    $diff $zeit-$testarray[3];
    if ((
    $diff) >= $zeitfenster) { $update="0"; }
    $ftp = @fopen($counter,"r+");
    $count = (int)fgets($ftp,100);
    if (
    $testarray[2] != $_SERVER['REMOTE_ADDR'] or $update == "0") {
    $count++;
    }
    rewind($ftp);
    fwrite($ftp,$count "\n" $_SERVER['REMOTE_ADDR'] . "\n" $zeit "\n");
    fclose($ftp);

    // Grafik-Funktionen
    $image imagecreate(7013); // erzeugt das Basisbild

    $trans imagecolorallocate($image0xCC0xCC0xCC); // Transparenz definieren (für den Hintergrund)
    $textcolor imagecolorallocate($image192192192); // Textfarbe im RGB-Format(änderbar)
    $transparent imagecolortransparent($image$trans); // Transparenz zuordnen

    ImageString ($image300"$count"$textcolor); // den Counterstand in das Bild zeichnen

    header('Content-type: image/png'); // Dem Browser sagen dass das hier ein Bild ist
    header('Cache-Control: no-cache, must-revalidate'); // Der Browser solls nicht cachen
    header('Pragma: no-cache');

    imagepng($image); // Gibt das Bild als PNG-Grafik aus
    imagedestroy($image); // löscht das Bild aus dem Datenpuffer

    ?>
    Es gab ein paar Leichtsinnsfehler, die wohl entstanden, weil Chocwise zu schnell tippte.^^

    Nebenbei: Es wäre hilfreich, wenn du deinen Code zukünftig in [*CODE][*/CODE] oder [*PHP][*/PHP] Tags schreibst.

  6. #26
    So, nu aba. Das hier ist jetzt garantiert die richtige Version:
    PHP-Code:
    <?php
    $counterfile 
    "counter/count.txt";
    $zeitfenster 600;
    $zeit time();
    $update="1";

    $fp fopen($counterfile,"r");
    $i=0;
    while (
    feof($fp)==0) {
    $line=chop(fgets($fp,260));
    $i++;
    $testarray[$i]=$line;
    }

    fclose($fp);
    $diff $zeit-$testarray[3];
    if ((
    $diff) >= $zeitfenster) { $update="0"; }
    if (
    $testarray[2] != $REMOTE_ADDR or $update == "0") {
    $ftp = @fopen($counterfile,"r+");
    $count = (int)fgets($ftp,100);
    $count++;
    rewind($ftp);
    fwrite($ftp,"$count\n$REMOTE_ADDR\n$zeit\n");
    fclose($ftp);
    }
    else {
    $count="$testarray[1]";
    }

    // Grafik-Funktionen
    $image imagecreate(7013); // erzeugt das Basisbild

    $trans imagecolorallocate($image0xCC0xCC0xCC); // Transparenz definieren (für den Hintergrund)
    $textcolor imagecolorallocate($image192192192); // Textfarbe im RGB-Format(änderbar)
    $transparent imagecolortransparent($image$trans); // Transparenz zuordnen

    ImageString ($image300"$count"$textcolor); // den Counterstand in das Bild zeichnen

    header('Content-type: image/png'); // Dem Browser sagen dass das hier ein Bild ist
    header('Cache-Control: no-cache, must-revalidate'); // Der Browser solls nicht cachen
    header('Pragma: no-cache');

    imagepng($image); // Gibt das Bild als PNG-Grafik aus
    imagedestroy($image); // löscht das Bild aus dem Datenpuffer
    ?>
    Habs eben selbst getestet.

    Das kommt davon wenn man den Code eben fix aus eine andere Page rauspuhlt und ihn sich zuvor nicht anschaut.

  7. #27
    O. Gott.
    Ich verstehe diesen ganzen Mist nicht.
    Jetzt funktionierts schon wieder nicht.
    Wenn ich jetzt mit diesem Code oder dem anderen, ohne Reloadsperre rpgxp.de/counter.php eintippe kommt immer dieser Fehler:

    Warning: fgets(): supplied argument is not a valid stream resource in /www/htdocs/v116195/counter.php on line 20

    Warning: rewind(): supplied argument is not a valid stream resource in /www/htdocs/v116195/counter.php on line 22

    Warning: fwrite(): supplied argument is not a valid stream resource in /www/htdocs/v116195/counter.php on line 23

    Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/v116195/counter.php on line 24

    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v116195/counter.php:20) in /www/htdocs/v116195/counter.php on line 39

    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v116195/counter.php:20) in /www/htdocs/v116195/counter.php on line 40

    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v116195/counter.php:20) in /www/htdocs/v116195/counter.php on line 41
    ‰PNG  IHDRF .ŠhPLTEÌÌÌÀÀÀ°ÚtRNS7áèðIDATxœc`À à¬8kYü¬?ø¬µ^ ¼ª~ËIEND®B`‚

    Sagt mir bitte jetzt nocheinmal, was ich genau machen soll.
    In welches Unterverzeichnis ich die count.txt Datei kopieren muss, und welche anderen Dateien ich alle noch brauche.
    Danke!



    Bermuda

  8. #28
    Der Code nimmt an, dass deine Verzeichnisstruktur wie folgt aussieht:

    domain/counter.php
    domain/counter/count.txt

    EDIT von Chocwise:
    Und denk an die Schreibrechte der count.txt (777).
    Sorry, wollte dafür nicht extra'n Post machen.

  9. #29
    Zitat Zitat
    Original geschrieben von mitaki
    Der Code nimmt an, dass deine Verzeichnisstruktur wie folgt aussieht:

    domain/counter.php
    domain/counter/count.txt

    EDIT von Chocwise:
    Und denk an die Schreibrechte der count.txt (777).
    Sorry, wollte dafür nicht extra'n Post machen.
    ......
    Ich Idiot.
    Da ich noch etwas anderes ausprobiert habe habe ich die Dateien ersetzt und vergessen den CHMOD zu verändern.
    Jetzt funktioniert alles richtig!
    Vielen Dank!
    Btw. Wenn jemand Lust hat Admin zu werden bei rpgxp.de ich suche noch jemanden.

    Edit: Wie ist das jetzt eigentlich, speichert der Counter die IP des Users und zählt deshalb nicht weiter oder wie funtktioniert dies?

    Edit2: Nur die count.txt auf den CHMOD 777 setzen oder auch die counter.php ?



    Gruß Bermuda

    Geändert von Bermuda (15.07.2004 um 21:51 Uhr)

  10. #30
    Zitat Zitat
    Original geschrieben von Bermuda
    ...
    Btw. Wenn jemand Lust hat Admin zu werden bei rpgxp.de ich suche noch jemanden.

    Edit: Wie ist das jetzt eigentlich, speichert der Counter die IP des Users und zählt deshalb nicht weiter oder wie funtktioniert dies?
    ...
    *kratzambart* Noch woanders Admin sein?
    Nee lassma, ich bin ja hier schon zu faul.


    Der Counter mit Reloadsperre ist allerdings kein High-Performance-Counter mit Top-Features. Der bringt auch nicht mehr viel wenn man täglich 1000 oder mehr Unique's auf seiner Seite hat, denn er loggt immer nur jeweils eine IP. Kommt jemand anderer daher und lädt den Counter steht seine IP in den Logs und der User der zuvor drin stand wird bei seiner nächsten Aktion wieder gezählt.

    Alles andere wäre weitaus komplexer und ich selbst zu faul soetwas zu programmieren.

  11. #31
    Zitat Zitat
    Original geschrieben von Chocwise
    *kratzambart* Noch woanders Admin sein?
    Nee lassma, ich bin ja hier schon zu faul.


    Der Counter mit Reloadsperre ist allerdings kein High-Performance-Counter mit Top-Features. Der bringt auch nicht mehr viel wenn man täglich 1000 oder mehr Unique's auf seiner Seite hat, denn er loggt immer nur jeweils eine IP. Kommt jemand anderer daher und lädt den Counter steht seine IP in den Logs und der User der zuvor drin stand wird bei seiner nächsten Aktion wieder gezählt.

    Alles andere wäre weitaus komplexer und ich selbst zu faul soetwas zu programmieren.
    Reich mir auch vollkommen, ist ja auch hauptsächlich für mich, so dass ich weiß wie es voran geht^^.
    Und was ist jetzt mit der count.txt Datei, muss nur die CHMOD 777 haben oder auch die counter.php Datei? Wenn die IP in der Counter.php gespeichert wird muss er doch auch Chmod 777 haben oder?



    Bermuda

  12. #32
    Nein, die counter.php speichert die Daten in der count.txt, daher muss nur diese les- und beschreibbar sein.

    @Chocwise:
    Ich sehe es als Geschenk zum 50. Post.

  13. #33
    Zitat Zitat
    Original geschrieben von Bermuda
    Reich mir auch vollkommen, ist ja auch hauptsächlich für mich, so dass ich weiß wie es voran geht^^.
    Und was ist jetzt mit der count.txt Datei, muss nur die CHMOD 777 haben oder auch die counter.php Datei? Wenn die IP in der Counter.php gespeichert wird muss er doch auch Chmod 777 haben oder?



    Bermuda
    Nee, schau mal in die count.txt rein die auf deinem Server liegt, dort steht der Counterstand, die zuletzt geloggte IP und ein Timestamp drin.
    die counter.php ist gewissermaßen das Textprogramm das Text in ein Dokument (count.txt) reinschreibt. Ist die Datei count.txt dann schreibgeschützt, kann das "Textprogramm" auch nicht hineinschreiben.
    Mit dem chmod 777 hebst du den Schreibschutz auf.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •