HTML表单帖子 - 使用具有长名称属性的复选框

时间:2011-11-26 17:27:06

标签: html forms checkbox

我在编码方面遇到了一些问题。我已经创建了一个文件恢复PHP脚本,允许一个人在文件名旁边放置一个复选框 - 然后当他们单击底部的“恢复”按钮时,它将从备份中恢复有问题的文件。

不幸的是,似乎存在问题。文件的完整路径和名称位于复选框的“名称”属性中 - 这样它就可以作为需要恢复的位置和文件传递给下一个脚本。

举个例子:

<input type="checkbox" name="/backups/Sunday/111111111111-com/www/components/com_virtuemart/" />

查看“name”属性有多长?在许多情况下,还原有效 - 但是一旦name属性变长,它就不再起作用了。在上面的属性中,“name”字段长度为63个字符。

现在,如果尝试了另一个:

<input type="checkbox" name="/backups/Sunday/111111111111-com/www/components/com_virtuemart/js/" />

上面的“name”属性长度为67个字符。它不起作用。

在POST数据发布到的脚本上,我做了一个var_dump($ _ POST);看看输出是什么。在“name”属性长度为63个字符的第一种情况下,var_dump会显示它。但是在第二种情况下,属性长度为67个字符,它不会显示它 - 因此文件不会被恢复。

这个假设的属性大小限制有什么办法吗?我在网上看了几个帖子,其中个人说“名字”属性的长度没有限制 - 但显然有一个。

谢谢!

1 个答案:

答案 0 :(得分:0)

它的suhosin php硬化剂无疑是这样做的。您可以编辑suhosin配置目录,也可以采用不同的方法。

也许最简单的方法是不重新编码脚本以使用别名或持久存储key =&gt;值数组,只需将输入的名称设置为“files []”并将路径作为文件放入复选框值。那么你可以做到

foreach($_POST['files'] as $f) {
 //$f is the file path
}

然而,我自己不想做这样的事情。我尝试在某处存储一个key =&gt;值数组。如果您不想使用数据库,只需将php数组序列化为文件,然后只需为每个文件选中带有整数数组键的复选框。然后在处理脚本上,您只需从已发布的整数索引

中获取存储数组中的文件