2012-06-29 58 views
1

我寫了兩個文件main.phpdownload.php使用POST捕捉動態變量

main.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是隨機文件名?

Thx!

完整代碼

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

+1

我已經在我的答案中做了更新,它更容易,更好,請看看它。 –

回答

1

通過$key => $value訪問$_POST在一個循環。排除你知道其他名稱的值(如果你有其他值)。

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()對關鍵崗位,以確定它是否數字,但不包括你可能在沒有任何其他字符串鍵。

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

請注意,除非您使用HTML5,name屬性必須以字母開頭,而不是數字。如果您使用的是HTML5,則name中允許使用空字符串。

+0

但是我想用$ _POST [按鈕按下]之後,我該怎麼辦? –

+0

如果$ i是文件名,有沒有辦法? –

+0

@ Liang-YuPan使用上面的第二個例子,它將通過$ _POST [$ key]在$ _POST中返回數字鍵 –

1

首先你應該用字母開始提交的名字,而不是數字。如果你想從1到10的$i按鈕必須從1開始,不是0

儘量做到這一點:

main.php

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

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

回聲'

download.php

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

    echo 'Button ' . $button . ' was clicked'; 
} 
1

這裏是另一個解決方案

構建按鈕

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

我做了CHR,這樣你可以看到它可以是任何文字

找出被按下

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

這種方式的好處是,你不需要一個循環來找出被按下的按鈕。