Antretänderung
Michy
- php
Hallo zusammen
Ich habe ein Problem, was ja wohl klar ist.
Ich habe ein PHP-Script geschrieben, womit man eine Datei ändern kann.
Ich bin mir bewusst, dass es bereits solche Programme gibt und diese Freeware sind. Ich möchte aber noch etwas provitieren.
Mein Problem:
Ich möchte Änderungen, die in einem Textfeld vorgenommen wurden in eine Datei speichern.
Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.
Hier der Link des PHP-Scripts:
http://www.pfadi.ch/pfadinewa/geschuetzt/antreten.php
Und der Pfadi WA änderung:
http://www.pfadi.ch/pfadinewa/geschuetzt/APW.htm
Falls jemand noch den Quelltext will, ist er nach dem Beitrag angefügt.
Danke für euere Antworten.
Gruss Michy aus Winterthur
Der Quelltext:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Antretaenderung</title>
</head>
<body>
<p><h1>Antret-Aenderung</h1></p>
<p>Bitte wähle den gewünschten Trupp aus, den du ändern willst.</p>
<p>Dieses Programm habe ich von 0% bis 100% selber geschrieben am 11.10.2003 von 13:51:85 bis 16:06:15 Uhr.</p>
<p>Viel Spass damit und Allzeit bereit</p>
<p>Hannibal</p>
<p><a href="antreten.php?a=1">Pfadi Wartensee</a></p>
<p><a href="antreten.php?a=2">Pfadisli Wartensee</a></p>
<p><a href="antreten.php?a=3">Woebis Wartensee</a></p>
<p><a href="antreten.php?a=4">Pfadi Neuburg</a></p>
<p><a href="antreten.php?a=5">Pfadisli Neuburg</a></p>
<p><a href="antreten.php?a=6">Woebis Neuburg</a></p>
<?php
$b=$_GET["a"];/*auslesen der URI*/
if($b!="0")/*ueberpruefen, ob abgeschickt*/
{
if($b>"0"&&$b<"7")/*nur zum lesen*/
{
/* START--Welcher Trupp?*/
if($b=="1")
{
$file="APW.htm";
}
if($b=="2")
{
$file="APsW.htm";
}
if($b=="3")
{
$file="AWW.htm";
}
if($b=="4")
{
$file="APN.htm";
}
if($b=="5")
{
$file="APsN.htm";
}
if($b=="6")
{
$file="AWN.htm";
}
/* ENDE--Welcher Trupp?*/
/* START--Datei lesen*/
$lesen = fopen("$file","r");
$lesen_g = filesize("$file");
$lesen_r = fread($lesen,$lesen_g);
fclose($lesen);
/* ENDE--Datei lesen*/
/* START--Datei in Textfeld ausgeben*/
print
("
<hr>
<p>Aendere den Quelltext und klicke danach auf 'Aenderung speichern'.</p>
<form action='antreten.php?a=1".$b."' method='post'>
<textarea name='antretaenderung' cols='105' rows='20'>".$lesen_r."</textarea>
<p><input type='submit' value='Aenderung speichern'</p>
</form>
");
/* START--Datei in Textfeld ausgeben*/
}
if($b>"10"&&$b<"18")/*nur zum schreiben*/
{
/* START--Welcher Trupp?*/
if($b=="11")
{
$file="APW.htm";
}
if($b=="12")
{
$file="APsW.htm";
}
if($b=="13")
{
$file="AWW.htm";
}
if($b=="14")
{
$file="APN.htm";
}
if($b=="15")
{
$file="APsN.htm";
}
if($b=="16")
{
$file="AWN.htm";
}
/* ENDE--Welcher Trupp?*/
/* START--Datei lesen*/
$Text=$_POST["antretaenderung"];/*Text auslesen*/
$Text = ereg_replace("\ "," ",$Text);
$schreiben = fopen("$file","w+");
$schreiben_g = filesize("$file");
$schreiben_w = fwrite($schreiben,$Text);
fclose($schreiben);
print("<hr>Speicherung erfolgreich");
/* ENDE--Datei lesen*/
}
}
?>
<hr>
<p align="center">Antretaenderung-Script 1.0<br>powerd by <a href="http://www.mypage.bluewin.ch/michaelnydegger" target="_blank">Nymi-programms</a></p>
</body>
</html>
Moin!
Mein Problem:
Ich möchte Änderungen, die in einem Textfeld vorgenommen wurden in eine Datei speichern.
Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.
Das Maskieren der Quotas erledigt genau genommen der Browser immer dann, wenn Daten aus einer Textarea zurückgeliefert werden.
Lösung:
$str=str_replace('"';'"';$str);
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo fastix®
Lösung:
$str=str_replace('"';'"';$str);
Vielen Dank
Es funktionniert.
Gruss Michy
Hi,
Ich möchte Änderungen, die in einem Textfeld vorgenommen wurden in eine Datei speichern.
Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.
Das Maskieren der Quotas erledigt genau genommen der Browser immer dann, wenn Daten aus einer Textarea zurückgeliefert werden.
Nein. Das ist schlicht und einfach falsch.
Es ist PHP, daß die Quotes maskiert.
$str=str_replace('"';'"';$str);
stripslashes() bietet sich an...
Oder aber - soweit möglich - eine Änderung von magic_quotes in der php.ini
cu,
Andreas
Moin!
Nein. Das ist schlicht und einfach falsch.
Es ist PHP, daß die Quotes maskiert.
*Knurr* Stimmt. Das hätte ich nicht so schreiben dürfen, weil es eine (wie Du schreibst falsche) Annahme war. Ich hätte das irgendwann mal überprüfen müssen (ist ganz einfach... method in einem formular auf "get" setzen).
Oder aber - soweit möglich - eine Änderung von magic_quotes in der php.ini
Oder halt statt zu testen mal die PHP.ini gründlich lesen :)
Danke!
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo
(ist ganz einfach... method in einem formular auf "get" setzen).
Mit get hat man aber begrenzten Übermittlungsplatz.
Aber da ich eine ganze Datei übermittle, mach ich das per post.
Aber Hauptsache ist, Es funktionniert
Noch eine Frage: kann man mit Hilfe von PHP etwas suchen und ersetzten nach der * methode? Also wenn ich 'Hallo' will, dass ich dann irgendwie *allo eingeben kann.
Gibt es anstatt * ein anderes Zeichen?
Gruss Michy
Moin!
Oh.
Du musst Dich mit dem Thema Regular Expressions auseinandersetzen. Die funktionieren ähnlich wie in Perl.
Das was Du brauchst könnte (auf das Beispiel bezogen) so aussehen:
$text="Er sagte "hallo!"";
$text = preg_replace("[Hh]allo", "Hallo", $text);
echo $text;
Er sagte "Hallo!"
(ungetestet)
Die Hilfe dazu findest Du unter:
http://de2.php.net/manual/de/function.preg-replace.php
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Aber Hauptsache ist, Es funktionniert
Naja... nicht ganz. Wenn ich schon helfe, dann sollte ich _richtig_ helfen und mich nicht zu Aussagen sehr spekulativen Charakters hinreisen lassen. Auch wenn es für Dich scheinbar kein Unterschied ist, ob der Browser oder PHP die " mit einem \ maskiert- für den nächsten ist es womöglich eines...
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo Michy,
Es speichert aber vor jedem " ein . Wie kann ich das verhindern?.
in dem du die \ mit stripslashes() http://de.php.net/function.stripslashes vor dem Speicher wieder entfernst. Für den Backslash ('') vor den Anführungszeichen ist übrigends magic_quotes_gpc=1 in der php.ini schuld.
http://www.pfadi.ch/pfadinewa/geschuetzt/antreten.php
hier bekam ich erst eine Fehlermeldung, und jetzt eine Passwortabfrage
http://www.pfadi.ch/pfadinewa/geschuetzt/APW.htm
dito.
<title>Antretaenderung</title>
Sorry, mit dem Wort kann ich nichts anfangen
<p><h1>Antret-Aenderung</h1></p>
das ist nicht erlaubt - p darf kein hx enthalten (lass das <p> bzw. das </p> einfach weg)
if($b!="0")/*ueberpruefen, ob abgeschickt*/
if($b>"0"&&$b<"7")/*nur zum lesen*/
warum überprüfst du auf den String "0" (bzw. "7") obwohl du eigentlich die Zahl 0 (bzw. 7) überprüfen willst? (bei den folgenden if-Abfragen natürlich genauso)
Grüße aus Nürnberg
Tobias