Datei in Textbox einlesen und Ändern

Hallo ihr :smiley:

Möchte eine Datei in eine Textbox einlesen lassen und in dieser Ändern. Das geht auch.
Wenn ich nun auf den Button darunter klicke soll die geänderte Datei gespeichert werden. Das geht nicht :neutral_face:

<?php
$file = "datei.txt";
?>

<form action="<?=$PHP_SELF;?>" method="POST">
    <textarea name="text" cols="400" rows="20"><?=readfile($file);?></textarea>
    <br>
    <input type="submit" name="send" value="Speichern">
</form>

<br><br>

<?php
if ($send) {
    $datei_speichern=fopen($file, "w");
    fwrite ($datei_speichern, $_POST['text']);
    fclose($datei_speichern);
    echo "Änderung erfolgreich!";
}
?>

Glaube es liegt an dem if ($send).
Was muss man da statt send einsetzen? _POST?

Grüße, HashWorks

[quote]
EDIT: Selbst gelöst, statt $send muss $_POST[“text”] rein.[/quote]

also ersteinmal weiss ich nicht, ob

funktioniert, ich benutze bei mir immer

und zweitens stimmt deine Vermutung.
ich würde an dieser Stelle

verwenden.

Dein Code ist jedoch sehr anfällig auf Hacker. Falls du ihn auf einem öffentlichen Teil deiner Homepage hast, must du unbedingt noch alle Sonderzeichen, die eingegeben wurden (z.B. < > & etc) umwandeln, da diese sonst beim nächsten Mal aufrufen als Code ausgeführt würden. --> Der Hacker kann beliebigen Code auf deiner Seite ausführen
Dies umgehst du, indem du beim Speichern

verwendest.

[quote=“samo”]also ersteinmal weiss ich nicht, ob

funktioniert[/quote]

Jaa, geht.

[quote=“samo”]ich würde an dieser Stelle

if (isset($_POST['send'])) verwenden.[/quote]

Ich nehme wie gesagt jetzt

Das geht.

[quote=“samo”]Dein Code ist jedoch sehr anfällig auf Hacker […]
Dies umgehst du, indem du beim Speichern

verwendest.[/quote]

Verstehe ich nicht so ganz…
Verwende diesen Code nur in einem PW-geschützten bereich.

ok, soweit so gut…
Auch in einem passwortgeschützten Bereich würde ich nur ungern “gefährliche” Scripte haben…
Also, ich versuche das mal zu erklären.
Was du ja hast, ist:

und

Das heisst, der Text, der ins Textfeld eingegeben wird, erscheint später 1:1 auf deiner Seite.
Nehmen wir jetzt mal an, ich gebe folgendes in dein Textfeld ein:

[code]

[/code]

Dann sieht beim nächsten Mal, an dem du die Seite lädst, dein Quelltext so aus:

[code]

<br>
<input type="submit" name="send" value="Speichern">
[/code] Wie du siehst, kann ich jetzt beliebige Scripte auf deiner Seite einschleusen...

Wenn du die Textfeld-Eingabe aber vor dem Speichern mit htmlentities() bearbeitest, sieht sie folgendermassen aus:

[code]</textarea>
<script language="javascript" type="text/javascript">

alert(“haha, ich mache was ich will”);
</script>[/code]
Alle Sonderzeichen wurden in ihre “HTML-Version” geändert, sie werden nicht mehr als Code interpretiert
und

Sollte unverändert funktionieren

es ist besser bei der Ausgabe im Textfeld htmlentities zu verwenden, und nicht beim Schreiben in die Textdatei.
In der Textdatei soll, denke ich, genau das stehen, was im Textfeld eingegeben wurde. Deshalb sollte es dort auch unverändert gespeichert werden.

Bei readfile, (bzw. file_get_contents oder etwas ähnliches müsste man nutzen damit man die Daten noch bearbeiten kann) sollte man dann den Textinhalt mit htmlentities versehen und im textfeld ausgeben.

