T
Thomas Möbius
Guest
Hallo, habe fogendes Chatscript, es wird gesagt, dass ich dafür keine MySQL brauche.
CODE <?php session_start();
include ("filtering.inc.php"); // Externe Filterfunktion
include ("tpl.inc.php"); // Template Klasse
include ("config.php"); // Template Klasse
$name = "chat.csv"; // Filename to write in
$nameonline = "online.csv"; // Wer ist online?
$nameu = "gesperrt.csv"; // Blacklist
$trenner = "¶"; // Trenner für die CSV Datei
$loechen_nach = $angezeigt_werden * 4;
$userip = $_SERVER['REMOTE_ADDR'];
$rnd = rand(1,999999999); // Die Message MUSS EINZIGARTIG sein!!!!!!!!!
$sek_seit70 = date("U");
$time = date("H:i");
$username = $_SESSION["u"];
$neu = $_POST['neu'];
$message = $_POST['message'];
if($_POST['privat']) $privat_name = $_POST['privat_name'];
else $privat_name = "";
// Initialisierung der TPL Klasse
$pet = new pet();
$pet->readFile($template."/schreiben.tpl.htm");
// ANFANG ### Textlayout ********************************
// ANFANG ### FILTER HTML ********************************
//$message = strip_tags($message); // No HTML Tags
$username = filtering($username);
$message = filtering($message);
// ENDE ##### FILTER HTML ********************************
// ANFANG ### USERNAME LEER **********************************
if (empty($username)) {
echo "ERROR! Während der Datenübermittlung ist ein Fehler aufgetreten. Versuchen Sie sich erneut anzumelden.<br><a href=\"anmeldung.php\">Zur Anmeldung >></a>";
exit(); }
// ENDE ##### USERNAME LEER **********************************
// ANFANG ### Blcklist Kontrolle ********************************
$datei=fopen($nameu,"r");
$groesse=filesize($nameu);
$data=fgetcsv($datei,$groesse,";");
while($data!=false){
if ($data[0] == $userip) {
print ("<h3>Ihre IP befindet sich in der Blackliste!</h3>Sie sind nicht berechtigt den Chat zu benutzen.");
exit();
}
$data=fgetcsv($datei,$groesse,";");
}
fclose($datei);
// ENDE ##### Blcklist Kontrolle ********************************
$farbe = strip_tags($_POST['farbe']);
$fett = strip_tags($_POST['fett']);
$kursiv = strip_tags($_POST['kursiv']);
if ($message != ""){
if($kursiv and $fett) $message = "<b><i><font color=\"#$farbe\" class=\"normal\">$message</font></i></b>";
if($kursiv and $fett=="") $message = "<i><font color=\"#$farbe\" class=\"normal\">$message</font></i>";
if($kursiv=="" and $fett) $message = "<b><font color=\"#$farbe\" class=\"normal\">$message</font></b>";
if($kursiv=="" and $fett=="") $message = "<font color=\"#$farbe\" class=\"normal\">$message</font>";
}
// ENDE ##### Textlayout ********************************
// ANFANG ### WENN NEU
if ($neu == "ja") {
$message = "<font color=\"#999999\"><i>ist zu uns gekommen...</i> :-)</font>"; //Begrüssung für neue User
$farbe="000000"; //ausgang
}
// ENDE ##### WENN NEU
//*********************************************************************************************
//****************** ANFANG Daten in CSV abspeichern ******************************************
//*********************************************************************************************
if ($message != "") {
$bol=file_exists($name);
if($bol){
// ANFANG ### Anzahl der Datensätze bestimmen in CSV und in Löcharray einfügen
$datensaetze=0;
$datei=fopen($name,"r");
$groesse=filesize($name);
$data=fgetcsv($datei,$groesse,$trenner);
while($data!=false){
$datensaetze++;
$data=fgetcsv($datei,$groesse,$trenner);
}
fclose($datei);
$vieviel_muss_leloescht_werden = $datensaetze - $loechen_nach; // Vieviel ist zu Löchen
//print("<br>vieviel_muss_leloescht_werden = ".$vieviel_muss_leloescht_werden);
//print("<br>datensaetze = ".$datensaetze);
//print("<br>loechen_nach = ".$loechen_nach);
//*****************************************************************
if ($vieviel_muss_leloescht_werden > 0) {
$datei=fopen($name,"r");
$groesse=filesize($name);
$data=fgetcsv($datei,$groesse,$trenner);
for($i=0; $i<$vieviel_muss_leloescht_werden; $i++){
$loeschen[$i]= $data[0].$trenner.$data[1].$trenner.$data[2].$trenner.$data[3].$trenner.$data[4].$trenner.$data[5].$trenner.$data[6]."\n";
//echo "<br>array [$i] = $loeschen[$i]";
$data=fgetcsv($datei,$groesse,$trenner);
}
//print("<br>i (zu löschen) = ".$i);
fclose($datei);
}
if ($vieviel_muss_leloescht_werden < 1) $i = 0;
// ENDE ##### Anzahl der Datensätze bestimmen in CSV und in Löcharray einfügen
// ANFANG ### Löschung vornehmen
if ($vieviel_muss_leloescht_werden > 0) {
for($a=0;$a<$i;$a++){
$datei = fopen($name,"r");
$dateigroesse = filesize($name);
$inhalt = fread($datei,$dateigroesse);
fclose($datei);
//echo "<br>gelöscht array [$a]";
$ersetzen=str_replace($loeschen[$a],"",$inhalt); // Die Message MUSS EINZIGARTIG sein!!!!!!!!!
$datei = fopen($name,"w");
fwrite($datei,$ersetzen);
fclose($datei);}
}
// ENDE ###### Löschung vornehmen
}
$dat=fopen($name,"a");
fwrite($dat,$userip.$trenner.$rnd.$trenner.$username.$trenner.$message.$trenner.$sek_seit70.$trenner.$time.$trenner.$privat_name."\n");
fclose($dat);
}
//*********************************************************************************************
//****************** ENDE Daten in CSV abspeichern ********************************************
//*********************************************************************************************
//************* Farben Auswahl ******************
foreach($farben_array as $einzelne_farbe){
if ($farbe==$einzelne_farbe) $str="<option value=\"$einzelne_farbe\" style=\"background-color:#$einzelne_farbe; color:#$einzelne_farbe\" selected>&nbsp;&nbsp;&nbsp;&nbsp;</option>";
else $str="<option value=\"$einzelne_farbe\" style=\"background-color:#$einzelne_farbe; color:#$einzelne_farbe\">&nbsp;&nbsp;&nbsp;&nbsp;</option>";
$options.=$str."\n";
}
if ($fett) $f="<input name=\"fett\" type=\"checkbox\" class=\"input1\" value=\"true\" checked>";
else $f="<input name=\"fett\" type=\"checkbox\" class=\"input1\" value=\"true\">";
if ($kursiv) $k="<input name=\"kursiv\" type=\"checkbox\" class=\"input1\" value=\"true\" checked>";
else $k="<input name=\"kursiv\" type=\"checkbox\" class=\"input1\" value=\"true\">";
if($privates_erlauben){
if ($_POST['privat']) $privat_ausgabe="(Privat:<input name=\"privat\" type=\"checkbox\" class=\"input1\" value=\"true\" disabled=\"true\" checked>)";
else $privat_ausgabe="(Privat:<input name=\"privat\" type=\"checkbox\" class=\"input1\" value=\"true\" disabled=\"true\">)";
$pet->assign($privat_ausgabe, "privat");}
$pet->assign($options, "options");
$pet->assign($f, "f");
$pet->assign($k, "k");
$pet->parse();
$pet->output();
?>
Habe nun einfach alle daten hochgeladen, bekomme aber folgende Fehlermeldung, wenn ich einen Nickname eingeben will und auf ok klicke.
Warning: fwrite(): supplied argument is not a valid stream resource in /www/htdocs/hanna/chat/schreiben.php on line 144
Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/hanna/chat/schreiben.php on line 145
Was ist das bzw wie kann ich das ändern ?
In den betroffenen Zeilen steht das hier:
CODE fwrite($dat,$userip.$trenner.$rnd.$trenner.$username.$trenner.$message.$trenner.$sek_seit70.$trenner.$time.$trenner.$privat_name."\n");
fclose($dat);
Ihr könnt es euch gern persöhnlich unter: http://hanna.strangeclub.de/chat/index.php ansehen.
Das ist natürlich nicht das gesamte Script, aber der Teil, in dem die Lines bemängelt werden.
Für hilfe bin ich immer dankbar
Liebe Grüße
Thomas Möbius
CODE <?php session_start();
include ("filtering.inc.php"); // Externe Filterfunktion
include ("tpl.inc.php"); // Template Klasse
include ("config.php"); // Template Klasse
$name = "chat.csv"; // Filename to write in
$nameonline = "online.csv"; // Wer ist online?
$nameu = "gesperrt.csv"; // Blacklist
$trenner = "¶"; // Trenner für die CSV Datei
$loechen_nach = $angezeigt_werden * 4;
$userip = $_SERVER['REMOTE_ADDR'];
$rnd = rand(1,999999999); // Die Message MUSS EINZIGARTIG sein!!!!!!!!!
$sek_seit70 = date("U");
$time = date("H:i");
$username = $_SESSION["u"];
$neu = $_POST['neu'];
$message = $_POST['message'];
if($_POST['privat']) $privat_name = $_POST['privat_name'];
else $privat_name = "";
// Initialisierung der TPL Klasse
$pet = new pet();
$pet->readFile($template."/schreiben.tpl.htm");
// ANFANG ### Textlayout ********************************
// ANFANG ### FILTER HTML ********************************
//$message = strip_tags($message); // No HTML Tags
$username = filtering($username);
$message = filtering($message);
// ENDE ##### FILTER HTML ********************************
// ANFANG ### USERNAME LEER **********************************
if (empty($username)) {
echo "ERROR! Während der Datenübermittlung ist ein Fehler aufgetreten. Versuchen Sie sich erneut anzumelden.<br><a href=\"anmeldung.php\">Zur Anmeldung >></a>";
exit(); }
// ENDE ##### USERNAME LEER **********************************
// ANFANG ### Blcklist Kontrolle ********************************
$datei=fopen($nameu,"r");
$groesse=filesize($nameu);
$data=fgetcsv($datei,$groesse,";");
while($data!=false){
if ($data[0] == $userip) {
print ("<h3>Ihre IP befindet sich in der Blackliste!</h3>Sie sind nicht berechtigt den Chat zu benutzen.");
exit();
}
$data=fgetcsv($datei,$groesse,";");
}
fclose($datei);
// ENDE ##### Blcklist Kontrolle ********************************
$farbe = strip_tags($_POST['farbe']);
$fett = strip_tags($_POST['fett']);
$kursiv = strip_tags($_POST['kursiv']);
if ($message != ""){
if($kursiv and $fett) $message = "<b><i><font color=\"#$farbe\" class=\"normal\">$message</font></i></b>";
if($kursiv and $fett=="") $message = "<i><font color=\"#$farbe\" class=\"normal\">$message</font></i>";
if($kursiv=="" and $fett) $message = "<b><font color=\"#$farbe\" class=\"normal\">$message</font></b>";
if($kursiv=="" and $fett=="") $message = "<font color=\"#$farbe\" class=\"normal\">$message</font>";
}
// ENDE ##### Textlayout ********************************
// ANFANG ### WENN NEU
if ($neu == "ja") {
$message = "<font color=\"#999999\"><i>ist zu uns gekommen...</i> :-)</font>"; //Begrüssung für neue User
$farbe="000000"; //ausgang
}
// ENDE ##### WENN NEU
//*********************************************************************************************
//****************** ANFANG Daten in CSV abspeichern ******************************************
//*********************************************************************************************
if ($message != "") {
$bol=file_exists($name);
if($bol){
// ANFANG ### Anzahl der Datensätze bestimmen in CSV und in Löcharray einfügen
$datensaetze=0;
$datei=fopen($name,"r");
$groesse=filesize($name);
$data=fgetcsv($datei,$groesse,$trenner);
while($data!=false){
$datensaetze++;
$data=fgetcsv($datei,$groesse,$trenner);
}
fclose($datei);
$vieviel_muss_leloescht_werden = $datensaetze - $loechen_nach; // Vieviel ist zu Löchen
//print("<br>vieviel_muss_leloescht_werden = ".$vieviel_muss_leloescht_werden);
//print("<br>datensaetze = ".$datensaetze);
//print("<br>loechen_nach = ".$loechen_nach);
//*****************************************************************
if ($vieviel_muss_leloescht_werden > 0) {
$datei=fopen($name,"r");
$groesse=filesize($name);
$data=fgetcsv($datei,$groesse,$trenner);
for($i=0; $i<$vieviel_muss_leloescht_werden; $i++){
$loeschen[$i]= $data[0].$trenner.$data[1].$trenner.$data[2].$trenner.$data[3].$trenner.$data[4].$trenner.$data[5].$trenner.$data[6]."\n";
//echo "<br>array [$i] = $loeschen[$i]";
$data=fgetcsv($datei,$groesse,$trenner);
}
//print("<br>i (zu löschen) = ".$i);
fclose($datei);
}
if ($vieviel_muss_leloescht_werden < 1) $i = 0;
// ENDE ##### Anzahl der Datensätze bestimmen in CSV und in Löcharray einfügen
// ANFANG ### Löschung vornehmen
if ($vieviel_muss_leloescht_werden > 0) {
for($a=0;$a<$i;$a++){
$datei = fopen($name,"r");
$dateigroesse = filesize($name);
$inhalt = fread($datei,$dateigroesse);
fclose($datei);
//echo "<br>gelöscht array [$a]";
$ersetzen=str_replace($loeschen[$a],"",$inhalt); // Die Message MUSS EINZIGARTIG sein!!!!!!!!!
$datei = fopen($name,"w");
fwrite($datei,$ersetzen);
fclose($datei);}
}
// ENDE ###### Löschung vornehmen
}
$dat=fopen($name,"a");
fwrite($dat,$userip.$trenner.$rnd.$trenner.$username.$trenner.$message.$trenner.$sek_seit70.$trenner.$time.$trenner.$privat_name."\n");
fclose($dat);
}
//*********************************************************************************************
//****************** ENDE Daten in CSV abspeichern ********************************************
//*********************************************************************************************
//************* Farben Auswahl ******************
foreach($farben_array as $einzelne_farbe){
if ($farbe==$einzelne_farbe) $str="<option value=\"$einzelne_farbe\" style=\"background-color:#$einzelne_farbe; color:#$einzelne_farbe\" selected>&nbsp;&nbsp;&nbsp;&nbsp;</option>";
else $str="<option value=\"$einzelne_farbe\" style=\"background-color:#$einzelne_farbe; color:#$einzelne_farbe\">&nbsp;&nbsp;&nbsp;&nbsp;</option>";
$options.=$str."\n";
}
if ($fett) $f="<input name=\"fett\" type=\"checkbox\" class=\"input1\" value=\"true\" checked>";
else $f="<input name=\"fett\" type=\"checkbox\" class=\"input1\" value=\"true\">";
if ($kursiv) $k="<input name=\"kursiv\" type=\"checkbox\" class=\"input1\" value=\"true\" checked>";
else $k="<input name=\"kursiv\" type=\"checkbox\" class=\"input1\" value=\"true\">";
if($privates_erlauben){
if ($_POST['privat']) $privat_ausgabe="(Privat:<input name=\"privat\" type=\"checkbox\" class=\"input1\" value=\"true\" disabled=\"true\" checked>)";
else $privat_ausgabe="(Privat:<input name=\"privat\" type=\"checkbox\" class=\"input1\" value=\"true\" disabled=\"true\">)";
$pet->assign($privat_ausgabe, "privat");}
$pet->assign($options, "options");
$pet->assign($f, "f");
$pet->assign($k, "k");
$pet->parse();
$pet->output();
?>
Habe nun einfach alle daten hochgeladen, bekomme aber folgende Fehlermeldung, wenn ich einen Nickname eingeben will und auf ok klicke.
Warning: fwrite(): supplied argument is not a valid stream resource in /www/htdocs/hanna/chat/schreiben.php on line 144
Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/hanna/chat/schreiben.php on line 145
Was ist das bzw wie kann ich das ändern ?
In den betroffenen Zeilen steht das hier:
CODE fwrite($dat,$userip.$trenner.$rnd.$trenner.$username.$trenner.$message.$trenner.$sek_seit70.$trenner.$time.$trenner.$privat_name."\n");
fclose($dat);
Ihr könnt es euch gern persöhnlich unter: http://hanna.strangeclub.de/chat/index.php ansehen.
Das ist natürlich nicht das gesamte Script, aber der Teil, in dem die Lines bemängelt werden.
Für hilfe bin ich immer dankbar
Liebe Grüße
Thomas Möbius