Почему мой вложенный оператор if / else не работает в моем сценарии PHP / html?

Я пытаюсь сделать быстрый скрипт 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>

0

Решение

Проблема здесь:

<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

Другие решения

Попробуй это:

<!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 = «» есть проблема. Он представлен на другой странице.

0

Если вы хотите использовать <?php tag в Form Вы должны использовать это так;

  • использование echo
  • Используйте имя файла в очереди. Остальное php будет считать, что это как продолжение.

Ваш 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";
}
}
0

Я думаю, потому что ваш $_POST['url'] еще не инициализирован. Вы должны проверить свой if Заявление это существует или нет

if (isset($_POST["url"] && $_POST["url"])
-1
По вопросам рекламы [email protected]