2014-11-02 40 views
0

我試圖做一個快速的PHP腳本,可以通過一個HTML表單訪問。這個想法是爲用戶輸入一個url,PHP腳本應該ping網址,並回顯成功或失敗。我在Apache mint機器上安裝了Apache,並且正在測試// localhost。 在PHP中,我使用PEAR的Net_Ping包。爲什麼我的嵌套if/else語句不能在我的PHP/html腳本中工作?

腳本在命令行上正常工作時,我硬編碼的網址進行ping,但是當我將它寫入html表單if else語句失敗。

當我輸入腳本的URL來ping,它西港島線回顯「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> 
+2

'action =「<?php test33.php?>」'看起來不正確,請去掉php標籤。 – doublesharp 2014-11-02 05:11:20

+1

錯誤輸出可能會被環境禁用。在require(「Net/Ping.php」)之前加'error_reporting(E_ALL)',這樣你就不會錯過任何錯誤/警告。 – stanleyxu2005 2014-11-02 05:40:41

回答

-1

我想因爲你的$_POST['url']還沒有初始化。你有它存在於您的if語句來檢查或不

if (isset($_POST["url"] && $_POST["url"]) 
+0

一個未初始化的變量是虛假的,所以'if'會做正確的事情。您只會收到有關使用未定義索引的警告。 – Barmar 2014-11-02 05:27:23

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> 

您的表單行動=「」有問題。它在另一個頁面提交。

0

如果您想在Form中使用<?phptag您必須像這樣使用它;

  • 使用echo
  • 使用文件中的quete名。否則PHP將假設爲contant。

formaction是這樣action="<?php test33.php ?>";在這裏test33.php是出quete

使用quete周圍。像這樣

<form action="<?php echo "test33.php" ?>" method="POST"> 

編輯部分。根據文檔,ping返回error array如果url爲空,那意味着您的$result永遠不會是錯誤的。所以你的代碼永遠不會運行else聲明。要解決此問題 請在您的if聲明中使用!empty

像這樣

if (!empty($_POST["url"])) { 
     $result = $ping->ping($_POST["url"]); 
     if ($result) { 
      echo "ping was successful\n"; 
     } else { 
      echo "ping was unsuccessful\n"; 
     } 
    } 
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"> 

因此您不必硬編碼腳本名稱。您也可以將其留空,因爲它默認爲當前網址:

相關問題