我正在编写一个小脚本来对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不起作用?我错过了一些明显的东西?
提前致谢!
答案 0 :(得分:3)
您需要双引号才能在字符串中插入变量:
$_POST['APCPowerOnA$Outlet'] => $_POST["APCPowerOnA$Outlet"]
或者,您可以使用字符串连接:
$_POST['APCPowerOnA' . $Outlet]
如果您不执行其中任何一项操作,那么您实际上是在访问索引APCPowerOnA$Outlet
。