2013-01-04 77 views
0

我正在寫一個小腳本來執行APC電源條上的電源控制。我的腳本工作得很好,但是我將它擴展到有24個插座的單元,並且我不希望腳本爲每個端口斷電,重新啓動和加電,因此我決定使用循環如下:

for ($Outlet = 1; $Outlet <= 24; $Outlet++) { 
    //Power On 
    if(isset($_POST['APCPowerOnA$Outlet'])) { 
     $shell_command = "snmpset -v 1 -c $community $apc01_ip $mib.$Outlet i 1"; 
     $return=array(); 
     exec($shell_command, $return); 
    } 
    //Power Off 
    if(isset($_POST['APCPowerOffA$Outlet'])) { 
     $shell_command = "snmpset -v 1 -c $community $apc01_ip $mib.$Outlet i 2"; 
     $return=array(); 
     exec($shell_command, $return); 
    } 
    //Reboot 
    if(isset($_POST['APCPowerRebootA$Outlet'])) { 
     $shell_command = "snmpset -v 1 -c $community $apc01_ip $mib.$Outlet i 3"; 
     $return=array(); 
     exec($shell_command, $return); 
    } 

我包括其中具有每端口的以下代碼中的另一個文件本文件:

<form method="post" action="[XXX]"> 
    <input type="submit" name="APCPowerOnA1" value="Power On" id="APCPowerOnA1" /> 
    <input type="submit" name="APCPowerOffA1" value="Power Off" id="APCPowerOffA1" /> 
    <input type="submit" name="APCPowerRebootA1" value="Reboot Port" id="APCPowerRebootA1" /> 
    </form> 

注動作=「[XXX]」只是這個論壇,不要的佔位符't想給公共論壇上的網址:)

隨着其中每個端口,每次我將ID和名稱增加1(本例爲端口1)。

當我運行腳本,替換變量:$ Outlet與說1端口響應命令,但是當我試着循環它,似乎沒有任何工作。當我爲「APCPowerOnA $ Outlet」做迴應時,我得到APCPowerOn1,APCPowerOn2 ... APCPowerOn24,那爲什麼POST不起作用?我錯過了明顯的東西?

在此先感謝!

+0

將$ _POST ['APCPowerOffA $ Outlet']更改爲$ _POST [「APCPowerOffA $ Outlet」]? –

回答

3

你需要以雙引號的變量要在字符串中插:

$_POST['APCPowerOnA$Outlet'] => $_POST["APCPowerOnA$Outlet"] 

或者,你可以使用字符串連接:

$_POST['APCPowerOnA' . $Outlet] 

如果你不這樣做的一個這些,你實際上訪問索引APCPowerOnA$Outlet

+0

對於我也要發佈的答案+1。而對於我來說,字符串連接的第二個選項很好! –

+0

+1伎倆!我曾嘗試過,但它沒有奏效,一定是累了眼睛。非常感謝解釋,所有工作:) – vkd1