我希望以前没有问过这个问题,但是通过搜索我什么也没发现。
现在,我有一个小问题要解决... 我想使我的网站能够重命名文件夹的内容。该网站使用scandir列出了文件夹的所有内容。要编辑名称,请在输入字段中预填当前名称。所有这些都是通过for循环完成的。 关键是,我想向表单添加一个变量,该变量在提交表单时通过发布传递到我的操作中,但是在输入字段中没有变量。上下文是,我需要以某种方式获取操作的原始文件名。我的第一个想法是手动设置$ _POST值,但这不起作用,因为该值并非特定于此表单。
有没有办法做到这一点?还是我应该只使用一个隐藏的输入字段,尽管这似乎并不是我最轻松的解决方案。
感谢您的帮助!
编辑:
echo "<li><form action='rename.php' method='post'>";
echo "<input type='text' name='nName' value=$dateiName>";
echo "<input type='submit' value='ändern'></form></li>";
这是多次创建的表单。如果要使用隐藏的输入,我将使用它。只是不喜欢输入字段不可见的想法。
答案 0 :(得分:0)
您需要输入字段(隐藏)以及文件名的原始值。然后,您必须将原始值与文本字段中的值进行比较,如果值不同,则将重命名该文件。如果没有初始值,则找不到要重命名的文件。
答案 1 :(得分:0)
为了“安全”,可以使用原始文件名的哈希作为数组输入的键:
<input type="text" name="filenames[<?php echo hash('sha256', $originalFileName) ?>]" />
您可以在提交表单后像这样循环:
$files = scandir($dir);
foreach ($_POST['filenames'] as $hash => $newname) {
foreach ($files as $file) {
if (hash('sha256', $file) === $hash) {
rename(
$dir . DIRECTORY_SEPARATOR . $file,
$dir . DIRECTORY_SEPARATOR . $newname
);
}
}
}