Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 33

Thema: PHP Counter

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    PHP Counter

    Hi.
    Ich habe einen PHP Couner.
    Er besteht aus einer counter.php und im Ordner /images sind die Zahlen.
    Im Ordner der counter.php ist auch noch eine count.txt Datei, die zählt wieviele Leute auf der Seite waren.
    Die counter.php Datei ist einwandfrei und vorallem fehlerfrei.
    Ich habe jedoch jetzt das Problem, dass ich den Counter nicht in die Website einfügen kann. Wenn ich direkt in den Browser meineseite.de/counter/counter.php eingebe erscheinen die Zalen und es wird auch alles gezählt und funktioniert einwandfrei.
    Ich will den Counter jedoch auf meiner Seite (PHP4; CMS=e107)
    einbauen.
    Deshalb habe ich ein Custom Menü gemacht und als Text eingegeben:
    <?php include "counter/counter.php"; ?>
    Jedoch passiert auf der Seite absolut nichts. Es erscheint kein neues Fenster wo der Counter oder so drinnen ist.
    Kann mir da jemand helfen?



    Bermuda

  2. #2
    ich glaube das heisst :

    <?php include ( "counter/counter.php"); ?>

    und nicht

    <?php include "counter/counter.php"; ?>

    so das müsste klappen.

    ps.lies dir mal diese seite durch :

    http://www.php-include.com/

    Geändert von dadie (15.07.2004 um 00:59 Uhr)

  3. #3
    Nun, entweder ist der Pfad falsch (vielleicht hast du einen Fehler gemacht bei der Relativen/Statischen Pfadangabe, oder deine Counter.php hat bei sich einen Fehler.

    Dh. Wenn du die Counter.php aufrufst stimmt der Relative Pfad zur Counter.txt vielleicht, aber sobald du die counter.php in deine Index.php einfügst darfst du nicht mehr von der Position der Counter.php ausgehen, sondern musst in der Counter.php die Pfadangabe von Index.php eintippen.

    (Ich hoffe es war verständlich, ansonsten kann ichs mit einem etwas umständlichen Beispiel erklären )

  4. #4
    Zitat Zitat
    <?php include ( "counter/counter.php";) ?>

    <?php include "counter/counter.php"; ?>
    Die Klammern sind bei allen include Befehlen optional. Hier hast du den Fehler gemacht, das Semikolon vor der abschließenden Klammer zu setzen, achte bitte darauf, fehlerfreien Code zu posten, da es für Neulinge sonst verwirrend werden kann.

    Liegt deine Index Datei ebenfalls in meineadresse.de/ oder z.B. unter meineadresse.de/seite/

    Wenn der Counter hier liegt,
    meineadresse.de/counter/counter.php
    meineadresse.de/counter/count.txt
    aber der include von hier stammt,
    meineadresse.de/seite/index.php
    dann passiert beim einfügen der count.txt das:
    include "meineadresse.de/seite/counter/count.txt";

    Wenn du den include Pfad in der counter.php änderst (../counter/count.txt) sollte es funktionieren.
    ../ geht ein Verzeichniss zurück, versuche das bei dir anzupassen.

    Hier wird man zu schnell geholfen für meine lahmen Finger^^

  5. #5
    1, sorry bin halt auch ein kleiner Neuling in sachen php

    2, wenn es mit php nicht geh willl nim einfach diesen code :

    <?php

    echo "
    <iframe frameborder=\"0\" src=\"./counter.php\" width=\"0\" height=\"0\" marginheight=\"0\" marginwidth=\"0\">
    </iframe>" ;

    ?>

    das ist zwar ne unkonventionele Lösung aber sie MUSS funzen.
    (ich hoffe dieses mal ist kien fehler drin)

  6. #6
    Zitat Zitat
    Original geschrieben von mitaki
    Die Klammern sind bei allen include Befehlen optional. Hier hast du den Fehler gemacht, das Semikolon vor der abschließenden Klammer zu setzen, achte bitte darauf, fehlerfreien Code zu posten, da es für Neulinge sonst verwirrend werden kann.

    Liegt deine Index Datei ebenfalls in meineadresse.de/ oder z.B. unter meineadresse.de/seite/

    Wenn der Counter hier liegt,
    meineadresse.de/counter/counter.php
    meineadresse.de/counter/count.txt
    aber der include von hier stammt,
    meineadresse.de/seite/index.php
    dann passiert beim einfügen der count.txt das:
    include "meineadresse.de/seite/counter/count.txt";

    Wenn du den include Pfad in der counter.php änderst (../counter/count.txt) sollte es funktionieren.
    ../ geht ein Verzeichniss zurück, versuche das bei dir anzupassen.

    Hier wird man zu schnell geholfen für meine lahmen Finger^^
    Ich denke, was du geschrieben hast wird mir am meisten helfen.
    Die anderen Sachen, funktionieren zwar auch, aber immer mit kleineren Fehlern oder einfach nicht schön, z.B das es einen weißen Hinergrund gibt und so etwas.

    Zu deinem Vorschlag.
    Also bei mir liegt die index.php unter meinedomain.de also meinedomain.de/index.php .
    Die counter.php liegt unter meinedomain.de/counter/counter.php
    was genau muss ich jetzt machen um den include Befehl nutzen zu können?
    Btw. Hast du ICQ oder MSN?


    Bermuda

  7. #7
    <?php include ( "./counter/counter.php"); ?>

    wenn die datei die drauf zugreiffen soll im oderner

    deine domain.de ist.

  8. #8
    Zitat Zitat
    Original geschrieben von Bermuda
    Zu deinem Vorschlag.
    Also bei mir liegt die index.php unter meinedomain.de also meinedomain.de/index.php .
    Die counter.php liegt unter meinedomain.de/counter/counter.php
    was genau muss ich jetzt machen um den include Befehl nutzen zu können?

    Bermuda
    Es ist noch wichtig zu erfahren wo die Counter.txt liegt. Ich gehe jetzt einfach mal aus, dass diese sich im selben Ordner befindet wie Counter.php

    Dann musst du in die Counter.php gehen und dort deinen fopen() suchen und den Pfad wie folgt anpassen.
    PHP-Code:
    fopen("counter/counter.txt",..... 
    Die Counter.php kannst du wie folgt in die Index.php einbinden:
    PHP-Code:
    <?php
        
    include("counter/counter.php");
    ?>
    Dann sollte eigentlich alles laufen

  9. #9
    dadies Code ist zwar richtig, aber vielleicht verstehst du es mit meinem Text wieder besser (nichts für ungut) ^^

    Es sollte reichen den include Befehl in der counter.php (welche die count.txt included) hierauf zu ändern:
    Code:
    include "counter/count.txt";
    Die Änderungen für die fopen() Funktionen, wie Latency sie beschrieb gehören auch dazu, der Code stimmt auch.

    Wenn noch Probleme auftreten sollten, dann gebe ich dir morgen meine ICQ Nummer.

    Geändert von mitaki (15.07.2004 um 02:36 Uhr)

  10. #10
    So, also im Moment ist es immernoch wie folgt, dass die index.php unter domain.de/index.php ist.
    Desweiteren editiere ich lieber nicht ide Index.php, da eigentlich der Counter über ein Custom Menü, das selber integriert wird.
    Der Counter ist unter domain/counter/counter.php die count.txt ist unter domain/counter/count.txt die images unter domain/counter/images
    So, dann poste ich jetzt einfach mal die counter.php
    wenn ihr mir sagt, was ich ändern muss um die counter.php unter domain.de/ zu setzen, so dass ich den include Befehl benutzen kann wäre ich euch sehr dankbar.
    Ich werde in roter Farbe einzeichnen, was ich denke verändert weden muss.

    <?php
    //path to the count.txt count storage file
    $counter_file = "http://rpgxp.de/counter/count.txt oder counter/count.txt" "count.txt";
    //open the file for reading
    if(!($fp = fopen($counter_file , "r"))) die ("cannot open file");
    //store the first 24 bytes of data from the file into $counter
    $counter = (int)fread($fp, 24);
    //close the file
    fclose($fp);
    //increment $counter by 1
    $counter++;
    //open the counter file for writing
    $fp = fopen($counter_file , "w");
    //write the new $counter value into the file
    fwrite($fp, $counter);
    //close the file
    fclose($fp);
    //number images are stored in the images directory
    //and are numbered from 0.gif to 9.gif
    //loop through the values of $counter and
    //use the strlen function to check the length of $counter
    for ($i = 0 ;$i < strlen($counter) ; $i++)
    {
    //the <img src> tag
    $imgsrc = SubStr($counter,$i ,1);
    echo "<a href=\"http://www.notathing.com/downloads.php\" target=\"_blank\"><http://rpgxp.de/counter/images> <img src=\"images/" . $imgsrc . ".gif\" border = \"0\"></a>";
    }
    ?>

  11. #11
    PHP-Code:
    <?php
    //path to the count.txt count storage file
    $counter_file "counter/count.txt";
    //open the file for reading$i++)
    .
    .
    .
    //the <img src> tag
    $imgsrc SubStr($counter,$i ,1);
    echo 
    '<a href="http://www.notathing.com/downloads.php" target="_blank"><img src="counter/images/' $imgsrc '.gif" border = "0"></a>';
    }
    ?>
    So sollte der Code eigentlich stimmen. Jedoch weiß ich nicht warum du <http://rpgxp.de/counter/images> mitten im Code stehen hast

  12. #12
    Zitat Zitat
    Original geschrieben von Latency
    PHP-Code:
    <?php
    //path to the count.txt count storage file
    $counter_file "counter/count.txt";
    //open the file for reading$i++)
    .
    .
    .
    //the <img src> tag
    $imgsrc SubStr($counter,$i ,1);
    echo 
    '<a href="http://www.notathing.com/downloads.php" target="_blank"><img src="counter/images/' $imgsrc '.gif" border = "0"></a>';
    }
    ?>
    So sollte der Code eigentlich stimmen. Jedoch weiß ich nicht warum du <http://rpgxp.de/counter/images> mitten im Code stehen hast
    Okay...da blicke ich auch nicht durch und als ich den Code kopiert habe, die alte counter.php ersetzt habe und nach domain.de hingefügt hatte, und gestartet hatte kam auch gleich ein Fehler...
    Kannst du nicht einfach meinen Code editieren?
    Btw. Ist doch egal ob ich den vollen Pfad schreibe also http://rpgxp.de blablabla oder einfach /counter/images.
    Kommt aufs gleiche raus...oder?


    Bermuda

  13. #13
    PHP-Code:
    <?php
    //path to the count.txt count storage file
    $counter_file "counter/count.txt";
    //open the file for reading
    if(!($fp fopen($counter_file "r"))) die ("cannot open file");
    //store the first 24 bytes of data from the file into $counter
    $counter = (int)fread($fp24);
    //close the file
    fclose($fp);
    //increment $counter by 1
    $counter++;
    //open the counter file for writing
    $fp fopen($counter_file "w");
    //write the new $counter value into the file
    fwrite($fp$counter);
    //close the file
    fclose($fp);
    //number images are stored in the images directory 
    //and are numbered from 0.gif to 9.gif
    //loop through the values of $counter and
    //use the strlen function to check the length of $counter
    for ($i ;$i strlen($counter) ; $i++)
    {
    //the <img src> tag
    $imgsrc SubStr($counter,$i ,1);
    echo 
    '<a href="http://www.notathing.com/downloads.php" target="_blank"><img src="counter/images/' $imgsrc '.gif" border="0"></a>';
    }
    ?>
    So sollte es nun laufen

  14. #14
    Gut, vielen Dank.
    Hat gut funmktioniert wenn ich es jetzt in den Browser eintippe.
    Aber die include Funktion funktioniert, weshalb auch immer immernoch nicht.
    Welchen include Befehl soll ich denn jetzt benutzen um den Counter anzuschauen. Nur mal als Info, dass du ihn dir auch mal anschauen kannst unter http://rpgxp.de/counter.php
    Dieses muss ich jetzt irgendwie einfügen.



    Bermuda

  15. #15
    Zitat Zitat
    Original geschrieben von Bermuda
    Gut, vielen Dank.
    Hat gut funmktioniert wenn ich es jetzt in den Browser eintippe.
    Aber die include Funktion funktioniert, weshalb auch immer immernoch nicht.
    Welchen include Befehl soll ich denn jetzt benutzen um den Counter anzuschauen. Nur mal als Info, dass du ihn dir auch mal anschauen kannst unter http://rpgxp.de/counter.php
    Dieses muss ich jetzt irgendwie einfügen.



    Bermuda
    Das Einfügen in die Index.php ist ein Kinderspiel. Einfach an irgend eine x-beliebige Stelle in der index.php folgenden Code schreiben:
    PHP-Code:
    <?php include("counter.php"); ?>
    Vorraussetzung ist aber dass die Counter.php weiter unter diesem Link erreichbar bleibt: http://rpgxp.de/counter.php

  16. #16
    Das habe ich schon verstanden, nur schau mal auf die Seite www.rpgxp.de dort gibt es einzelne Fenster, die habe ich alle, besodners auf der rechten Seite per Custom Menü gemacht.
    Deshalb kann ich ja nicht irgendwo einfach <?php include("counter.php"); ?> dies eintragen.
    Da ich es ja auch in so einem Fenster rechts unten haben will.
    Btw. Es gibt da noch etwas, die Hauptseite eigentlich wo auch automatisch die Domain rpgxp.de hingeführt wird heit rpgxp.de/news.php und ist nicht die index.php Datei.
    Die index.php Datei enthält diesen Code:

    <?php
    /*
    +---------------------------------------------------------------+
    | e107 website system
    | /index.php
    |
    | ©Steve Dunstan 2001-2002
    | http://e107.org
    | jalist@e107.org
    |
    | Released under the terms and conditions of the
    | GNU General Public License (http://gnu.org).
    +---------------------------------------------------------------+
    */
    require_once("class2.php");
    if($pref['membersonly_enabled'] && !USER){
    header("location: ".e_BASE."login.php");
    exit;
    }

    if(!$pref['frontpage'] || $pref['frontpage_type'] == "splash"){
    header("location: ".e_BASE."news.php");
    exit;
    }else if(is_numeric($pref['frontpage'])){
    header("location: ".e_BASE."content.php?article.".$pref['frontpage'].".255");
    exit;
    }else if(eregi("http", $pref['frontpage'])){
    header("location: ".e_BASE.$pref['frontpage']);
    exit;
    }else{
    header("location: ".e_BASE.$pref['frontpage'].".php");
    exit;
    }
    ?>


    Aber mehr ist da nciht.



    Bermuda

  17. #17
    Zitat Zitat
    Original geschrieben von Bermuda
    Das habe ich schon verstanden, nur schau mal auf die Seite www.rpgxp.de dort gibt es einzelne Fenster, die habe ich alle, besodners auf der rechten Seite per Custom Menü gemacht.
    Deshalb kann ich ja nicht irgendwo einfach <?php include("counter.php"); ?> dies eintragen.
    Da ich es ja auch in so einem Fenster rechts unten haben will.



    Bermuda
    Na das kann ja heiter werden....
    Lass mich raten, von der stammt keine Zeile Code auf der Seite? Warscheinlich hast du ein WPS oder CMS verwendet und damit die Seite zusammengeschustert.

    Nun, das erschwert die ganze Sache etwas. Es ist sicherlich möglich die Templates so weit anzupassen den Counter irgendwo anzeigen zu lassen, und es sicherlich auch kein Beinbruch für jemanden der mit dem System vertraut ist, aber hier und jetzt kann ich dir nicht helfen, da solltest du dir lieber einen fähigen Programmierer für das Project besorgen, denn an solchen Sachen wirst du immer wieder scheiter. Auser du fängst an HTML, CSS, PHP usw. zu pauken.

    Aber wenn du sagstest, dass du die anderen Menüs auch per Custom Menü angelegt hast dann müsste ein weiteres Menü doch auch möglich sein oder? Und als Inhalt dieses Menüs trägst du einfach den PHP Code von oben ein

  18. #18
    Ich habe im ersten Post schon geschrieben, dass der Code nicht von mir stammt und ich ein cms von e107 benutze...warum sollte ich eins coden, wenn dass was die haben fast perfekt ist.
    Mit HTML habe ich absolut keine Probleme, PHP kann ich nicht proggen aber Sachen um ändern.
    Genau deshalb habe ich ja auch schon hermgeschaut in den einzelnen PHP Dateien, jedoch nirgends könnte ich den Befehl passend einbetten.
    Ich werds jetzt warscheinlich doch per iframe machen müssen, anders gehts nicht, ich habe nämlich mal ein Custom Menü PHP Datei geöffnet, der Befehl wird halt nur als Text anerkannt und wird nicht ausgeführt.
    Naja, wenn dir noch etwas einfällt, kannst es ja posten.



    Bermuda

  19. #19
    Ok, dann pass mal op, wir versuchen was anderes.
    Und zwar scheißen wir auf den Schnickschnack mit den externen Bildern die eingebunden werden und erzeugen mit PHP selbst ein Bild welches man auch als ganz gewöhnliches Bild handhaben kann.
    Wenn dein Host nun also Image-Funktionen bietet (was auf einer Linuxkiste und PHP 4.3.1 gar nicht mal so unüblich ist), dürfte dies eine recht optimale Lösung für dich darstellen.

    Und zwar ersetz mal den Code in deiner counter.php-Datei durch diesen:
    PHP-Code:
    <?php 
    //path to the count.txt count storage file 
    $counter_file "counter/count.txt"
    //open the file for reading 
    if(!($fp fopen($counter_file "r"))) die ("cannot open file"); 
    //store the first 24 bytes of data from the file into $counter 
    $counter = (int)fread($fp24); 
    //close the file 
    fclose($fp); 
    //increment $counter by 1 
    $counter++; 
    //open the counter file for writing 
    $fp fopen($counter_file "w"); 
    //write the new $counter value into the file 
    fwrite($fp$counter); 
    //close the file 
    fclose($fp); 

    // 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"$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

    ?>
    Diese counter.php-Datei kannst du nun in deine Seite als Bilddatei einbinden. Einfach per <img src="counter.php" width="70" height="13">. Sonst nix. Kein zusätzlicher Include. Keine zusätzlichen 0-9.gif's mehr.

    Ich hab dir den Code ausdokumentiert damit du verstehen kannst was Sache ist und ihn ggf. selbst für dich anpassen kannst.

    Hier zum Anschauen mit roter statt grauer Schrift:


    Look, funzt sogar hier im Forum.

    BTW: Das Dingen könnte noch eine Reloadsperre gebrauchen:
    PHP-Code:
    $counter "counter/count.txt";
    $zeitfenster 600;
    $zeit=time($zeit);
    $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(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"$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

    ?> 
    Erzähl obs geklappt hat.

  20. #20

    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

Berechtigungen

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