0

好的,所以我有一个名为 proxy.php 的文件,其中包含这些内容,我想要用它做的是,如果任何表单填充了一个值并提交,“if”检查应该变为 true 并运行命令但是我有一个问题,即使我提交了一个值,它也不会进入“if”检查。如果我将命令排除在“if”检查之外,它们就会开始工作,但不在其中。

<html>
<body>

<br>
<form action="proxy.php" method="post">


<br>

Host Port 1: <input type="text" name="hport" />
Server Port 1: <input type="text" name="sport"/>
<br>
Host Port 2: <input type="text" name="hport2"/>
Server Port 2: <input type="text" name="sport2"/>

<br>


<input type="submit" />
</form>

</body>
</html> 

<?php
include('Net/SSH2.php');



$_POST["ip"]="iphere";
$_POST["pass"]="passhere";



$ssh = new Net_SSH2($_POST["ip"]);
if (!$ssh->login('root', $_POST["pass"])) {
    exit('Login Failed');
}


if($_POST['hport1']){

echo $ssh->exec('ls');
echo $ssh->exec('screen -S Proxy1 -X quit');
echo $ssh->exec('Run these commands');
}

if($_POST['hport2']){

echo $ssh->exec('ls');
echo $ssh->exec('screen -S Proxy2 -X quit');
echo $ssh->exec('Run these commands');
}


echo $ssh->exec('exit');


?>
4

3 回答 3

1

值 $_POST['hport1'] 为空,因为您从 html 发布 'hport'。尝试这种变化。

if($_POST['hport']){
        echo $ssh->exec('ls');
        echo $ssh->exec('screen -S Proxy1 -X quit');
        echo $ssh->exec('Run these commands');
}

如果问题仍然存在,请使用 isset($_POST['hport']) 检查变量 'hport' 的值是否已设置。您可以手动检查 POST 值,使用

<?php var_dump($_POST); ?>

或者

<?php
    echo '<pre>' . print_r($_POST) . '</pre>';
?>

用于以可读格式显示 $_POST 数组值。希望这会帮助你。

于 2013-07-17T18:55:24.377 回答
1

可以尝试使用 isset 检查详细信息。

if(isset($_POST['Name of field to check for'])){
 ////CODE HERE
 }

另一种方法可能是检查表单是否已提交,然后执行某些操作

if(empty($_POST) === false){
///CODE HERE
}
于 2013-07-17T18:23:51.947 回答
0

使用PHP 的isset() & empty()内置函数来检查变量..

if(isset($_POST['hport'] && !empty($_POST['hport'])){
echo $ssh->exec('ls');
echo $ssh->exec('screen -S Proxy1 -X quit');
echo $ssh->exec('Run these commands');
}

if(isset($_POST['hport2'] && !empty($_POST['hport2'])){
echo $ssh->exec('ls');
echo $ssh->exec('screen -S Proxy2 -X quit');
echo $ssh->exec('Run these commands');
}
于 2013-07-17T20:44:05.717 回答