Nun, dein „haha, ich mache was ich will“ kannst du aber erst schreiben, wenn du durch den PW-Geschützten Bereich gekommen bist :unamused:
Mach mal, willsch sehen :smiley:

Ich will ja keine Textdateien bearbeiten, sonder den PHP/HTML-Code der Seite, da liegt doch der Sinn !haue

Naja, ich hab ja gesagt

Schlussendlich bleibt es dir überlassen, ob deinem Passwortschutz 100% vertraust, und das Risiko eingehst, unsichere Scripte auf deinem Webspace herumliegen zu haben…

Was willst du den genau machen…? Einen Editor, um deine PHP/HTML-Seiten editieren zu können…?
So etwas, wie das hier:
http://ckeditor.com/demo

Das ist ja ein WYSIWYG-Editor - die damit erstellten Dinge sind sicherlich kaum valide… daher würde ich auch leiber so an meinen Dateien rumdoktorn als das an solch einen Editor zu übergeben.

Naja, er hat auch eine Quelltext-Bearbeitungs-Funktion…
Und die sollte bei so einem Produkt wahrscheinlich getestet und für gut befunden worden sein… :wink:
War nur ein Vorschlag…

[quote=“samo”]Naja, er hat auch eine Quelltext-Bearbeitungs-Funktion…
Und die sollte bei so einem Produkt wahrscheinlich getestet und für gut befunden worden sein… :wink:
War nur ein Vorschlag…[/quote]

  1. Ja ich vertraue meinem Code, ist doppelt und dreifach gesichert ;D

  2. Naja ich benutz gerne eigene Sachen :smiley:
    Alein schon wegen der Einfachkeit halber^^

    Und wenn man WYSIWYG Editoren verwendet, hat man immer so den Gedanken “das ist nicht von mir” :slight_smile:

Mal noch was anderes…
Füg das ganze ja jetzt über ne Textbox ein.

<textarea name="text" cols="100" rows="20"><?=readfile($file);?></textarea>

Wie bringe ich diese Textarea dazu Scrollbalken zu haben?
Im Firefox sehe ich dise nicht, der Text wird einfach gebrochen.
Das verschäuert natürlich meinen Code oO

EDIT: Auserdem wird an den Text der Area jedesmal ne Datei-Abhängige Zahl rangehangen, warum?

Weil du PHP gesagt hast, es soll den Rückgabewert von readfile ausgeben.

Weil du PHP gesagt hast, es soll den Rückgabewert von readfile ausgeben.[/quote]

Danke für schnelle Antwort :slight_smile:
Wie unterdrücke ich das?

schreibe nicht <?=readfile($file);?>
sondern <?readfile($file);?> oder <?php readfile($file);?>

Danke :slight_smile:
Wäre jetzt noch das:

[quote=“HashWorks”]Mal noch was anderes…
Füg das ganze ja jetzt über ne Textbox ein.

<textarea name="text" cols="100" rows="20"><?=readfile($file);?></textarea>

Wie bringe ich diese Textarea dazu Scrollbalken zu haben?
Im Firefox sehe ich dise nicht, der Text wird einfach gebrochen.
Das verschäuert natürlich meinen Code oO[/quote]

Normalerweise bekommt die Textarea doch alleine Scrollbalken?!
Nur ne Idee: vielleicht wie früher bei Frames mal mit: SCROLLING=auto
probieren.

Gruß Nikolas

[quote=“wingi”]Normalerweise bekommt die Textarea doch alleine Scrollbalken?!
Nur ne Idee: vielleicht wie früher bei Frames mal mit: SCROLLING=auto
probieren.

Gruß Nikolas[/quote]

Jab wundere mich ja selbst.
Geht leider auch nicht.

hmm… versuchs doch mal mit:

[quote=“samo”]hmm… versuchs doch mal mit:

Mhm, nun werden die Scrollbars zwar angezeigt,
aber die vertikale ist grau.

Wennsch sonen Code speichern willl,
kommt immer:

Parse error: syntax error, unexpected ‘"’, expecting T_STRING in /users/hash/www/header.html on line 50

probier mal

//Edit: dadurch wird aber das HTML invalide.