如何在textarea的下拉列表中编辑选定的文件,然后保存?

时间:2015-01-17 04:18:00

标签: php html

我有这样的脚本,让我们称之为 select.php

<?php
........
echo '
<form action="editor.php" method="post">
<select name="file">
  <option value="volvo">Volvo.txt</option>
  <option value="saab">Saab.txt</option>
  <option value="mercedes">Mercedes.txt</option>
  <option value="audi">Audi.txt</option>
</select>
<input type="submit" name="edit" value="Edit" />
</form>';
.........
?>

我想在另一个名为 editor.php 的页面中编辑所选文件,然后将其保存,如何将所选文件的value传递给编辑器。 php ,然后在textarea

中进行编辑

3 个答案:

答案 0 :(得分:1)

首先,为了简单起见,我会更改您的表单,以便它传递实际的文件名而不仅仅是它的简短版本:

<form action="editor.php" method="post">
<select name="file">
  <option value="Volvo.txt">Volvo.txt</option>
  <option value="Saab.txt">Saab.txt</option>
  <option value="Mercedes.txt">Mercedes.txt</option>
  <option value="Audi.txt">Audi.txt</option>
</select>
<input type="submit" name="edit" value="Edit" />
</form>

接下来,editor.php

请注意:在此处使用白名单!这是$ allowed_files的内容。您不希望用户能够编辑他们想要的系统上的任何文件。绝不相信用户输入! (虽然真的,从安全的角度来看,这整个想法让我感到非常不舒服。我希望这不是一个可公开访问的脚本。)

<?php
$allowed_files = ["Volvo.txt","Saab.txt","Mercedes.txt","Audi.txt"];
if(!empty($_POST)){
    if(in_array($_POST["file"], $allowed_files)){
        $file_contents = file_get_contents($_POST["file"]);
    }
}

if($file_contents !== false){
    echo '
        <form method="post" action="save_file.php">
        <input type="hidden" name="file" value="' . $_POST["file"] . '">
        <textarea name="file_contents">$file_contents</textarea>
        <input type="submit" value="Save file">
        </form>
    ';
}else{
    echo 'File could not be opened.';
}

然后你必须弄清楚如何处理save_file.php这将在$ _POST [&#34; file&#34;]中接收文件名(你绝对100%肯定需要再次验证你的白名单! ),它将收到$ _POST [&#34; file_contents&#34;]中的文件内容。

祝你好运!

答案 1 :(得分:0)

尝试将值传递给texteditor(editor.php)......

if(isset($_POST['edit']))
{
    echo "<textarea>".$_POST['file']."</textarea>";
}

这只会导致文件名没有扩展名,如果您想要包含扩展程序,则需要将.txt添加到每个<option>的值中。

答案 2 :(得分:0)

您可以使用PHP Open File - fopen()。

 <form action="editor.php" method="post">
<select name="file">
  <option value="volvo">Volvo.txt</option>
  <option value="saab">Saab.txt</option>
  <option value="mercedes">Mercedes.txt</option>
  <option value="audi">Audi.txt</option>
</select>
<textarea></textarea>
<input type="submit" name="edit" value="Edit" />
</form>


 if(isset($_POST["edit"])) {
   $filename = $_POST["file"];
   $myfile = fopen("$filename", "r") or die("Unable to open file!");
   $filecontent =  fread($myfile,filesize("$filename"));
   fclose($myfile);
 }

<textarea>if(isset($filecontent)) { echo $filecontent; }</textarea> //echos file content in textarea.

 //write to text file
 if(isset($_POST["update"])) {
   $myfile = fopen("$files", "w") or die("Unable to open file!");
   fwrite($myfile, $_POST["textareaContent"]);
   fclose($myfile);
 }