2012-02-19 49 views
1

我有網站和不明原因我得到每分鐘超過200垃圾郵件後 ,但我仍然不需要使用驗證碼如果使用空()

我有一個想法,因爲我的攻擊機器人是餓了任何輸入形式是創建以下

1瀏覽器隱藏的文本輸入

<style> 
.comment {visibility: hidden;} 
</style> 
<input name="comment" id="comment" type="text" class="comment" /> 

2-使用PHP,如果它爲空,則沒有垃圾郵件機器人,如果不是空的,那麼它必須是垃圾郵件機器人 但php代碼給我錯誤,因爲它看起來不工作

$comment = $_POST[comment]; 

if(!empty($comment)){ 

echo "you are bot right then die go to hell"; 

} else{ 

echo "fine"; 

} 

對於我不知道的原因,PHP代碼不工作!我不確定empty()如何使用它。

+0

什麼錯誤?它給? – 2012-02-19 23:19:53

+1

對於沒有設置'$ _POST ['comment']'的情況,您應該直接使用if(empty($ _ POST ['comment']))'(不要忘記''')。 – Vyktor 2012-02-19 23:21:30

+0

您正在用或不使用驗證碼?如果不是爲什麼? – 2012-02-19 23:23:24

回答

3

我認爲你缺少圍繞 '註釋'

$comment = $_POST['comment']; 
if($comment !== null && strlen($comment) > 0) 
{ 
    //dangerrrrrrrrr, be very afraid. 
} else { 
    //business as usual 
} 
+3

他們錯過了,但它實際上無論如何將工作。 PHP將解釋爲一個常量「註釋」,但由於常量是未知的,它會假定你的意思是字符串「comment」,並在拋出Warning時添加引號本身。 – 2012-02-19 23:20:58

+0

完美的作品,看起來像我對機器人有驚喜:) nihaaaaa nihaaaaa非常感謝。 – 2012-02-19 23:26:12

+0

隨時,哥們! – mindandmedia 2012-02-20 09:47:33

1

引號你可以試試這個

$comment=isset($_POST['comment']) ? (!empty($_POST['comment']) ? $_POST['comment'] : null) : null ; 
if($comment) 
{ 
    //comment available 
} 
else 
{ 
    //comment not available 
}