PHP Files bearbeiten und überschreiben.

  • #1
C

Ciryx

Bekanntes Mitglied
Themenersteller
Dabei seit
07.01.2004
Beiträge
135
Reaktionspunkte
0
Ort
Zürich
Morgen... ;D

Auf meiner Seite, habe ich ein Login eingerichtet. Wenn ich mich nun einlogge, sollte ich die Möglichkeit haben, meine Seiten (alle .php) zu bearbeiten und anschliessend per Button wieder zu speichern. Momentan funktioniert lediglich das Anzeigen in eine <textarea>. Leider gibt es auch da Probleme. In der <textarea> werden viel zu viele <br> & <span> angezeigt. Ich möchte jedoch, dass nur der Inhalt der PHP Datei angezeigt wird. (inkl. PHP Code)

Mein aktuelles Script (nur Anzeige in <textarea>)

show_file.php
Code:
<?php
	echo <form action=\?id=master.php\ method=\post\>;
	echo File: ;
	echo <input type=\text\ name=\file\>;
	echo <input type=\submit\ name=\show_file\ value=\show file\>;
	echo </form>;
		
		
	if (isset($_POST['show_file']))
	{
		echo <br><br>;	
		echo $_POST[file];
		echo <textarea cols=\150\ rows=\15\>;
		show_source($_POST[file]);
		echo </textarea>;
	}
?>

Kann mir jemand weiterhelfen, so dass das PHP File in der <textarea> 1:1 angezeigt wird?

Danke...
 
  • #2
Probiers ma so:

Code:
<?php
$html = implode ('', file ($_POST[file]));
echo <textarea style='width:800px; height:500px'>;
echo htmlspecialchars($html);
echo </textarea>;
?>
 
  • #3
was heisst da probieren? ;)

es funktioniert perfekt! Hast du mir auch noch einen Lösungsvorschlag, wie ich nun einen eventuelle Änderung abspeichern soll?

Danke...
 
  • #4
Code:
<?php
$_POST[file] =->untitled1.php';

if($_POST[save_update]) {
	if(!file_exists($_POST[file])) die(Quelldatei existiert nicht!);
	copy($_POST[file],->backup_'.time().'_'.$_POST[file]);
	$fh = fopen($_POST[file], w);
	fwrite($fh, stripslashes($_POST[file_content]));
	fclose($fh);
}
?>
<form action=<?php echo $PHP_SELF; ?> method=post>
<?php
$html = implode ('', file ($_POST[file]));
echo <textarea name='file_content' style='width:800px; height:500px'>;
echo htmlspecialchars($html);
echo </textarea>;
?>
<br />
<input type=submit name=save_update value=Speichern />
</form>

Hab mal den Dateinamen fest reingeschrieben, is einfacher beim testen ::)
 
  • #5
Ok Danke!

Es sieht nun so aus... Jedoch meldet er, dass die Quelldatei nicht existiert

Code:
<?php
if($_POST[save_update]) 
		{
			if(!file_exists($_POST[file])) die(Quelldatei existiert nicht!);
			copy($_POST[file],->backup_'.time().'_'.$_POST[file]);
			$fh = fopen($_POST[file], w);
			fwrite($fh, stripslashes($_POST[file_content]));
			fclose($fh);
		}		
		
		else
		{	
			echo <form action=\?id=master.php\ method=\post\>;
			echo File: ;
			echo <input type=\text\ name=\file\>;
			echo <input type=\submit\ name=\show_file\ value=\show file\>;
			echo </form>;		
			
			if (isset($_POST['show_file']))
			{
				echo <form action=\?id=master.php\ method=\post\>;
				echo <br><br>;	
				echo $_POST[file];
				echo <br>;
				$html = implode ('', file ($_POST[file]));
				echo <textarea style='width:780px; height:220px' name='file_content'>;
				echo htmlspecialchars($html);
				echo </textarea>;
				echo <br />;
				echo <input type=\submit\ name=\save_update\ value=\Speichern\ />;
				echo </form>;
			}
		}
?>
 
  • #6
Funktioniert bei mir einwandfrei ;)

Code:
<?php
if($_POST[save_update]) {
	if(!file_exists($_POST[file])) die(Quelldatei existiert nicht!);
	$dir = dirname($_POST[file]) ? dirname($_POST[file])./ : ;
	$file = basename($_POST[file]);
	copy($_POST[file], $dir.'backup_'.time().'_'.$file);
	$fh = fopen($_POST[file], w);
	if(fwrite($fh, stripslashes($_POST[file_content]))) {
		echo Änderung wurde gespeichert!;
	}
	else {
		echo Beim speichern der Änderung ist ein Fehler aufgetreten!;
	}
	fclose($fh);
}
else {
	echo <form action=\?id=master.php\ method=\post\>;
	echo File: ;
	echo <input type=\text\ name=\file\>;
	echo <input type=\submit\ name=\show_file\ value=\show file\>;
	echo </form>;

	if (isset($_POST['show_file'])) {
		echo <form action=\?id=master.php\ method=\post\>;
		echo <br><br>;
		echo $_POST[file];
		echo <br>;
		$html = implode ('', file ($_POST[file]));
		echo <textarea style='width:780px; height:220px' name='file_content'>;
		echo htmlspecialchars($html);
		echo </textarea>;
		echo <br />;
		echo <input type=\hidden\ name=\file\ value=\.$_POST[file].\ />;
		echo <input type=\submit\ name=\save_update\ value=\Speichern\ />;
		echo </form>;
	}
}
?>

- naja, du musst den Dateinamen schon mit einem hidden-Feld weitergeben, sonst -verliert- er ja den Namen in deinem Formular ;)
=> echo <input type=\hidden\ name=\file\ value=\.$_POST[file].\ />;

Ich hab noch etwas reingebaut damit die Backup-Datei im richtigen Verzeichnis landet ;)
 
  • #7
Hammer! Funktioniert alles einwandfrei! Besten Dank für deine Mühe!
 
Thema:

PHP Files bearbeiten und überschreiben.

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben