循环使用$ _POST中的变量似乎不起作用

时间:2013-01-04 19:11:25

标签: php forms loops post snmp

我正在编写一个小脚本来对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>

注意action =“[XXX]”只是此论坛的占位符,不想在公共论坛上提供该网址:)

使用其中一个端口,每次将ID和Name递增1(此示例为端口1)。

当我运行脚本时,替换变量:$ Outlet with say 1端口响应命令,但是当我尝试循环它时,似乎没有任何效果。当我为“APCPowerOnA $ Outlet”做回声时,我得到了APCPowerOn1,APCPowerOn2 ...... APCPowerOn24,那么为什么POST不起作用?我错过了一些明显的东西?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您需要双引号才能在字符串中插入变量:

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

或者,您可以使用字符串连接:

$_POST['APCPowerOnA' . $Outlet]

如果您不执行其中任何一项操作,那么您实际上是在访问索引APCPowerOnA$Outlet