PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei schreiben mit PHP: Umlaut-Problem


dav133
2006-08-25, 14:49:51
ntag,

ich bin PHP-Anfänger und möchte eine Textdatei erstellen, die auch gleich in eine Textarea eingelesen wird, um diese quasi "on the fly" zu ändern. Ich denke der Code ist selbsterklärend, aber folgendes Problem plagt mich: Wenn ich ", ', oder \ eingebe, werden diese "freundlicherweiße" mit führendem Backslash versehen.

Ich gebe bspw. folgenden Text ein:
"\'
In der Textarea wird dann dargestellt:
\"\'\\
Wie kann ich das verhindern (außer Backslashes suchen und ersetzen)?


<html><head><title>Test Umlaute Textdatei</title></head>

<body><center>

<form method="POST" action="index.php">

<?
function auslesen()
{
//"Deklarieren", dass ich danach etwas hinzufügen kann
$n="";

//Wenns die Datei test.txt gibt, Inhalt Zeile für Zeile in $n schreiben und returnen
if (is_file("test.txt"))
{
$lines = file("test.txt");
foreach($lines as $Element)
{
$n.=$Element;
}
}
return $n;
}
?>

<!--Textarea und Submit-Button definieren, wobei die Funktion auslesen() direkt den Inhalt der test.txt in das Feld schreibt-->
<textarea rows="40" cols="110" name="ta"><? echo auslesen(); ?></textarea>
<br><input type="submit" value="Abschicken">

<?
//Datei mit Inhalt der Textarea (über)schreiben und Page danach refreshen
if (isset($_POST['ta']))
{
$fn="test.txt";
$text=$_POST['ta'];
$fp=fopen($fn,"w");
fwrite($fp,$text);
fclose($fp);

echo "<meta http-equiv=\"refresh\" content=\"0; URL=index.php\">";
}
?>

</form>
</center>
</body>
</html>


danke,

lg


/edit: Gerade sehe ich, dass es auf dem Server bestens funktioniert! Es scheint wohl ein Problem mit Apache zu sein... Sehr verwirrend...

MadMan2k
2006-08-25, 15:06:34
mach magic_quotes aus

The_Invisible
2006-08-25, 15:16:15
oder stripshlashes() verwenden

btw
den text am besten mit <?=htmlentities(auslesen())?> ins textarea feld schreiben (falls böse zeichen/tags vorkommen sollten)

mfg

dav133
2006-08-25, 15:18:34
mach magic_quotes aus

http://666kb.com/i/agygv47bbxzyq28jy.jpg .. irgendwie nich so wirklich :(.

oder stripshlashes() verwenden

btw
den text am besten mit <?=htmlentities(auslesen())?> ins textarea feld schreiben (falls böse zeichen/tags vorkommen sollten)

mfg

Werd ich probieren.

Danke.

lg

Gast
2006-08-25, 15:19:01
noch besser: prüfen ob magic_quotes an ist und falls nötig stripslashes() anwenden :)

if(get_magic_quotes_gpc()) $_POST['ta']=stripslashes($_POST['ta']);

dav133
2006-08-25, 15:25:05
noch besser: prüfen ob magic_quotes an ist und falls nötig stripslashes() anwenden :)

if(get_magic_quotes_gpc()) $_POST['ta']=stripslashes($_POST['ta']);


Hmm, stripslashes ist ja an sich nichts, was den Text verändert, da gewollte Backslashes ja durchgehn. Ich habs jetzt wie von Invisible vorgeschlagen so gemacht:

<? echo htmlentities(stripslashes(auslesen())); ?>

Klappt super (y). Danke allen, die geholfen haben. Komischerweise scheinen die "magic quotes" keinen wirkliche Einfluss darauf zu haben. Egal, geht ja jetzt.

lg

Gast
2006-08-25, 16:54:13
Ich verwette sonst was drauf dass es in der Tat an magic quotes liegt.

Überprüf das mal mit get_magic_quotes_gpc sonst hast du später große Probleme das es auch woanders läuft.