php + textarea ?!
Maurice
- php
Hallo,
wollte eigentlich nur wissen wie ich mit PHP und HTML ein Eingabefeld (wie textarea) basteln kann.
Also ich will:
eine bestimmte Datei öffnen --->Inhalt ausgeben lassen ----> Inhalt ändern ----> Daten in die geöffnete Datei schreiben ---> fertig.
Folgender Quellcode ist vorhanden:
<?
$offen = "$root_dir/index.php"; #Datei Pfad
fopen ("$offen" , "r+"); #Datei mit schreibrechten öffnen
?>
<form action="<? $offen ?>" method="post"> #Inhalt an Datei
<center>
<textarea cols="40" rows="10" name="text"><? include ("$offen");?> #Datei Inhalt einfügen
</textarea><br>
<input type="hidden" value="1" name="send">
<input type="submit" value="Aktuallisieren" name="submit">
</center>
</form>
Soweit funktioniert alles... nur from action übergibt die aktualisierten Daten nicht an die Datei.
Kann mir jemand sagen was da falsch läuft oder kennt jemand noch einen anderen Weg?!
Gruß
Maurice
Auch Hallo,
erstmal:
Trenne die
strikt voneinander.
Und dann kannst Du mit:
[...]
- Datei öffnen
- Datei sperren
- Datei lesen
wenn Post "ändern" vorhanden
- Schreibzähler des gewünschten Datensatzes vergleichen *)
wenn gleich mit dem geposteten
- Zähler erhöhen
- Datei rückspulen
- neue Daten wegschreiben
- Erfolgsmeldung
Datei schließen
sonst
- Fehlermeldung "Datei wurde seit Ihrem Lesen verändert"
sonst
- Datei ausgeben (an Format denken! htmlentities())
Datei schließen und damit entsperren
*) Schreibzähler: Ohne einen Schreibzähler oder Zertifikat kann man im verbindungslosen Protokoll keine gemeinsamen Daten verwalten.
LG
Chris
Also in dem style?!
if (is_writable($offen)) {
if (!$handle = fopen($offen, "a")) {
print "Kann die Datei $filename nicht öffnen";
exit;
}
if (!fwrite($handle, $somecontent)) {
print "Kann in die Datei $filename nicht schreiben";
exit;
}
print "Fertig, in Datei $offen wurde $somecontent geschrieben";
fclose($handle);
} else {
print "Die Datei $filename ist nicht schreibbar";
}
Gruß
Maurice
Hallo Maurice,
if (is_writable($offen)) {
if (!$handle = fopen($offen, "a")) {
print "Kann die Datei $filename nicht öffnen";
exit;
}
if (!fwrite($handle, $somecontent)) {
print "Kann in die Datei $filename nicht schreiben";
exit;
}print "Fertig, in Datei $offen wurde $somecontent geschrieben";
fclose($handle);
} else {
print "Die Datei $filename ist nicht schreibbar";
}
Jein.
Das ist erst ein Viertel der Miete.
Besser ist es, für jede Aufgabe eine eigene Funktion zu bauen, die auch definierte Rückgabewerte (Statuscodes, Fehlermeldungen) produziert.
Und die Ausgabe sollte man immer erst ganz am Ende veranlassen.
Außerdem war Deine Aufgabenstellung doch, mittels Textarea den Inhalt einer Datei (also auch die vorhandenen Daten) zu manipulieren, also nicht nur etwas hinzuzufügen.
Such mal hier im Archiv nach "Affenformular". Das hilft Dir weiter.
LG
Chris
echo $begrüßung;
Folgender Quellcode ist vorhanden:
<?
Sei nicht so schreibfaul (-: Diese short_open_tags-Option kann man abschalten und dann funktionieren dein Scripte nicht mehr auf solchen Systemen. Verwende lieber <?php
fopen ("$offen" , "r+"); #Datei mit schreibrechten öffnen
Variablen, die nicht durch weitere Strings ergänzt werden sollen, können ohne Anführungszeichen verwende werden.
<form action="<? $offen ?>" method="post"> #Inhalt an Datei
Wenn du schon abkürzt, dann richtig: <?=$offen ?> Ohne das = kommt der Variableninhalt nicht an die von dir beabsichtigte Stelle. Hast du dir den erzeugten Quelltext angezeigen lassen? Sicher nicht.
Besser: <?php echo $offen ?>
<textarea cols="40" rows="10" name="text"><? include ("$offen");?> #Datei Inhalt einfügen
So produziert man Sicherheitslücken. Soll das was man in diese Textarea eingibt wirklich von PHP geparst und ausgeführt werden? Damit kann jeder Dinge anstellen, zu der die Userkennung, die das Script ausführt, in der Lage ist. readfile() wäre angebrachter. Und auch das ist noch nicht richtig, weil damit die HTML-Sonderzeichen < > & " nicht berücksitigt werden. So kann man immer noch clientseitige Scriptsprachen ausführen.
echo "$verabschiedung $name";
Hi,
ergänzend:
PHP ...
fopen ("$offen" , "r+"); #Datei mit schreibrechten öffnen
... hat als Basis die Root des Server-Dateisystems ("/"), während HTTP ...
<form action="<? $offen ?>" method="post"> #Inhalt an Datei
... den Pfad des Dokument-Root als Basis braucht.
Davon abgesehen: Du editierst das Script, das auch die Verarbeitung der Daten vornimmt.
Das ist wohl kaum das, was Du im Sinn hattest, oder irre ich mich?
Gruß, Cybaer
Hallo,
zur Ergänzung:
Folgender Quellcode ist vorhanden:
<?
$offen = "$root_dir/index.php"; #Datei Pfadfopen ("$offen" , "r+"); #Datei mit schreibrechten öffnen
Was sollte eigetnlich mit der geöffneten Datei geschehen?
So kannst Du wweder darauf zugreifen, noch sie wieder schließen.
fopen() liefert als Funktionsergebnis ein Handle, dass auf gar keinen Fall verloren gehen darf. Wenn dieses Handle !== false ist (nicht identisch false), dann sollte es gültig sein und Die Dateifunkionen können damit auf die Datei zugreifen.
LG
Chris
Also... mein Vorhaben:
Kleines Portal mit Adminbereich OHNE MYSQL!
Im Adminbereich möchte ich auch nur kleine Einträge vornehmen.
Sprich:
gar nichts großes sondern nur ein kleines ding.
Ich möchte das ohne MySQL machen weil ich keine lust habe mir die sachen jetzt noch anzueignen wenn ich die sowieso nur einmal brauche... das wissen was ich über HTML und PHP habe das reicht mir eigendlich schon aus....
Das Affenformular habe ich soweit ja eigendlich schon gehabt... aber die daten werden einfach nicht in die datei übertragen. das ist ja eigendlich nur mein problem.
Gruß
Maurice