我正在尝试制作一个可以通过html表单访问的快速PHP脚本。这个想法是让用户输入一个url,PHP脚本应该ping该url,并回显成功或失败。我在Linux薄荷机器上安装Apache,我正在测试// localhost。 在PHP中,我使用的是PEAR的Net_Ping包。
当我对一个url进行硬编码ping时,该脚本在命令行上运行正常,但是当我将其写入html表单时,if else语句失败。
当我输入一个用于ping脚本的url时,它会回显“ping成功” 如果我禁用我的互联网来测试else语句,它仍会回显“ping成功”
<!DOCTYPE html>
<?php
require("Net/Ping.php");
$ping = Net_Ping::factory();
if ($_POST["url"]) {
$result = $ping->ping($_POST["url"]);
if ($result) {
echo "ping was successful\n";
} else {
echo "ping was unsuccessful\n";
}
}
?>
<html>
<body>
<p>This is a free web based URL ping service</p>
<p>Input your favorite URL and see if China is blocking it today!</P>
<form action="<?php test33.php ?>" method="POST">
URL: <input type="text" name="url" />
<input type="submit" />
</form>
</body>
</html>
答案 0 :(得分:1)
问题在于:
<form action="<?php test33.php ?>" method="POST">
应该是:
<form action="test33.php" method="POST">
或:
<form action="<?php echo "test33.php"; ?>" method="POST">
或:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
因此您不必对脚本名称进行硬编码。您也可以将其留空,因为它默认为当前URL:
<form action="" method="POST">
答案 1 :(得分:0)
试试这个:
<!DOCTYPE html>
<?php
require("Net/Ping.php");
$ping = Net_Ping::factory();
if ($_POST["url"]) {
$result = $ping->ping($_POST["url"]);
if ($result) {
echo "ping was successful\n";
} else {
echo "ping was unsuccessful\n";
}
}
?>
<html>
<body>
<p>This is a free web based URL ping service</p>
<p>Input your favorite URL and see if China is blocking it today!</P>
<form action="" method="POST">
URL: <input type="text" name="url" />
<input type="submit" />
</form>
</body>
</html>
您的表单操作=&#34;&#34;有问题。它在另一页提交。
答案 2 :(得分:0)
如果您想在<?php
中使用tag
Form
,您必须像这样使用它;
echo
form
action
就像这里action="<?php test33.php ?>";
test33.php
quete
<{1}}
使用它周围的quete
。喜欢这个
<form action="<?php echo "test33.php" ?>" method="POST">
编辑部分。根据该文档,ping
如果error array
为空,则返回url
,这意味着您的$result
永远不会是假的。所以你的代码永远不会运行else
语句。要解决这个问题
在!empty
声明中使用if
。
喜欢这个
if (!empty($_POST["url"])) {
$result = $ping->ping($_POST["url"]);
if ($result) {
echo "ping was successful\n";
} else {
echo "ping was unsuccessful\n";
}
}
答案 3 :(得分:-1)
我认为因为您的$_POST['url']
尚未初始化。您必须签入它存在的if
声明
if (isset($_POST["url"] && $_POST["url"])