【问题标题】:Adding a variable to a form using PHP使用 PHP 向表单添加变量
【发布时间】:2019-02-08 20:39:28
【问题描述】:

我希望这个问题以前没有被问过,但是我搜索了也没找到。

现在,我有一个小问题要解决... 我想让我的网站重命名文件夹的内容。该网站使用 scandir 列出了该文件夹的所有内容。要编辑名称,可以在输入字段中预填当前名称。所有这些都是由 for 循环完成的。 关键是,我想在表单中添加一个变量,当表单提交时,它通过 post 传输到我的操作,但在输入字段中没有变量。上下文是,我需要以某种方式获取操作的原始文件名。我的第一个想法是手动设置一个 $_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>";

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

【问题讨论】:

  • 请向我们展示您的代码。很难理解一个只讨论代码而不显示任何内容的问题。如果您只是想将一个变量从表单传递给您的 PHP,那么我不明白为什么使用隐藏输入不够“优雅”?

标签: php html forms


【解决方案1】:

您需要具有文件名原始值的输入字段(隐藏)。然后您必须将原始值与文本字段中的值进行比较,如果值不同,则您将重命名文件。如果没有初始值,就找不到要重命名的文件。

【讨论】:

  • jep,问题是关于如何获取操作的初始文件名
  • 好吧,在我看来,隐藏输入是正常的做法。
【解决方案2】:

为了“安全”,您可以使用原始文件名的哈希作为数组输入的键:

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

【讨论】:

  • 感谢您的回答,但安全不是这个项目的问题,因为它只在封闭的网络中使用。
  • 好的,但我认为这是一个足够简单的解决方案。您可以只使用原始文件名作为数组的键,但是哈希可以防止特殊字符的奇怪行为
  • 隐藏输入选项对我有用,但我也会试试这个
猜你喜欢
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
相关资源
最近更新 更多