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
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.
$_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
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("ä","ä",$text);
$text=str_replace("ö","ö",$text);
$text=str_replace("ü","ü",$text);
$text=str_replace("ß","ß",$text);
$text=str_replace("Ä","Ä",$text);
$text=str_replace("Ö","Ouml;",$text);
$text=str_replace("Ü","Ü",$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
<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("ä","ä",$text);
$text=str_replace("ö","ö",$text);
$text=str_replace("ü","ü",$text);
$text=str_replace("ß","ß",$text);
$text=str_replace("Ä","Ä",$text);
$text=str_replace("Ö","Ouml;",$text);
$text=str_replace("Ü","Ü",$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("ä","ä",$text);
$text=str_replace("ö","ö",$text);
$text=str_replace("ü","ü",$text);
$text=str_replace("ß","ß",$text);
$text=str_replace("Ä","Ä",$text);
$text=str_replace("Ö","Ouml;",$text);
$text=str_replace("Ü","Ü",$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>
<!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("ä","ä",$text);
$text=str_replace("ö","ö",$text);
$text=str_replace("ü","ü",$text);
$text=str_replace("ß","ß",$text);
$text=str_replace("Ä","Ä",$text);
$text=str_replace("Ö","Ouml;",$text);
$text=str_replace("Ü","Ü",$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 © verwenden möchte würde das wohl durch &copy; erstezt werden...