• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Warum klappt das nicht? (php forumular zum online ändern von Dokumenten)

Nick

Mitglied
Hallo :(

Ich habe diese Datei hier, wo man erst mal den Pfad auswählen soll, wo die Datei liegt. Wenn man das Formular dann abschickt, wird der Quellcode in das untere Textfeld geladen. So weit so gut, bis dahin klappt auch alles .

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html> 
<head>
 <title>einfacher online editor</title>
 </head> 
<body> 
<form method="post">
Themenamen angeben<br /><input name="name" type="text"> <br />
Klasse angeben f&uuml;r die die Beschreibung bestimmt ist.<br />
<input type="radio" name="klasse" value="klasse8a">Klasse 8a 
<input type="radio" name="klasse" value="klasse8b">Klasse 8b
<input type="radio" name="klasse" value="klasse9c">Klasse 9c
<input type="radio" name="klasse" value="klasse11">Klasse 11  
<br />In welches Fach geh&ouml;rt die Beschreibung?  <br />
<input type="radio" name="fach" value="mathe">Mathe
<input type="radio" name="fach" value="technik">Technik<br />
Abschicken<br />
<input type="submit" value=" Absenden "><input type="reset" value=" Abbrechen"></form>

<?php
$klasse = $_POST["klasse"];$name = $_POST["name"];$fach = $_POST["fach"];
$pfad = "../".$klasse."/".$fach."/erklaerung/".$name.".php";


if (isset($_POST['submit'])) {     // Text in Textdatei ablegen     
$text = fopen($pfad, "r+");    
 if ($text)     {        
 fputs($text, $_POST['text']);         
fclose($text);        
 echo "Datei wurde gespeichert. Bitte in der Anwendung online testen!<br /><br />";     
} 
else {         
echo "Fehler<br />";    
 }      

} 
else {     
$text = fopen($pfad, "r+");    
 if ($text)     {        
 $_POST['text'] = '';        
 while(!feof($text))         {            
 $_POST['text'] .= fgets($text);         
}         
fclose($text);    
 } ?> <
form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" enctype="multipart/form-data"> <textarea name="text" rows="50" cols="100"><?php echo $_POST['text'] ?></textarea><br> 
<input type="submit" name="submit" value="speichern"> </form> <?php } ?> 



</body> </html>

Dann möchte ich das der User im Text Feld die Datei ändern kann. Doch ab da klappt es nicht mehr. Nachdem man abschickt sagt das Script mir "Fehler" ...
Weiß einer warum das so ist?


MfG
 
Bist Du sicher, dass du in den Pfad den Du angegeben hast auch schreiben kannst? Schau mal nach was beim Zusammenbau von $pfad raus kommt.
 
Hey (:

Also da der Pfad ja beim Öffnen der Darei richtig ist, gehe ich mal davon aus das der auch beim Bearbeiten richtig ist... (er verändert sich ja nicht) hm echt komisch ich hab keine Ahnung was da falsch sein kann, Schreibrechte und so sind alle vorhanden... :/
 
Nein, so wie Du es geschrieben hast, kannst Du dir nicht sicher sein, ob der Pfad stimmt.

PHP:
$text = fopen($pfad, "r+");

Öffnet einfach nur die Datei. Wenn es nicht klappt, dann steht in $text nur false. Daher ist diese Bedingung

PHP:
if ($text)

dann auch falsch.
 
Aber fopen($pfad, "r+"); klappt ja, also er läd die Datei ja ins Formular...
einfacher online editor da kannst du es dir anschauen.

Und ins Formular kannst du als Namen " Thema1 " eingeben, und dann Klasse 8a und Mathe ankreuzen dann wird der Text des Dikumentes geladen ( "Beschreibung" ) wenn du diesen nun versuchst zu ändern kommt Fehler ...
 
Der Pfad beim Lesen unterscheidet sich aber vom Pfad beim Speichern. Hier

PHP:
$klasse = $_POST["klasse"];$name = $_POST["name"];$fach = $_POST["fach"];
$pfad = "../".$klasse."/".$fach."/erklaerung/".$name.".php";

setzt Du den Pfad zusammen.

Beim Abschicken des ersten Formulars oben würde dann z.B. in $pfad stehen:

Code:
../klasse8a/mathe/erklaerung/dezimalzahlen.php

Beim Abschicken des zweiten Formulars unten würde dann in $pfad stehen:

Code:
..//erklaerung/.php

Und der Pfad existiert sicherlich nicht?

Du musst also eigentlich die Variablen aus dem oberen Formular in das untere Formular mit übernehmen und auch per POST wieder abschicken. Das ginge z.B. mit input-hidden-Felder.

PHP:
<input name="klasse" type="text" value="<?php echo $POST["klasse"]; ?>">

Wenn Du dann das untere Formular abschickst, wird auch der Pfad oben richtig zusammengesetzt.
 
Hallo :)
Also das ändern klappt jetzt mehr oder weniger :) Danke für diesen Tipp.

Jetzt ist nur das Problem, das wenn ich eine Datei habe, und dort Zeichen entferne z.B. ich habe diese Datei:



HTML:
<?php include "../../../../site/header.php" ?>
<body>
asdfasdfasdf

</body></html>

und ändere diesen im Formular zu

HTML:
<?php include "../../../../site/header.php" ?>
<body>
a

</body></html>
(also einfach ein paar Zeichen weg)

dann kommt auf der Seite so etwas raus:

<?php
session_start();
?>
HTML:
<?php include "../../../../site/header.php" ?>
<body>
</div>a</div>
</body></html>  ody></html>

Also mehr als ein paar Zeichen entfernen geht sowieso nicht... Ergänzen geht super.

Wie kann ich das ändern?

mfg
 
Zurück
Oben