2011-03-12 119 views
0

我遇到以下代碼段的問題。我希望在使用「搜索」按鈕提交表單時出現標題Search results,並且我正在嘗試使用稱爲搜索的隱藏輸入來實現此功能。這個想法是,當表單被提交時,這個值被設置爲'yes',這將顯示標題,但這不是在這裏發生的事情。任何人都可以告訴我我哪裏出了錯?使用表單提交將變量從HTML傳遞到PHP

<html> 
    <head> 
     <title>Search</title> 
    </head> 

    <body> 
     <h1>Search</h1> 

     <form name = "search" action = "<?=$PHP_SELF?>" method = "get"> 
      Search for <input type = "text" name = "find" /> 
      <input type = "hidden" name = "searching" value = "yes" /> 
      <input type = "submit" name = "search" value = "Search" /> 
     </form> 

     <?php 
      if ($searching == "yes") 
      { 
       echo "<h2>Search results</h2>"; 
      } 
     ?> 
    </body> 
</html> 

回答

2

@chris,你不必使用隱藏字段。你可以檢查表單是否是這樣提交的:

if(isset($_GET['search'])) echo 'foo'; 

@Boris,爲什麼要將全局存儲到另一個var更安全?我會同意,如果你檢查全球對正則表達式或之前的任何事情。

Felix

+0

在舊版本的PHP中,所有來自GET和POST的變量都可用作全局變量(register_global = on),它即將顯示您不能直接使用$搜索,但需要從$ _GET預定義變量中獲取它。你顯然不需要*來做到這一點 – 2011-03-13 00:16:43

1

您需要訪問超全局$_GET

if($_GET["searching"]=="yes"){ 
    //echo here 
} 
+0

你有沒有試過在E_ALL下編程? – 2011-03-12 21:31:44

1

除非你使用的是舊版本的PHP,或一個真正不安全的配置,你可能不會使用全局變量。

因此,您需要首先從魔術$_GET變量中檢索您的$searching變量。

$searching = $_GET['searching']; 
+0

你有沒有試過在E_ALL下編程? – 2011-03-12 21:32:15