2013-03-08 43 views
0

所以我有一個html表單,它使用PHP發佈到同一頁面,這很酷,但爲了阻止PHP在每次打開頁面時都拋出錯誤,如果添加了一個系統來檢查post變量是否爲空(這是用戶第一次加載頁面的時間,因爲他們沒有機會輸入任何內容)。我的問題是,是否有更好的方法來做到這一點?由於在加載表單時加載了PHP腳本,因此我收到消息「您還沒有輸入任何內容」。我不希望這也顯示,當第一次加載頁面,只有當它是必要的..如何檢查發佈到同一頁面的用戶輸入

下面的代碼:

<form action="" method="post"> 
<table align="center"> 
<tr> 
    <td>Enter a word to hash: </td> 
    <td><input type="text" name="input" size="20" maxlength="20"></td> 
    <td><input type="submit" value="Hash"> </td> 
</tr> 

</table> 

</form> 

<?php 
if(empty($_POST['input'])) 
{ 
    echo 'You didnt type anything!'; 
    exit; 
} 

$input = $_POST['input']; 
$input=trim($input); 
    echo md5($input); 

?> 

回答

3

是,檢查REQUEST_METHOD

if($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST['input'])) { 
    ... 
} 
+0

感謝的人。我把錯誤信息在那裏..但因爲$ input = $ _ POST [「輸入」]在外面,但仍試圖加載頁面時初始化..但現在我知道的服務器請求的價值,我改變了你的代碼,以便它是: 如果($ _ SERVER [ 'REQUEST_METHOD'] == 'POST') { 空($ _ POST [ '輸入'])) { 錯誤 } 其餘代碼 } – amartin94 2013-03-08 15:37:21

1

if($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST['input']))

1

嘗試isset要麼比empty,因爲在第一頁加載$_POST['input']不應該存在。

<?php 
if(isset($_POST['input']) && empty($_POST['input'])) 
{ 
    echo 'You didnt type anything!'; 
    exit; 
} else { 
//check 
} 

?> 
+0

但不空(()實現與isset()相同? 我的意思是,isset檢查它是否存在,並且檢查它是否存在,以及它是否具有NONZERO值。那麼它不會是相同的結果嗎? – amartin94 2013-03-08 15:40:08

+0

對於一個不存在的變量,'empty'會拋出一個php NOTICE,所以不是它不一樣;)參見[docs](http://php.net/empty)! – soyuka 2013-03-08 15:43:44

0

如果這是你想要什麼:

  • 始終顯示形式
  • 打印MD5哈希值,如果有人提交的表單

可以完成像這樣。它表示如果使用密鑰輸入存在POST值,則修剪任何開頭和結尾的空白並打印該值的MD5散列。

<?php 

if (!empty($_POST['input'])) 
{ 
    echo md5(trim($_POST['input'])); 
} 

?> 
+1

如果帖子爲空,他想拋出一個錯誤 – soyuka 2013-03-08 15:30:55