我有这样的脚本,让我们称之为 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
?
答案 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);
}