我只是在PHP中创建了一个简单的工具,它在linux中使用内置的whois命令,然后将响应返回给用户。我所尝试的一切要么都失败了,要么我在某个地方搞砸了。
<html>
<body>
<form method="POST" action="">
<input type="text" name="cmd1">
<input type="submit" value="Submit">
</form>
</body>
</html>
<?php
$cmd = $_POST['cmd1'];
echo "<pre>".shell_exec('whois ', $cmd)."</pre>";
?>
对我来说什么都没发生,记录在案,我是PHP的新手,我只想要一点专业知识。我是唯一一个将要使用这个脚本的人。非常感谢。
您需要检查是否提交了POST
变量,这样在第一次显示表单时就不会尝试运行whois
。您还应该转义参数以防止命令注入。
您需要在HTML的<body>
中显示结果。
另一个问题是:您需要将'whois '
与参数连接起来,而不是将它们作为单独的参数传递给shell_exec
(它只需要一个参数,并忽略额外的参数,所以您只是在执行命令whois
时没有域)。
<html>
<body>
<form method="POST" action="">
<input type="text" name="cmd1">
<input type="submit" value="Submit">
</form>
<?php
if (isset($_POST['cmd1'])) {
$cmd = $_POST['cmd1'];
echo "<pre>".shell_exec('whois ' . escapeshellarg($cmd))."</pre>";
}
?>
</body>
</html>
您也可以使用Net_Whois:
安装:
pear install Net_Whois
用法:
<?php
require_once "Net/Whois.php";
$server = "whois.denic.de";
$query = isset($_POST['cmd1']) ? $_POST['cmd1'] : 'phpcrawler.de';
$whois = new Net_Whois;
$data = $whois->query($query, $server);
echo $data;
?>