Brett vorm Kopf: Automartischer Zähler geht nicht!
rattenfritzcomputer
- php
Ich weiß nicht; ich muss ein Brett vor dem Kopf haben, denn der automartische Zähler fuktioniert nicht.
Ich mache so eine kleine Unterhaltungecke mit PHP
<?php
#...
#Zahl aktualisieren
$nummer_lesen=fopen("funroom_zahl.txt", "r"); // funroom_zahl.txt ist im ausgangszustand auf 15 gestellt.
$zahl=fgets($nummer_lesen, 10);
$zahl=trim($zahl);
$zahl++; // Dann wird um eins weitergezählt.
$nummer_schreiben=fopen("funroom_zahl.txt", "w"); // Jetzt wird die neue Zahl, die um eins höher als die alte ist geschrieben.
fwrite($nummer_schreiben, $zahl);
#Chatmeldung 'include'dieren
$cont=file_get_contents("funroomlesen.php");
// Hier kommen dann die Fehlermeldungen. Das die wird näturlich nach euerem Wunsch später durch eine vernüpftige Fehlerbehandung ersetzt.
if (($cont=="") || (strlen($cont)<32)) die("Fehler, Datenbank konnte nicht geladen werden.");
if ($fh=fopen("funroomlesen.php","w")) ;else die("Fehler, Datenbank konnte nicht geschrieben werden.");
fputs($fh,str_replace("/* new */","/* new */ include('".$zahl.".php');",$cont)); // Hier wird dann /* new */ durch include(...) ersetzt.
fclose($fh); // Dann wird funroomlesen.php wieder geschlossen.
#Chatmeldungsdatei erstellen
$dateihandle=fopen($zahl.".php", "a"); // Jetzt wird die Meldungsdatei erstellt.
fputs($dateihandle,"<div class='nick'>Chatmeldung wurde im Raum Funroom am ".date("d.m.y")." um ".date("H:i.s")." Uhr von ".$Name." verfasst.</div><div class='meldung'>".$Text."</div>"); // Da muss natürlich Text hinein!^^
fclose($dateihandle); // Und wieder geschlossen
#Zahl aktualisieren
$nummer_lesen=fopen("funroom_loesch.txt", "r"); // funroom_loesch.txt ist im ausgangszustand auf 0 gestellt.
$zahl=fgets($nummer_lesen, 10);
$zahl=trim($zahl);
$zahl++; // Eins höher
$nummer_schreiben=fopen("funroom_loesch.txt", "w"); // Schreiben und ...
fwrite($nummer_schreiben, $zahl); // ... wieder zu!
#'include' der Chatmeldung entfernen
$cont=file_get_contents("funroomlesen.php"); // Open
// Fehlermeldungen. die() wird ersetzt!
if (($cont=="") || (strlen($cont)<32)) die("Fehler, Datenbank konnte nicht geladen werden.");
if ($fh=fopen("funroomlesen.php","w")); else die("Fehler, Datenbank konnte nicht geschrieben werden.");
fputs($fh,str_replace("include('".$zahl.".php');","",$cont)); // include wird entfernt
fclose($fh); // Close
#Datei löschen
unlink($zahl.".php"); // Wenn man schon die include entfernt wird, muss man auch die Datei löschen
/*
TANTE
FUNNY
EINFÜGEN
-
Tante Funny (abs. nicht Fanny) ist ein automartisches Antwortsystem. Es reagiert auf bestimmte Wörter und wird dann als eigene Meldung eingefügt.
*/
#Zahl aktualisieren
if(substr_count($Text,"Funny") || substr_count($Text,"funny") || substr_count($Text,"FUNNY") || substr_count($Text,"Fanny") || substr_count($Text,"fanny") || substr_count($Text,"FANNY")) { // Meldung wird natürlich nur erstellt, wenn man funny/fanny im Text vewendet. Weil Tante Funny reagiert nur, wenn man ihren Namen nennt.
$nummer_lesen=fopen("funroom_loesch.txt", "r");
$zahl=fgets($nummer_lesen, 10);
$zahl=trim($zahl);
$zahl++; // Zahl erhöhen wie beim vohrigem Teil
$nummer_schreiben=fopen("funroom_loesch.txt", "w");
fwrite($nummer_schreiben, $zahl);
#Tante Funny 'include'dieren
$cont=file_get_contents("funroomlesen.php");
if (($cont=="") || (strlen($cont)<32)) die("Fehler, Datenbank konnte nicht geladen werden.");
if ($fh=fopen("funroomlesen.php","w")); else die("Fehler, Datenbank konnte nicht geschrieben werden.");
fputs($fh,str_replace("/* new */","/* new */ include('".$zahl.".php');",$cont)); // include() einfügen
fclose($fh);
#Funnydatei erstellen
$dateihandle=fopen($zahl.".php", "a");
fputs($dateihandle,$Text2);
fclose($dateihandle);
#Zahl aktualisieren
$nummer_lesen=fopen("funroom_loesch.txt", "r");
$zahl=fgets($nummer_lesen, 10);
$zahl=trim($zahl);
$zahl++; // Um eines erhöhen
$nummer_schreiben=fopen("funroom_loesch.txt", "w");
fwrite($nummer_schreiben, $zahl);
#'include' von Tante Funny entfernen
$cont=file_get_contents("funroomlesen.php");
if (($cont=="") || (strlen($cont)<32)) die("Fehler, Datenbank konnte nicht geladen werden.");
if ($fh=fopen("funroomlesen.php","w")); else die("Fehler, Datenbank konnte nicht geschrieben werden.");
fputs($fh,str_replace("include('".$zahl.".php');","",$cont)); // include() löschen!
fclose($fh);
#Datei löschen
unlink($zahl.".php"); // löschen
}
#...
?>
Mir tut es leid, dass ich so viel Quelltext schreiben musste, aber ich habe keine Anhung woran es liegen könnte.
Bei Zähler gibt es aber ein Problem:
Nachdem ich eine Meldung verfasst habe bei FUNROOM, verfasst habe, sieht der Lösch-Zähler ganz normal aus. Nur bei funroom_zahl.txt steht nach einer Meldung mit Funny-Antwort (= 2 Meldungen) nicht 17, sondern nur 16. Aber das ist nicht alles. Bei Screenshot gibt es auch merkwürdigkeiten:
Hier ist noch der Code von der Seite, auf die geschrieben wird und von der der Screenshot ist:
...ht:50px;
}
</style>
#So sieht der Code aus:
<?php
#include zum eintragedings
/* new */ include('3.php'); include('17.php'); include('16.php');
include('15.php');
include('14.php');
include('13.php');
include('12.php');
include('11.php');
include('10.php');
include('9.php');
include('8.php');
include('7.php');
include('6.php');
include('5.php');
include('3.php');
?>
#Der Code sollte so aussehen:
<?php
#include zum eintragedings
/* new */ include('17.php'); include('16.php');
include('15.php');
include('14.php');
include('13.php');
include('12.php');
include('11.php');
include('10.php');
include('9.php');
include('8.php');
include('7.php');
include('6.php');
include('5.php');
include('3.php');
?>
~~~... und die Tante Funny Meldung sollte nicht unter 3.php sondern unter der aktuellen Zählerzahl gespeichert werden.
Ich habe mich bemüht dieses komplexe Problem so verständlich wie möglich zu verfassen. Falls mir das bei manchen stellen nicht gelungen ist, dann fragt nach.
lgrfc
Ich habe mich bemüht dieses komplexe Problem so verständlich wie möglich zu verfassen. Falls mir das bei manchen stellen nicht gelungen ist, dann fragt nach.
ich stelle einfach mal die frage so: "was willst du eigentlich?" oder noch konkreter "hä?"!
Hello,
Ich weiß nicht; ich muss ein Brett vor dem Kopf haben, denn der automartische Zähler fuktioniert nicht.
Ist das jetzt ein automatischer Auftrag zur Fehlersuche?
Die werden von Leuten hir im Forum immer gerne übernommen, aber nur gegen Vorkasse :-)
Wie lautet also die Frage?
Was hast Du schon zu deren Klärung getan?
Bitte erst lesen vor dem nächsten Posting:
http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
.
Hello,
Wie lautet also die Frage?
Was hast Du schon zu deren Klärung getan?
Ich bemühe mich noch ein Mal das Problem besser zu schildern. Den Quellcode kann ich nicht verkürzen (ich habe ihn eh schon verkürzt, aber das 'überbleibsl' ist noch immer sehr lang.), da ich nicht genau weiß, wo das Problem liegt. Das Problem muss bei Tante Funny liegen, weil ohne Tante Funny ist es gegangen. Der andere Teil sieht ziemlich ähnlich aus und dient zu Vergleichszwecken. (Ich habe schon verglichen und nichts gefunden.)
Problem:
Ich habe ein Unterhaltungseck gebaut, dass auch gut funzt, nur habe ich jetzt eine Zusatzfunktion gebaut: Auf bestimmte Worte (Funny und Fanny) wird eine automatische Antwort erstellt. Doch beim erstellen von Funny-Antworten passiert beim Zähler etwas nicht geplantes: Er schreibt und löscht falsche Dateien und include.
Zusatzinfos:
Alle Meldungen werden 'include'diert und als neue Datei geschrieben. Jede Datei bekommt eine Nummer. Bei der ersten Meldung wird 1.php gelöscht und das include entfernt und Datei 16.php geschrieben und include hinzugefügt.
Klärungsversuche:
1. Ich habe mit die($Text2);
getestet, ob es $Text2 überhaupt gibt.
2. Ich habe mir die Datei mit einer Chatmeldung mit T. Funny-Antwort beschrieben angesehen.
3. Ich habe mir die Zähler mit einer Chatmeldung mit T. Funny-Antwort beschrieben angesehen.
4. error_reporting(E_ALL);
5. Ich habe getestet, wie das bei Nicht-Funny-Meldungen (Meldungen auf die Funny keine automartische Antwort gibt.
6. Ich habe geschaut, welche Dateien er löschen und welche er schreiben will.
Erkäntnisse:
1. Es gibt $Text2.
2. So sieht die beschriebene Datei aus: ~~~php
/* new */ include('2.php'); include('16.php');
include('15.php');
include('14.php');
include('13.php');
include('12.php');
include('11.php');
include('10.php');
include('9.php');
include('8.php');
include('7.php');
include('6.php');
include('5.php');
include('4.php');
include('2.php');
3. funroom\_loesch.txt = Inhalt: 3
funroom\_zahl.txt = --"-- : 16
4. Keine neuen Erkenntnisse
5. Nicht-Funny-Meldungen funzen einwandfrei.
6. Löschen will er Datei 1.php (richtig) und Datei 3.php (Er sollte Datei 2.php löschen wollen). Er schreibt die Datei 16.php (richtig) und Datei 2.php (sollte 17.php heißen). Also immer die zweite Zahl stimmt nicht. Und die Operaton, wo die 2. Zahlen erstellt werden ist die erstellung von funny-Dateien (automartisches Antwortsystem).
Ich hoffe ich habe das verständlich geschrieben.
lgrfc