2014-10-20 79 views
0

我的網站表單正在受到垃圾郵件的攻擊。我注意到在「手機」字段垃圾郵件機器人總是插入文本,而不是一個數字,所以我想添加一個if語句給php郵件程序阻止電子郵件,如果電話字段不包含任何以下內容:PHP - 如何詢問字段是否包含數字或+或空格或空的?

1)我希望用戶能夠將字段留空,因此必須接受空字段。

2)必須包含「數字」或「加號」或「空格」

如何將我寫這篇文章的PHP?

任何幫助表示讚賞

編輯:只是笑,雖然它會更容易只檢查該字段包含字母字符。我將如何做到這一點?

EDIT2:Sorted。我用「if(ctype_alpha($ phone)!== false)」

+3

你可以用幾千種不同的方式寫這樣的東西。你試過什麼了? – 2014-10-20 07:35:49

+0

爲什麼不是驗證碼或「什麼顏色是草?」之類的事情? – jimmy 2014-10-20 07:36:55

+0

可能重複[如何檢查一個字符串是否包含特定單詞?](http://stackoverflow.com/questions/4366730/how-to-check-if-a-string-contains-specific-words) – 2014-10-20 07:41:37

回答

0

正則表達式可能是最好的方法,儘管不一定最容易理解。但是如果你不熟悉正則表達式,那麼學習肯定是一件好事。我最喜歡的介紹是這個網站:http://www.zytrax.com/tech/web/regex.htm這是一個交互式構建正則表達式並觀察它如何實時運行的好網站:http://www.regexr.com/我確定有很多其他類似的網站,但這些都是我總是回頭去看的。

如果你四處搜尋正則表達式的解決方案,你會發現無數的可能性和變化。我的個人建議是保持簡單。我會從考慮如何存儲電話號碼數據開始。我通常只保留數字,所以我會先簡化它,先刪除那些「允許」字符,然後檢查剩下的部分是否只是數字。

$phone = str_replace(Array('+', ' ', '(', ')'), '', $phone); 

這將用空字符串替換所有的加號,空格和括號(即刪除它們)。然後你可以檢查字符串是否是數字,如果它是存儲它,否則打​​印/返回一個錯誤。

if (!is_numeric($phone)) 
    // stop processing and output an error 
+0

當然「if(ctype_alpha($ phone)!== false)」例子更簡單嗎?記住這一點是要阻止我收到的垃圾郵件形式提交 – Chris 2014-10-20 08:08:58

+0

是的,作爲一個快速檢查,以防止你的垃圾郵件問題它應該沒問題。正如Sverri M. Olsen在原評論中所說的那樣,有很多方法可以解決這個問題。 – phansen 2014-10-20 08:14:21

-1

,首先必須使用例如一些spamblock:令牌,蜜罐,驗證碼等

在我國,移動或本地電話號碼,只包含無國家代碼是XX + 9digits。所以我在db中創建INT(10)字段。提交表單後,刪除沒有數字的一切。

例如:

$phoneNumber = (int) substr(preg_replace('#[^\d]+#', '', $_POST['phone_numer']), 0, 9); 

在許多項目工程百達。

+0

9位數字與「INT(9)」數據庫字段之間沒有關係。前者與9位數字串的長度有關,後者與存儲整數時使用多少字節(因此數字有多大)有關。另外,你的正則表達式不會做提問者想要的東西。在回答之前,請正確閱讀問題。 – 2014-10-20 10:23:11

+0

是的,我知道,括號中的9是錯字。我想到了9位數字的電話號碼並在現場寫下來。 – 2014-10-20 10:27:24

相關問題