将变量传递给另一个PHP页面
我在做一个服务器管理器。我想添加一个“kill”命令,它会调用一个基本上运行shell_exec('kill $ arrtext')的php脚本;并终止进程,从而关闭服务器。下面是返回结果和检查,以查看哪些服务器正在运行我的脚本的一部分:将变量传递给另一个PHP页面
<?php
$COMMAND = shell_exec('ps -o command ax | grep skulltag | grep -v grep');
$old = array("skulltag-server", "-port", "-iwad", "-wad", "+exec");
$new = array("SKULLTAG", "Running on Port", "Using IWAD", "+ PWAD", "with Config");
$COMMAND = str_replace($old, $new, $COMMAND);
$arr = explode("./",$COMMAND);
$text = shell_exec('pgrep -u doom');
$arrtext = preg_split('/\s+/', $text);
for($i = 1; $i < count($arr); $i++) {
echo '<div class = "serverborder">';
echo '<div class = "servertextalign">';
echo $i,'. PROCESS ID <span style="color: #f00;">',$arrtext[$i],'</span> with server parameters: <span style="color: #777;">',$arr[$i],'</span>';
echo '</div>';
echo '</div>';
echo '<br>';
}
?>
但是,我不知道我怎么会添加一个链接或东西会设置正确的$ arrtext []变量(取决于他们选择哪一个),并将其传递给会终止服务器的PHP脚本。
的现场演示可以在http://server.oblivionro.net/servers/
由于发现!
您可以尝试在另一个小脚本中使用shell_exec在命令行中运行该杀死脚本吗?不要使用GET变量。我宁愿为列表中的每个服务器创建一个小表单,并通过POST传递它。需要微小的脚本,它隐藏的POST变量,发送表单动作相同的页面,并通过该数组作为参数
// In form
echo '<input type="hidden" name="pid" value="'.$arrtext[$i].'"/>';
// In script
$pid = $_POST['pid'];
shell_exec('php -f /location/of/kill_script.php -- -'. $pid)
其中PID是你的进程ID。显然,你应该设置你的kill脚本来检查该pid是否有效。这样做的好处是,脚本的真实位置可以保持隐藏状态,甚至不需要位于www根目录中。您不应该直接链接真实脚本。
肮脏,肮脏的(不推荐)的方式来做到这一点是有链接到该脚本的命令,如:
<a href="killScript.php?p=<?php echo $arrtext[$i]; ?>">KILL</a>
然后在killScript,你严格验证过程中他们正在杀死他们应该杀死的东西。
更好的方法是避免使用和“kill”一样强大的命令,这样有人不会去killScript.php?p = 1230,其中1230是您的Minecraft游戏的进程号或其他。
我很困惑,为什么你觉得有必要提问,因为你似乎掌握了PHP脚本,并且已经用正确的数据创建了跨度等。构建锚标签是微不足道的。锚标签可能会引用GET变量,这可能是PID。经过适当的验证,例如确保PID引用了Doom服务器进程(以及正确的登录凭证),然后可以使用PID来释放kill命令。
请注意,您可能会打开服务器,让世界关闭服务器上的进程。
哦,男孩,这是危险的东西 –
这就像让你的孩子玩交通 – horatio
我知道这是危险的,这就是为什么我会有一吨检查。其他提供商为Ventrilo和其他游戏服务器做类似的事情,他们是否使用相同的方法?他们做什么不同? – Ivan