[PHP] Für Besucherzählerstand zwei Dateien anlegen

  • Ersteller Ersteller Mr. Snoot
  • Erstellt am Erstellt am
M

Mr. Snoot

Gast
Hio,

ich will einen Counter in zwei Seiten einbauen, da diese aber in unterschiedlichen Ebenen liegen kriegt eine der zwei Seiten immer Probleme damit, die Datei zu finden in der der Zählerstand gespeichert wird.

Drum hab ich mir gedacht ich lasse die Counterdatei einfach zweimal erstellen - eben für jede Seite eine. Ich hab mal die Datei angehängt, die für den Counter verantwortlich ist.

Unter dem Punkt Konfiguration wird angegeben, wo die txt-Datei mit dem Zählerstand gespeichert wird.

Kann ich da den Eintrag $counterfile einfach drunter kopieren (entsprechend anders benennen, $counterfiletwo o.ä.) und dann dementsprechend auch den Teil ab // Counter lesen für die zweite Counterdatei kopieren?

Ich hab's einfach mal probiert, krieg aber immer nen Parse error in der allerletzten Zeile.

Krieg ich den Fehler, weil das generell nicht geht, oder ist da blos was am Script falsch?


edit: in den zwei Seiten wird diese counter.php mittels include eingebunden. Der Pfad zum Zählerstand geht immer von dieser counter.php aus. Drum nützt es nichts einfach in den zwei Seiten die Pfadangabe zu der counter.php festzulegen, da von dieser aus gesehen der Pfad ($counterfile = "../_scripts/counter.txt";) zum Zählerstand immer nur zu einer der zwei Seiten stimmt (falls jemand versteht was ich meine ;))
 

Anhänge

Zuletzt bearbeitet:
Hallo,

auf die schnelle kann ich eigentlich keinen Fehler im Code entdecken. Wie lautet denn die genaue Parse-Error-Meldung?

Desweiteren brauchst du es dir doch nicht unnötig so schwer machen. ;)
So wie ich es sehe unterstützen alle verwendeten Dateisystem-Funktionen auch eine absolute Pfadangebe, womit das inculde-Problem wegfallen sollte. ;)

MfG mh1001
 
Zuletzt bearbeitet:
Also in dem angehangenden Script ist jetzt nur der Pfad zu einer Datei drin - drum kannste da auch keinen Fehler sehen; ist keiner drin ;)

Bei ner absoluten Pfadangabe krieg ich auch nen Fehler:

Warning: fopen(): URL file-access is disabled in the server configuration in /raid/domains/org/h/halbleiter/htdocs/www/_scripts/counter.php on line 56

Warning: fopen(http://www.halbleiter.org/_scripts/counter.txt): failed to open stream: no suitable wrapper could be found in /raid/domains/org/h/halbleiter/htdocs/www/_scripts/counter.php on line 56
Konnte Counterdatei nicht anlegen

Die erste Fehlermeldung, wenn ich eine zweite Datei anlegen wollte weiß ich nimma - und beim Reproduzieren kommt nun immer was anderes.

Würde es denn generell gehen mit den zwei Dateien (dürften dann beide counterfile-Pfade zur selben counter.txt verweisen?)?



edit: der Parse error lag wohl an einer fehlenden '}' zum Schluss. Wenn ich jetzt mit counterfiletwo auf die counter.txt verweise und den unteren Teil "Counter lesen" dubliziere und an counterfiletwo anpasse kommt:

Warning: fopen(_scripts/counter.txt): failed to open stream: No such file or directory in /raid/domains/org/h/halbleiter/htdocs/www/_scripts/counter.php on line 110
Konnte Counterdatei nicht anlegen

Wenn ich mit der counterfiletwo auf eine countertwo.txt, die ich von der counter.txt kopiert habe, verweise kommt der gleiche Fehler.
 
Zuletzt bearbeitet:
Das mit den absoluten Pfadangaben war wohl dann schon einmal nichts, da dies wahrscheinlich von deinem Hoster deaktiviert wurden.
Also wieder zurück zu den relativen Angaben. ;)

Wie sehen denn jetzt die beiden Files (originale counter.php welche funktioniert und die angepasste) aus?
In deinem letztem Post taucht nämlich ein Parse-Error in Zeile 110 auf, welche aber eigentlich gar nicht mehr in deiner oben geposteten counter.php existiert. ;)

MfG mh1001
 
Hab's mal so angehängt, wie ich mir das dachte.

Der Fehler ist dann in der Zeile wo die zweite Variable die Datei öffnen soll.
Hab's wie gesagt auch schon mit einer zweiten countertwo.txt versucht; selber Fehler.



Das mit der absoluten Pfadangabe ist auch komisch, denn zu den Bilddateien für die Zahlen kann ich eine absolute Angabe machen.
 

Anhänge

