filesize() Problem

PaRADoX

Erfahrenes Mitglied
Hallo Leute,
ich habe mir mal den KlickCounter von Sili (hier zum anschauen, is'n Tutorial) angeschaut und fand ihn auch sehr gut... deswegen habe ich ihn auch auf meinen Seiten eingebaut. Hat auch alles super funktioniert, aber dann wollte ich den Counter in mein GB-Skript von TriggerTG (hier gibt's Infos) einbauen und es kommt folgende Meldung:

Warning: filesize() [function.filesize]: Stat failed for http://www.xyz.de/clicks.dat (errno=2 - No such file or directory) in http://www.xyz.de/click.php?url=http://www.xyz.de/main/index.php on line 277 0

Das GB-Skript basiert auf Templates und vielleicht liegt es ja da dran. Ich habe den Code zu ausgabe:

PHP:
Es wurde bereits
<?php
$file="click.dat"; // datei
$data = fopen($file, "r");
$inhalt = fread($data, filesize($file));
if(empty($inhalt)){$inhalt=0;}
fclose($data);
echo $inhalt; // darstellen
?>
Mal auf einen Link geklickt.

in die index.tpl eingebunden aber dann kommt wie gesagt die Meldung. In die Index.php kann ich den Kram leider net einbinden diese aus reinem PHP-Code besteht.

Falls noch eine Info fehlt, lasst es mich bitte wissen. Schonmal many tHx und ich hoffe es gibt eine Lösung für mein Problem! ;)


MfG, PaRADoX
 
Hier ist der Baum:

root
|- guestbook (ordner)
....|- templates (ordner)
....|- admin (ordner)
....|- index.php
....|- clicks.dat
....|- click.php

Der Code

PHP:
Es wurde bereits
<?php
$file="http://www.pfadzurdatei.de/click.dat"; // datei
$data = fopen($file, "r");
$inhalt = fread($data, filesize($file));
if(empty($inhalt)){$inhalt=0;}
fclose($data);
echo $inhalt; // darstellen
?>
Mal auf einen Link geklickt.

ist in der index.tpl im template Ordner. Ich hab noch vergessen das ich die URL zur click.dat komplett eingegeben habe (siehe code). Ich hoffe ich hab mich klar genug ausgedrückt! ;)
 
Du hast in Deinem vorletzten Satz genau den Fehler angegeben.

filesize

(PHP 3, PHP 4 )
filesize_--_Liefert die Größe einer Datei

Beschreibung
int filesize ( string filename)

Gibt die Größe einer Datei in Bytes zurück, oder FALSE wenn ein Fehler auftrat.

Das Ergebnis dieses Funktionsaufrufes wird zwischengespeichert. Siehe clearstatcache() für weitere Einzelheiten.

Diese Funktion ist nicht für remote Dateien geeignet, die zu prüfende Datei muss über das Dateisystem des Servers verfügbar sein.

filesize(http://irgendwas.de/datei.de) sucht in Deinem Fall nach einer Datei im Scriptverzeichnis mit dem namen »http://irgendwas.de/datei.de«.

kein wunder das die Datei nicht gefunden wird :-)

Manual Leser sind schlauer ;)
:rtfm:

Das gibt es aus GUTEM GRUND ...
 
Ahso... falls sich das Problem lösen lässt habe ich noch eine andere Frage... wäre es sinnvoll den ClickCounter mit ner IP-Sperre auszustatten? Wenn JA, wie bekomme ich das hin? Sorry @all das ich noch so'n PHP-N00B bin aber ich gebe mir mein bestes... SORRY! :(
 
Original geschrieben von Neurodeamon
Du hast in Deinem vorletzten Satz genau den Fehler angegeben.



filesize(http://irgendwas.de/datei.de) sucht in Deinem Fall nach einer Datei im Scriptverzeichnis mit dem namen »http://irgendwas.de/datei.de«.

kein wunder das die Datei nicht gefunden wird :-)

Manual Leser sind schlauer ;)
:rtfm:

Das gibt es aus GUTEM GRUND ...


Hi, ich hab mir scho durchgelesen was die Fehlermeldung bedeuten soll, bin aber leider nicht schlauer geworden. :( Wie löse ich jetzt am besten das Problem? Den Template-Ordner löschen und so umbasteln das die template-Dateien im Ordner mit der clicks.dat sind?


NACHTRAG:
So ich hab den Code in eine extra datei gepackt, die heißt result.php und liegt im selben verzeichnis wie die clicks.dat

jetzt versuche ich die per include einzubinden:

PHP:
<?php include("http://www.pfadzurdatei.de/result.php"); ?>

Aber es kommt folgende Fehler-Nachricht:

Warning: main() [function.main]: stream does not support seeking in http://www.pfadzurdatei.de/result.php on line 0<br />
3

Hab mir die Erklärung durchgelesen werde aber net schlau draus?!
 
Zuletzt bearbeitet:
Nochmal: Du kannst den Code auslagern so oft Du möchtest. Filesize sucht eine Datei mit dem Namen der URL die Du angibst, da filesize() NICHT mit URL arbeitet sondern mit absoluten bzw. relativen PFADEN AUF DEM WEBSERVER wo es aufgerufen wird.

also, wenn:

filesize("www.argh.de/pfad/datei.ext")

dann sucht filesize Verzeichnisse und Dateien mit dem Namen

Verzeichnis:
"www.argh.de"
Verzeichnis:
"pfad"
Datei:
"datei.ext"", nicht nach nur"datei.ext".
Du umgehst das ganze wenn Du entweder den absoluten Pfad verwendest oder den Relativen

Code:
// absoluter Pfad
z. B.: www/htdocs/deinweb/usw/datei.dat
// relativer Pfad (zum PHP-Script)
z. B.: ../datei.dat
(datei.dat wäre dann 1 Verzeichnis über dem Script)

Du mußt Dein Template-Script nicht verändern, sondern nur den Teil der PHP-Datei, der die Datei einliest!!!!!!
 
Zuletzt bearbeitet:
Oh man, ich bin doch dumm wie *censored* :rolleyes: Das mit dem absluten Pfad hat wunderbar geklappt, vielen Dank an Neurodeamon... du kommst auf meine Heldenliste :-) Da hätte ich auch selber draufkommen können, mensch mensch...

Aber was meinst du/ihr zu meinem Vorschlag mit der IP-Sperre? Ich setze den Counter so ein das auf jeder Seite angezeigt wird wieviel Clicks die Seite schon hat. Ist es da eher nützlich ne Sperre reinzuhauen oder net?

NOCHMAL MANY THX AN ALLE
 
:-) hehe, aller Anfang ist schwer.

Das mit der IP-Sperre mußt Du selbst wissen. Ich kann nur für mich persönlich sprechen: eine IP-Sperre fände ich unnötig. Es geht ja um die Klicks. Oder ist das ganze eher wie ein Counter? Dann wäre es schon vernünftig eine IP-Sperre zu verwenden ;-)
 
Zurück