Schreiben in eine Datei funktioniert nicht...
Patrick Schröder
- php
Hallo an alle Forum-User!
Ich bin mal wieder kurz vorm ... bei meinem internen Bereich.
Folgende Seite zeigt einen persönlichen Text eines Users an (Auszug).
die Nicks habe ich wegen Datenschutz entfernt. Dort stehen sonst (wie bei mir auch) nur die Nachnamen.
<?php
if ($NAME == 'Timo'){
$NICK = 'xxxxxx';
}
if ($NAME == 'Patrick'){
$NICK = 'schroeder';
}
if ($NAME == 'Martin'){
$NICK = 'xxxxxxxx';
}
if ($NAME == 'Christian'){
$NICK = 'xxxxxx';
}
if ($NAME == 'Lars'){
$NICK = 'xxxxx';
}
if ($NAME == 'Anke'){
$NICK = 'xxxxxxxxxxxxx';
}
if ($NAME == 'Bettina'){
$NICK = 'xxxxxx';
}
echo "Name: $NAME";
echo "Nick: $NICK";
$openfile = fopen("../texte/$NICK.txt", "r");
?>
<br>
<br>
<center>
<form action="admin_text_aendern.php?<?=sid?>" method="post">
<table border=0 cellspacing=0 cellpadding=5>
<tr>
<td align="left" colspan=2>
<textarea rows="15" cols="70" name="INHALT_NEU" maxlength="5000">
<?
while (!feof($openfile)) {
$zeile = fgets($openfile,1000);
echo $zeile;
}
?>
</textarea>
<br><font size="1">(max. 5000)</font>
</td>
</tr>
<tr>
<td align="left">
<input type="submit" value="Abschicken">
</td>
<td align="right">
<input type="reset" value="Zuruecksetzen">
</td>
</tr>
</table>
</form>
</center>
<?php
fclose($openfile);
include("tpl_footer.php");
?>
Die Datei "admin_text_aendern.php", die letztendlich in die Datei schreiben soll, sieht folgendermaßen aus:
<?php
session_start();
$fileopen = fopen("../texte/$NICK.txt", "w+");
fwrite($fileopen, $HTTP_POST_VARS["INHALT_NEU"]);
fclose($fileopen);
include("tpl_footer.php");
?>
Frage nun, wo ist der Fehler? Es werden keinerlei Fehler angezeigt, aber in die Datei wird auch nicht geschrieben. Die nötigen Rechte auf dem Server sind vergeben.
Ich habe schon x Varianten ausprobiert, aber zum einen "behält" der Server anscheinend nicht die Variablen, zum anderen weiß ich aber auch nicht, wie ich das Formular so ändern kann, das alles in einer Datei abläuft.
Kann mir irgendwer von euch weiterhelfen?
Gruß Patrick
Hallo.
fwrite($fileopen, $HTTP_POST_VARS["INHALT_NEU"]);
Aktuellere PHP-Versionen kennen die Variablen nur noch als $_POST[] (http://de3.php.net/manual/en/reserved.variables.php). Vielleicht ist's das.
Grüße aus Würzburg
Julian
Habe ich auch schon gedacht, aber der Server hat leider nur Version 4.0.6, da funktioniert $_POST leider noch nicht.
Trotzdem schonmal Danke!
Gruß Patrick
Hallo.
Hm, arbeite zwar selten mit Dateien, aber nach Doku liest sich's fast, als müsste die Datei mit absolutem Pfad angegeben werden oder als vollständige URL.
Grüße aus Würzburg
Julian
Hmmm, hab ich auch schon überlegt, wobei das Öffnen ja auch mit "normaler" Pfadangabe ohne Probleme klappt.
Aber naja, ich werds mal ausprobieren, auch wenn die Hoffnung immer mehr schwindet! ;-)
thx
Grüße aus Braunschweig
Patrick
Hallo Patrick Schröder,
if ($NAME == 'Timo'){
woher hast du eigentlich $NAME?
$NICK = 'xxxxxx';
}
if ($NAME == 'Patrick'){
$NICK = 'schroeder';
[...]
hier wäre vielleicht ein switch($NAME) besser ->http://www.php.net/switch
evtl. auch eine textdatei in der in jeder Zeile name;nickname steht.
echo "Name: $NAME";
echo "Nick: $NICK";
geben die zwei Zeilen den korrekten Inhalt aus?
$openfile = fopen("../texte/$NICK.txt", "r");
die Datei existiert?
<center>
*pfui*
<form action="admin_text_aendern.php?<?=sid?>" method="post">
verlass dich nicht drauf, dass <?=sid?> funktioniert, das ist auch von Einstellungen in der php.ini abhängig.
Außerdem solltest du vielleicht eher sid=$sid hinschreiben (oder sowas ähnliches, aber nur ?sid wird es vermutlich nicht tun)
<input type="submit" value="Abschicken">
schreib mal hier noch ein name="senden" o.ä. rein (s.u.)
$fileopen = fopen("../texte/$NICK.txt", "w+");
woher hast du $NICK? aus $HTTP_POST_VARS['NICK']*?
Ich habe schon x Varianten ausprobiert,
und die wären?
aber zum einen "behält" der Server anscheinend nicht die Variablen,
was meinst du damit?
zum anderen weiß ich aber auch nicht, wie ich das Formular so ändern kann, das alles in einer Datei abläuft.
dazu musst du das ganze in eine if-Abfrage packen:
if(!isset($HTTP_POST_VARS['senden'])){
//hier kommt der Inhalt der datei mit der Tabelle rein
}
else{
//hier kommt der inhalt der datei admin_text_aendern.php rein
}
*laut eines deiner älteren Postings hast du irgendeine php-Version 4.0.6 o.ä. die kann nur $HTTP_POST_VARS[...] und hat register_globals auf on (soweit es diese Einstellung da überhaupt schon gab) du bzw. dein Provider sollte aber mal auf eine neuer Version updaten.
Grüße aus Nürnberg
Tobias