2012-01-05 111 views
3

類型的東西,我有幾個簡單的HTML文本輸入。我想檢查用戶輸入的東西,而不只是空格。我下面的代碼不起作用。PHP檢查用戶在文本輸入

HTML(以一種形式):

<input type='text' name='email' id='email' /> 

PHP(以下簡稱 「行動」 網頁形式):

$email=mysql_real_escape_string(strtolower(trim($_POST['email']))); 

    if (!$email || empty($email)){ // these are the checks that don't work 
      echo "no email entered"; 
    } 
+1

你檢查什麼是'$ _ POST []'? – Rupak 2012-01-05 15:33:21

+0

對我來說很好,謝謝你的分享。 – Robert 2012-01-05 15:33:55

+0

在你的「動作」部分之前檢查'$ _POST ['email']'是什麼。另外,要清楚,當你說*不工作時,你的意思是「沒有輸入電子郵件」在有空電子郵件變量時不顯示? – Josh 2012-01-05 15:40:42

回答

9

首先,你應該只使用MySQL的內部輸入數據時mysql_real_escape_string 。檢查時不要使用它。

我典型的手工驗證語法是這樣的:

if(!isset($_REQUEST['email']) || strlen(trim($_REQUEST['email'])) == 0){ 
    $errors[] = 'No email provided'; 
} 

檢查在此之後,使用mysql_real_escape_string而將數據輸入到MySQL

mysql_query('UPDATE myusers SET email = "'.mysql_real_escape_string($_REQUEST['email']).'" WHERE id = "'.mysql_real_escape_string($_REQUEST['id']).'"'); 

好運

1

試試這個:

if(preg_match('/[[:space:]]*/',$email){ 
    echo "no email entered"; 
} 

這種方式還能避免換行符標籤

+2

正則表達式看起來很笨拙在這種情況下... – rdlowrey 2012-01-05 15:42:24

+0

是簡單而有效的。有什麼問題? – 2012-01-05 15:52:22

+1

嗯,有關於正則表達式的通常的說法是過度耗費資源 - 它是,但還不夠,從而導致性能差異,除非重複操作多次。我認爲這個問題更重要的是**語義**:PHP具有內置函數來處理這類事情。如果存在內置解決方案,則應該將其選爲一般的基礎廣泛的解決方案,以便處理任何可能的情況(如正則表達式)。 – rdlowrey 2012-01-05 15:59:32

1

關閉我的頭頂,我會嘗試

$email = trim($email); 

if (!isset($email)){ 
    echo "no email entered"; 
} 

if ($email == ''){ 
    echo "no email entered"; 
} 
0

只是改變從「文」到「電子郵件」 輸入字段它會自動檢查的類型有人被輸入一個有效的電子郵件或沒有。

+0

這不僅僅是一個回答而是一個評論。請在答案中提供足夠的詳細信息,即使您認爲這是一個簡單問題,或者您想要參考鏈接或任何其他內容。 – Masoud 2017-07-12 19:33:54

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/16722419) – svarog 2017-07-16 21:01:38