Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Mit PHP textdatei online bearbetien





Frage

Hallo zusammen ich hoffe ihr könnt mir helfen. Ich möchte eine webseite machen, wo man eine textdatei (txt .. html wie auch immer) auslesen und bearbeiten kann. diesen code habe ich schon, funktioniert aber noch nicht. savemode hatte ich schon on und off die dateien haben beide rechte: 777 1: <? 2: $dateiname = "datei.txt"; 3: if ($speichern) { 4: $fp = fopen("$dateiname", 'w'); 5: $edit = $edit.""; 6: fputs($fp, $edit, strlen($edit)); 7: fclose($fp); 8: } 9: 10: if (!$speichern) { 11: $fp = fopen("$dateiname",'rb'); 12: $file = fread($fp,filesize("$dateiname")); 13: fclose($fp); 14: 15: } 16: 17: 18: 19: ?> 20: 21: 22: <form action="<? echo $PHP_SELF; ?>" method="post" onSubmit="return check()"> 23: Datei bearbeiten:<p> 24: <textarea name="edit" cols="75" rows="30"><? echo $file; ?></textarea> 25: <input type="hidden" name="speichern" value="ok"> 26: <p><input type="submit" value="Editieren"><p> 27: </form> 28: 29: vielen dank schonmal an alle. mfg manwe

Antwort 1 von Supermax

Kann sein daß bei deinem PHP register_globals auf Off ist; in diesem Fall kannst du auf die Formulardaten nur über die Arrays
$_POST
bzw.
$_GET
zugreifen.

also statt $edit => $_POST['edit'], $speichern => $_POST['speichern']

Wegen der damit verbundenen Sicherheitsrisiken sollte register_globals in neuen Scripts nicht mehr eingesetzt werden; ab ich glaube PHP 4.2 ist es standardmäßig deaktiviert.

Antwort 2 von manwe

Hi

recht herzlichen dank schonmal, also muss es so aussehen, oder?:

3: if ($_POST['speichern']) {
4: $fp = fopen("$dateiname", 'w');
5: $edit = $_POST['edit']."";
6: fputs($fp, $edit, strlen($edit));
7: fclose($fp);
8: }
9:
10: if (!$_POST['speichern']) {


mfg
manwe

Antwort 3 von mr.checker

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ADMINISTRATION</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel='SHORTCUT ICON' href='icon.ico'>
</head>
<body>

<form action="admin.php" method="POST">

Zu bearbeitende ID:<br>
<input type="text" name="ID"><br>Passwort:<br><input type="password" name="pass"><br><input type="submit" value="OK" name="button">

</form>


<?php
$button=$_POST['button'];
$id=$_POST['ID'];
$pass=$_POST['pass'];
$content=$_POST['content'];
$change=$_POST['change'];


if($button&&$pass=="PASSWORT"&&$id!=""){$file=fopen("$id","r");$inhalt=fread($file,filesize("$id"));echo"<form method=\"POST\" action=\"admin.php\"><textarea rows=\"30\" cols=\"100\" name=\"content\">$inhalt</textarea><br>Ziel ID:<br><input type=\"text\" value=\"$id\" name=\"id2\"><input type=\"password\" name=\"confpass\"><br><input type=\"submit\" value=\"Speichern\" name=\"change\">";fclose($file);};




$text=$_POST['content'];
$change=$_POST['change'];
$fileid2=$_POST['id2'];
$confpass=$_POST['confpass'];

<?php

$text=str_replace("\\\"","\"",$text);
$text=str_replace("\'","'",$text);



$text=str_replace("\\\\","\\",$text);


$text=str_replace("ä","&auml;",$text);
$text=str_replace("ö","&ouml;",$text);
$text=str_replace("ü","&uuml;",$text);

$text=str_replace("ß","&szlig;",$text);

$text=str_replace("Ä","&Auml;",$text);
$text=str_replace("Ö","Ouml;",$text);
$text=str_replace("Ü","&Uuml;",$text);

?>

if($change&&md5($confpass)=="PASSWORT"){$filewrite=fopen("$fileid2","w+");fwrite($filewrite,$text);fclose($filewrite);echo"<script language=\"javascript\" type=\"text/javascript\">alert(\"Gespeichert!\");</script>";};

?>

</body>
</html>


Diesen Quelltext benzutze ich hier im Beispiel ist das passwort "PASSWORT". Du gibst in das formular, das du zuerst siehst die tu bearbeitende datei ein (muss nicht existieren [du bekommst dann zwar fehlermeldungen, die kannst du aber ignorieren]) und das passwort. Dann erhältst du ein formular das den inhalt der datei anzeigt. (die html tags für äöüß werden automatisch amgewanldelt, sowohl beim öffnen als auch beim spiechern). unten drunter steht das ziel in einem formularfeld und rechts daneben musst du das passwort zum speichern eingeben. Probier's am besten einfach mal auf und lass' mich wissen, ob du damit zurechtkommst.

Viele Grüße, Thomas

Antwort 4 von mr.checker

Sry, habe gerade einen Fehler entdeckt. Unten noch einmal die richtige version:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ADMINISTRATION</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel='SHORTCUT ICON' href='icon.ico'>
</head>
<body>

<form action="admin.php" method="POST">

Zu bearbeitende ID:<br>
<input type="text" name="ID"><br>Passwort:<br><input type="password" name="pass"><br><input type="submit" value="OK" name="button">

</form>


<?php
$button=$_POST['button'];
$id=$_POST['ID'];
$pass=$_POST['pass'];
$content=$_POST['content'];
$change=$_POST['change'];


if($button&&$pass=="PASSWORT"&&$id!=""){$file=fopen("$id","r");$inhalt=fread($file,filesize("$id"));echo"<form method=\"POST\" action=\"admin.php\"><textarea rows=\"30\" cols=\"100\" name=\"content\">$inhalt</textarea><br>Ziel ID:<br><input type=\"text\" value=\"$id\" name=\"id2\"><input type=\"password\" name=\"confpass\"><br><input type=\"submit\" value=\"Speichern\" name=\"change\">";fclose($file);};




$text=$_POST['content'];
$change=$_POST['change'];
$fileid2=$_POST['id2'];
$confpass=$_POST['confpass'];

<?php

$text=str_replace("\\\"","\"",$text);
$text=str_replace("\'","'",$text);



$text=str_replace("\\\\","\\",$text);


$text=str_replace("ä","&auml;",$text);
$text=str_replace("ö","&ouml;",$text);
$text=str_replace("ü","&uuml;",$text);

$text=str_replace("ß","&szlig;",$text);

$text=str_replace("Ä","&Auml;",$text);
$text=str_replace("Ö","Ouml;",$text);
$text=str_replace("Ü","&Uuml;",$text);

?>

if($change&&$confpass=="PASSWORT"){$filewrite=fopen("$fileid2","w+");fwrite($filewrite,$text);fclose($filewrite);echo"<script language=\"javascript\" type=\"text/javascript\">alert(\"Gespeichert!\");</script>";};

?>

</body>
</html>

Antwort 5 von Supermax

Statt dem str_replace() könntest du auch einfach htmlentities() verwenden.

Antwort 6 von mr.checker

Ich hab's zwar noch nicht getestet, aber ich glaube, dass es in diesem fall nicht so funktionieren würde, wie ich will.. wenn ich z.b. andere sonderzeichen wie &copy; verwenden möchte würde das wohl durch &amp;copy; erstezt werden...

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: