1

我写了两个文件main.phpdownload.php.

主文件

echo"<form action='download.php' method='post'>"
for(i = 0; i < 10; i++){
    echo"<input type='submit' name='$i'>";
}

download.php,我想知道按下了哪个名字的按钮?(从1到10下载文件),这样我就可以在download.php中使用它来下载文件了。

我曾尝试使用 $_POST["$i"] 但失败了。

如果 $i 是随机文件名怎么办?

谢谢!

完整代码

main.php:http://codepad.org/4zXPhqFy

4

3 回答 3

1

$_POST通过$key => $value循环访问。排除您知道名称的其他值(如果您有其他值)。

foreach ($_POST as $key => $value) {
  // Look for form keys not among other known ones
  if (!in_array($key, array('other','known','input','names')) {
    echo "You clicked $key";
  }
}

或者,使用ctype_digit()post 键来确定它是否为数字,不包括您可能拥有的任何其他字符串键。

foreach ($_POST as $key => $val) {
  if (ctype_digit($key)) {
    echo "You clicked $key";
    // Access it via $_POST[$key]
  }
}

请注意,除非您使用的是 HTML5,否则name属性必须以字母开头,而不是数字。如果您使用的是 HTML5,则在name.

于 2012-06-29T16:37:37.673 回答
1

首先,您应该以字母而不是数字开头提交的名称。如果你想要从 1 到 10 的按钮,你$i必须从 1 开始,而不是 0。

尝试这样做:

主文件

echo '<form action="download.php" method="post">';

for( $i = 1; $i <= 10; $i++){
    echo '<input type="submit" name="button[' . $i . ']" value="Send" />';
}

回声''

下载.php

if( isset($_POST['button']) )
{
    $button = key($_POST['button']);

    echo 'Button ' . $button . ' was clicked';
}
于 2012-06-29T16:46:12.063 回答
1

这是另一个解决方案

构建按钮

for( $i = 1; $i <= 10; $i++){
  echo '<input type="submit" name="button[' .  chr($i+64) . ']"/>';
}

我做了 chr,这样你就可以看到它可以是任何文本

找出被按下的

echo 'button ' . key($_POST['button']) . ' was pressed';

这种方式的优点是您不需要循环来找出按下的按钮

于 2012-06-29T17:18:27.403 回答