Я пытаюсь сделать быстрый скрипт PHP, который доступен через HTML-форму. Идея состоит в том, чтобы пользователь вводил URL-адрес, PHP-скрипт должен пинговать URL-адрес и возвращать информацию об успехе или неудаче. У меня есть Apache на машине Linux Mint, и я тестирую, хотя // localhost.
в PHP я использую пакет PEAR Net_Ping.
Сценарий отлично работает в командной строке, когда я жестко кодирую URL-адрес для проверки связи, но когда я записываю его в HTML-форму, оператор if else не выполняется.
Когда я ввожу URL-адрес для сценария для проверки связи, он будет выводить «ping was success». Если я отключу свой интернет для проверки оператора 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>
Проблема здесь:
<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">
Попробуй это:
<!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>
У вашей формы action = «» есть проблема. Он представлен на другой странице.
Если вы хотите использовать <?php
tag
в Form
Вы должны использовать это так;
echo
Ваш form
action
это так action="<?php test33.php ?>";
здесь test33.php
это с quete
использовать 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";
}
}
Я думаю, потому что ваш $_POST['url']
еще не инициализирован. Вы должны проверить свой if
Заявление это существует или нет
if (isset($_POST["url"] && $_POST["url"])