Loading...   Upload Image

Dateien online bearbeitenTutorials » PHP/MySQL Tutorials » Dateien online bearbeiten

Verfasst von Alice am 25.04.2008 - wurde schon 12350 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
9x bewertet
Schwierigkeit: einfach
Kommentare: [ 20 ]

Tag - Schlagwort Datei Tag - Schlagwort Script Tag - Schlagwort PHP Tag - Schlagwort Tutorial

Dateien online bearbeiten - Tutorial

Da ich gefragt wurde, was von noeten ist Dateien, mittels PHP, online zu bearbeiten, hier also ein kleines Tutorial dazu...

Im Prinzip benoetigt man eigentlich nur ein Formular und die Funktionen

- fopen()
- fwrite()
- fclose()

Aber schauen wir uns das Skript doch erst mal an...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<title>Grafixx-Editor</title>

<script type="text/javascript">

/* Funktion um die Textarea zu vergroesser/verkleinern */
	function erweitern(wo, was) {
	    obj = document.getElementById(wo);
	
	    if(was == 'klein'){
	    	obj.rows = obj.rows - 10;    	
	    }else{
	    	obj.rows = obj.rows + 10;    	
	    }
	}
</script>

</head>

<body>
<?php 
$action = strip_tags($_GET['action']); // Variable entschaerfen

if ($action == "edit"){

	if(empty($_POST['inhalt'])){	// Sichergehen, dass Variable nicht leer ist
	
		echo "Eine leere Datei braucht kein Mensch!";
	
	}else{
		$ok = "yes";								
		$inhalt = stripslashes($_POST['inhalt']);	// Backslashes vor Sonderzeichen entfernen
		$pfad = stripslashes($_POST['datei_pfad']); // Backslashes vor Sonderzeichen entfernen

		$datei = fopen($pfad, "w"); 				// Datei zum schreiben oeffnen
		fwrite($datei, $inhalt);					// in Datei schreiben
		fclose($datei);								// Datei wieder schliessen
			
		echo "<p>Die Datei <strong>".$pfad."</strong> wurde erfolgreich bearbeitet...\n </p>";
		echo "<p><a href=\"".$_SERVER['PHP_SELF']."\"> Noch eine Datei bearbeiten ...</a>";
	}
}

if (isset($_POST['submit']) AND (!empty($_POST['datei']))){ // Wenn submit gedrueckt wurde

	$pfad = strip_tags($_POST['datei']); 					// Variable entschaerfen			

			
	
	if ($file = @fopen ("$pfad", "r")){ 					// Pruefen ob Datei existiert
		$inhalt = file_get_contents("$pfad"); 				// Inhalt der Datei auslesen und in 

String stecken
		$okay = "yes";
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>?action=edit" method="post">
	<fieldset>
		<legend>"<?php echo stripslashes($pfad); ?>" bearbeiten</legend>
		
		<textarea id="texteditor" name="inhalt" cols="85" rows="13"><?php echo $inhalt; ?></textarea> 
		<a href="javascript:erweitern('texteditor','klein')" title="Textarea verkleinern">-</a> 
		<a href="javascript:erweitern('texteditor','gross')" title="Textarea vergroessern">+</a>
		<br /><br />
		
		<input type="submit" name="submit_inhalt" value="Speichern" />
		<input type="reset" name="submit" value="Zuruecksetzen" />
		<input type="hidden" name="datei_pfad" value="<?php echo stripslashes($pfad); ?>" \>

	</fieldset>
</form>
<?php	
	}else{
		echo "<p>Die angegebene Datei <strong>".stripslashes($pfad)."</strong> existiert nicht!</p>";
	}
	
} // close isser submit		

if(!$okay AND ($action != "edit")){ // wenn nicht $okay und nicht edit
?>
<form action="" method="post">
	<fieldset>
		<legend>Bitte die zu bearbeitende Datei angeben</legend>
		<label for="datei">Dateipfad:</label><br />
		
		<input type="text" name="datei" id="datei" size="35" /><br />
		
		<small>Beispiel: ../html/datei.php</small><br /><br />
		
		<input type="submit" name="submit" value="Diese Datei jetzt bearbeiten" />
	</fieldset>
</form>
<?php } // close !$okay
?>
</body>

</html>


Zeile 1-6 des Skriptes sollten eigentlich jedem gelaeufig sein, der meint sich mit PHP auseinandersetzen zu muessen...
Zeile 7-20 ist eine kleine Javascript-Funktion, die es ermoeglicht die Groesse der Textarea, des Formular, zu veraendern

Die erste If-Abfrage ist fuer das Schreiben in die Datei zustaendig.
Erst wird geprueft ob ueber die Post-Variable 'inhalt' nicht leer ist, sollte dies der Fall sein wird eine Fehlermeldung ausgegeben, anderenfalls wird der Inhalt der Post-Variablen 'inhalt' und 'datei_pfad' mit der Funktion stripslashes()von ueberfluessig gesetzten Backslashes entfernt.
Danach wird die Datei, die per Post-Variable 'datei_pfad' uebergeben wurde, mit $datei = fopen( $pfad, "w") zum schreiben geoeffnet.
Mit fwrite($datei, $inhalt) wird in die Datei geschrieben, was per Post-Variable 'inhalt'[]/b uebergeben wurde. Und mit [b]fclose($datei) wird die Datei dann wieder geschlossen.

Die naechste If-Abfrage klaert ob der Submit-Button gedrueckt wurde und
die Post-Variable 'datei' dabei nicht leer geblieben ist.
Anschliessend wird geprueft ob der per Post-Variable 'datei' uebergebene Datei-Pfad auch wirklich stimmt / vorhanden ist.

Wenn die Datei vorhanden ist wird der Inhalt der Datei mittels
$inhalt = file_get_contents("$pfad") ausgelesen.

Die Variable 'okay' bewirkt,
dass das Formular zur Angabe des Datei-Pfades nicht mehr erscheint.

Es folgt das Formular zum Bearbeiten der Datei ...

Danach kommt die Fehlermeldung, sollte die Datei nicht vorhanden sein,
die per Post-Variable 'datei' uebergeben wurde.

Die If-Abfrage if(!$okay ...) prueft ob die Variable 'okay' sowie die Variable 'action' nicht gesetzt wurden.

Und zum Schluss folgt das Formular, in dem der Pfad zur Datei angegeben wird, die man bearbeiten moechte.

Hier kann entweder einen relativer Pfad angegeben werden oder aber einen absoluter Pfad, das ist egal, solange keine URL all http:// angegben wird, ist das Skript zufrieden.

Warum keine URL angeben?


Die Funktion fopen() sowie file_get_contents() koennen zwar mit URL's umgehen, aber es kann hier nur gelesen werden und nicht geschrieben!

Wichtig!


Die Datei die mit diesem Skript bearbeiten werden soll,
muss ueber schreib und lese Rechte verfuegen,
diese koennen per chmod mit einem FTP-Programm vergeben werden...


Das Skript sollte vor unbefugtem Zugriff geschuezt werden,
damit niemand einfach so Dateien bearbeiten kann,
am einfachsten geschieht dies mittels htaccess ...

Wie immer gibt es hier das komplette Skript huebsch verpackt als Zip-Datei zum Download ...

Kommentar schreibenHinterlasse einen Kommentar

Du musst angemeldet sein, um einen Kommentar zu hinterlassen...

Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider