fwrite mal gehts, mal gehts nicht . . .

christhebaer

Mitglied
Hallo!

ich habe folgendes Problem:

Ich habe eine Datei in der folgendes passiert:

mit require() lese ich eine Datei ein (php-datei)
die sieht so aus (Beispiel:

PHP:
<?
$Daten = array("wert1","Wert2" . . .. . 
?>

Dann werte ich den Inhalt (Array) aus, und schreibe in die Datei die neuen Werte.
dazu benutze ich ganz normal fopen(), fwrite und fclose().
Sieht dann ungefähr so aus:
PHP:
//Datei öffen, Ihnalt löschen, neuen Inhalt reinschreiben
$fp = fopen("daten.php", "w") or die("Die Verbindung zur Datei konnte nicht hergestellt werden.");
  	if (!fwrite($fp, $neuerText, strlen($neuerText))) 
	{
		$fStatus = "NEIN";
   	}
	else
	{
		$fStatus = "JA";
	}
	fclose($fp);

Mein Problem ist, das mal etwas reingeschrieben wird, und mal nicht.
Ich weiß einfach nicht, woran das liegen kann.
Gibt es vielleicht Probleme, wenn ich die Datei zuerst mit rquire() auslese und dann im selben Script auf die Datei mit fwrite() zugreife?

Gibt es vielleicht eine andere Möglichkeit?

Für Anregungen oder Lösungen wäre ich sehr dankbar.

Mit nettem Gruß
christhebaer
 
Vielleicht noch ne Info dazu?

ich benutze eine SSL-Verbindung zu den Seiten,
und habe am Anfag der Seite (vor HTML) folgende Header stehen:
PHP:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ." GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", FALSE);

Könnte es vielleicht etwas damit zu tun haben?

haben ebend über Google ein paar Texte dazu gelesen,
das alte Browser (Bsp.: MS 5.5) Probleme mit SSL-Verschlüßßelungen haben?

Kennt sich jemand damit aus?

Gruß
christhebaer
 
Hallo!

Die Geschichte ist zwar schon länger her . . .
Aber eine wirkliche Lösung hab ich auch nicht gefunden.
Es hat auf einmal funktioniert. Ohne, das ich irgendwas
am Script verändert habe. Also schätze ich mal,
das es daran lag, das der Server-Bereich noch nicht
wirklich vom Provider eingerichtet war? Keine Ahnung.

:confused:

Gruß
christhebaer
 
Sonst zeig doch mal dein Script, vielleicht liegt es ja an was anderem?

Überschreibst du den Inhalt auch jedesmal neu? Vielleicht ist ja dein
Wert, den du übergibts leer? Oder irgend sowas?

Gruß
christhebaer
 
Also hier sind die speicher funktion:
PHP:
function user_save($user_name)
  	{
  		$user_dat = fopen('../../user/'.$user_name, 'w');
  		fwrite($user_dat,"<?php\n");
  		
  		fwrite($user_dat,"\$spieler['name'] = '".$spieler['name']."';\n");
  		fwrite($user_dat,"\$spieler['passwort'] = '".$spieler['passwort']."';\n");
  		fwrite($user_dat,"\$spieler['email'] = '".$spieler['email']."';\n");
  		fwrite($user_dat,"\$spieler['icq'] = '".$spieler['icq']."';\n");
  		fwrite($user_dat,"\$spieler['style'] = '".$spieler['style']."';\n");
  		fwrite($user_dat,"\$spieler['punkte'] = '".$spieler['punkte']."';\n");
  		fwrite($user_dat,"\$spieler['bild'] = '".$spieler['bild']."';\n");
 		fwrite($user_dat,"\$spieler['beschreibung'] = '".$spieler['beschreibung']."';\n");
  		fwrite($user_dat,"\$spieler['mails'][20] = Array(");
  		for ($i = 0;$i < 20;$i++)
  		{
  			fwrite($user_dat,"'".$spieler['mails'][$i]."'");
  			if($i < 19)
  				fwrite($user_dat,",");
  		}
  		fwrite($user_dat,");\n");
  		
  		fwrite($user_dat,"?>");
  		fclose($user_dat);
  	}
  	}

und hier die speichernde datei:
PHP:
require('../../php/save.php');
 		 			if ($_POST['send']) // Wenn gesendet wurde...
 						{
 		 		 	if ($_POST['passwort_alt'] == $spieler['passwort'] && $_POST['passwort_neu1'] == $_POST['passwort_neu2'])
 		 		 	{
 		 		 		$spieler['passwort'] = $_POST['passwort_neu1'];
 		 		 		user_save($user);
 		 		 		echo "\n<span class=\"richtig\">Passwort erfolgreich geändert.</span>\n";
 		 		 		echo "</div>\n<div class=\"content\">\n";
 		 		 		echo "Neues Passwort: ".$spieler['passwort']."\n";
 		 		 	}
 		 		 	else
 		 		 	{
 		 		 		echo "\n<span class=\"falsch\">Passwort konnte nicht geändert werden, prüfen sie ihre Eingaben.</span>\n";
 		 		 	}
 						}
 
Und bei dir schreibt er dann mal etwas rein, und mal nicht. Richtig?

Wie wird die Variable $user übergeben?
Code:
user_save($user);
Wo kommt die her?

kann es möglich sein, das es zwei Dokumente gibt, mit
unterschiedlicher Schreibweise (z.B.: Michael und michael)
Oder regeslt du über ein Script, das die Dateinamen alle
z.B. klein geschrieben werden?

vielleich solltest du mal deinen ganzen Text, den du in deine
Datei speichern willst erstmal als ein String zusammenbasteln,
und dann mit nur einem fwrite Befehl in die Datei schreiben?

Gruß
christhebaer
 
$user kommt aus der session sie wird dort nach dem login gespeichert und gibt an welche daten datei engebunden werden muss.

das problem ist das jedes mal wenn ich speichere zwar die datei die richtigen variablen enthält aber nicht die werte mit rein geschrieben werden.
 
Acho so! Das ist dein problem.

Na, das sollte leicht zu lösen sein.
Denn dein Array $spieler kennt deine Funktion user_save() gar nicht.
Ergo läßt er die Stellen leer. Übergib Deiner Funktion einfach dein
Array $spieler (Bsp: user_save($user, $spieler)), und dann wird
er auch Werte einsetzen.

Gruß
christhebaer
 
Zurück