molily: Nein ich speichere ....

Beitrag lesen

Hallo, Daniela,

"Polite people say HELO first" hätte es ein MTA genannt... ;)

Das ganze Script sieht so aus:

<?php

$name = 'daten.txt';   // file for datastoring
$showdayvisits = 1;   // Show visits per day, 1 = yes, 0 = no

if (file_exists($name)==FALSE) {

Die fopen()-Parameter 'w' und 'a' legen automatisch eine neue Datei an.

$file = fopen($name, "w");

Aha, öffne die Datei oder lege sie an und setze die Länge der Datei auf Null.

if($file) {
  fputs($file, "");

Diese Zeile ist überflüssig.

fputs($file, "\r\n");
  fputs($file, "\r\n");

Aha, schreibe zwei Zeilenumbrüche in die Datei.

fclose($file);
}
}

Was hat dieser Programmbereich überhaupt für einen Nutzen?

$visitsaday = 1;
$ipok = 1;
$datum =date("d.m.Y");

$file = fopen ($name, "r");

Öffne die Datei zum Lesen.

while (!feof($file)) {
    $buffer = fgets($file, 4096);

Lese nacheinander Zeilen aus der Datei, in $buffer dürfte also am Ende die letzte Zeile vorhanden sein.

{

Diese Klammer dürfte einen Syntaxfehler ausgeben.

}

}

Diese Klammer ist auch zuviel.

fclose ($file);

Was sollte das Lesen aus der Datei? Die Variable $buffer wird im Programm nicht verwendet.

$file = fopen($name, "r+");

Öffne die Datei und setze den Zeiger auf den Dateianfang,

if ($showdayvisits == 1)
rewind($file);

Setze den Zeiger erneut auf den Dateianfang. Was soll das?

fclose($file);

Aha, schließe die Datei, ohne irgendwelche Operationen vorgenommen zu haben. Wozu?

if ($ipok == 1) {
  $from = $HTTP_REFERER;

Funktioniert nur bei register_globals=on, $_SERVER['HTTP_REFERER'] wäre passender.
Im Übrigen könntest du auf isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) prüfen.

if ($from == '') {$from = 'no Referer';}
  if ($lange <91) {

$lange? Wo kommt diese Variable denn her? Was hat sie für einen Zweck?

for ($i = 1; $i <= (90-$lange); $i++) {
   $leer2= $leer2." ";
  }

Was soll das? Es werden Leerzeichen in der Variable $leer2 aneinandergereiht, die Variable $leer2 wird aber nicht weiter benutzt.
Übrigens kann das auch $leer2.=" "; geschrieben werden.

}

$zeile= "$from";

-> $zeile=$from;

Diese Wertzuweisung ist unnötig, wieso verwendest du nicht $from?

$file = fopen($name, "a");

Aha, öffne die Datei zum Schreiben und setze den Zeiger auf das Dateiende.

if($file) {
  fputs($file, $zeile);
  fputs($file,  "\r\n");
  fclose($file);
}

Aha, endlich wird der Referer geloggt. fputs($file, $zeile."\r\n"); würde übrigens ausreichen

}

Bitte mache *logische* Einrückungen, sodass der Leser sofort sieht, welche Klammer welche Kontrollstruktur schließt.

?>

Nur leider Funktioniert dein Vorschlag nicht denn dann bekomme ich eine Fehlermeldung

Ach, und welche? Vielleicht denkst du erst einmal über das Programm nach, denn zu 80% ist es mehr oder weniger unverständlich und kommt mir deshalb völlig unsinnig vor, da ständig die Datei geöffnet und geschlossen wird aus mir unerfindlichen Gründen. Kann es sein, dass du nur einen Teil des Programmes und zusätzlich mehrere irrelevante Teile gepostet hast?

Folgendes würde IIRC ausreichen:

$name='daten.txt';
if (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'] && !stristr($_SERVER['HTTP_REFERER'], "deineURL.de")) {
 $file=@fopen($name, 'a');
 if ($file) {
  @fputs($file, $_SERVER['HTTP_REFERER']."\r\n");
  @fclose($file);
 }
}

Grüße,
Mathias

--
Geschwisterzwist zwischen Slivovic schlürfenden, spitzen, twistenden und schwitzenden Zwitscherschwestern.
Zwanzig Zwerge zeigen Handstand, zehn im Wandschrank, zehn am Sandstrand.
Kalle Kahlekatzenglatzenkratzer kratzt kahle Katzenglatzen.
Bietet Brunhilde berauschende Brüste, buhlt Bodo brünstig beim Balle.