Zuletzt bearbeitet:
Gauder schrieb:
[...] Das mit der absoluten Pfadangabe ist auch komisch, denn zu den Bilddateien für die Zahlen kann ich eine absolute Angabe machen.
Dass die Bilder auch mit absoluten Pfadangaben korrekt angezeigt werden ist normal. Das Obige bezog sich auf serverseitige Dateifunktionen. ;)

Zum eigentlichen Problem: Jetzt erst habe ich das Problem genau verstanden.
Wenn du die entsprechenden Teile in der PHP-Datei einfach verdoppelst und dann anpasst, ist es natürlich klar, dass es nicht funktionieren kann, da dann jeweils der andere Teil ins Leere läuft.

Somit bleiben dir zwei Möglichkeiten, wobei ich letztere bevorzugen würde:

1) Du schreibst für beide Seiten eine seperate, angepasste PHP-Datei.
2) Du legst den Pfad nicht in der counter.php fest, sondern definierst diesen einfach in der entsprechenden Datei, in welcher diese eingebunden wird.

MfG mh1001
 
mh1001 schrieb:
1) Du schreibst für beide Seiten eine seperate, angepasste PHP-Datei.
Das ist natürlich das einfachste :)

Habe einfach eine zweite counter.php mit anderem Namen erstellt, so dass jede der zwei Seiten ne eigene hat. Beide verweisen aber auf die selbe counter.txt mit dem Zählerstand (die eine mit "../_scripts/counter.txt" die andere mit "_scripts/counter.txt").

Scheint zu klappen - aber kommt sich da jetzt auch nix in die Quere!?
 
Gauder schrieb:
[...] aber kommt sich da jetzt auch nix in die Quere!?
Nein, in die Quere sollte sich eigentlich nichts kommen, da Schreib- und Lesezugriffe ja lediglich auf die Textdatei vorkommen, in der die Counterdaten gespeichert sind. Somit ist es auch egal von wo und mit welchem Pfad diese aufgerufen wird. ;)

MfG mh1001
 
warum legst du das counterfile nicht in den document root? dann kann man von ueberall darauf zugreifen.
 
Weil das mit dem include nicht hinhaut.

Wenn ich von einer Seite, die eine Ebene tiefer liegt, auf die counter.php verweise (mit ../ wenn sich diese im Root befindet) muss in der counter.php auch der Pfad zur counter.txt von einer Ebene tiefer erfolgen (../), obwohl die counter.txt im gleichen Pfad wie die counter.php liegt.

Wenn ich dann mit einer anderen Seite bspw. im Root auf die counter.php zugreife stimmt von hier aus gesehen der Pfad zur counter.txt nicht, denn der geht ja von einer Ebene tiefer aus :)
 
der pfad stimmt immer


PHP:
include($_SERVER['DOCUMENT_ROOT'].'/counter.php');
fopen($_SERVER['DOCUMENT_ROOT'].'/counter.txt', $mode);

oder du legst direkt den include_path fest

PHP:
ini_set('include_path', '.'.PATH_SEPERATOR.'..'.PATH_SEPERATOR.$_SERVER['DOCUMENT_ROOT']);
 
Na ok, kenn mich mit PHP nicht aus :)

Aber wäre mir schon lieber, wenn die Dateien in den Verzeichnissen bleiben, wo sie jetzt sind, vor allem nachdem ich's endlich geschafft habe das ordentlich zu organisieren.

Kann man das evtl. auch lösen (also, dass die counter.xxx Dateien bspw. im Ordner scripts liegen)?
 
PHP:
include($_SERVER['DOCUMENT_ROOT'].'/scripts/counter.php');

etcpp
 
Das mit dem include pack ich dahin, wo ich jetzt auch den Counter einbinde, und wo kommt das fopen hin?
 
ich weiss nicht wie dein document_root ist, kannst in der phpinfo() nachlesen, daran musst du den pfad, denn du bei include() angibst anpassen. das fopen war nur als bspl, wie man die counter-datei oeffnen koennte. du machst das vielleicht auch einfach mit file_Get_contents() doer so, weiss ich ja nicht.

EDIT:

wenn dein verzeichnisbaum zB

/files/
/html/
/html/scripts/

und dein DOCUMENT_ROOT

/html/

ist, dann kannst du halt von ueberall aus via

$_SERVER['DOCUMENTROOT'].'/scripts/counter.php'

deine counter.php, und von ueberall aus via

$_SERVER['DOCUMENTROOT'].'/scripts/counter.txt'

dein counter-file laden. die waere dann halt im gleichen verzeichnis. egal wie du sie einbindest.
 
Zuletzt bearbeitet:
HoRnominatoR schrieb:
das fopen war nur als bspl, wie man die counter-datei oeffnen koennte. du machst das vielleicht auch einfach mit file_Get_contents() doer so, weiss ich ja nicht.
Kannst ja vielleicht mal einen Blick in die im ersten Post angehängte Datei werfen, da wird die Datei schon über fopen geöffnet. Aber kA wie ich das dann anpassen müsste.
 
s.o.

[][][]
 
Zurück
Oben