使用PHP向表单添加变量

时间:2019-02-08 12:06:09

标签: php html forms

我希望以前没有问过这个问题,但是通过搜索我什么也没发现。

现在,我有一个小问题要解决... 我想使我的网站能够重命名文件夹的内容。该网站使用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>";

这是多次创建的表单。如果要使用隐藏的输入,我将使用它。只是不喜欢输入字段不可见的想法。

2 个答案:

答案 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
            );
        }
    }
}