2012-10-22 59 views
0

我有一家網上商店正在運行,並且每隔幾天發送一封空郵件,就像訂單一樣。這是最有可能的谷歌?表單發佈自己,郵件自己發送。它是谷歌?

我有一個名爲send2.php的文件,它從會話中獲取所有信息,所有發佈數據,並通過郵件發送。之後它重定向到「謝謝」頁面。

可以和將谷歌發送空表格只是爲了看什麼在send2.php?什麼纔是防止這種情況發生的最好方法?

+0

爲什麼不檢查服務器訪問日誌以查看哪個IP正在擊中該腳本,然後可以確定IP是否屬於Google。它可能是一個垃圾郵件機器人。特別是如果有一個鏈接到該腳本的表單。 – drew010

回答

0

如果收到的郵件是空白值,因爲在整個會話中沒有設置值,那麼爲什麼不在發送郵件之前檢查這些值,其真正原因是罪魁禍首最有可能是一個爬蟲,以及許多他們(包括bingbot)不會收聽robots.txt文件,另外機器人文件是黑客尋找信息收集的第一位。

<?php 
if(!empty($_SESSION['some_info'])){ 
    mail(...); 
} 
?> 
1

一個叫robots.txt文件添加到您的根目錄,並把這個在它:

User-Agent: * 
Disallow: /path/to/send2.php 

請記住,這不是一個完美的解決方案。這會阻止(合作)網頁抓取工具訪問您的網頁。

參考http://en.wikipedia.org/wiki/Robots_exclusion_standard

一個更好的解決方案涉及的用戶認證(確保代理提示你的腳本是不是一個機器人)。

+1

注意:這隻會影響尋找並尊重robots.txt的**好**機器人。有很多機器人忽略了這個設置。 –

+0

我需要什麼樣的用戶認證?像服務器端驗證?目前我只有javascript驗證。問題是,每封電子郵件都會導致傳真,而我的客戶不喜歡浪費紙張,並且像這樣傳真。 – user1721135

1

正如其他人所說有各種各樣的讓周圍使用empty()檢查和robots.txt良性機器人的方式。但是,這些依賴於您的網站的機器人。許多機器人將嘗試值注入的形式(指的empty支票將無法正常工作),而且這些機器人並不關心robots.txt(我也不會感到驚訝,如果robot.txtDisallow實際上鼓勵一些機器人定位網站假設你可能有一些敏感的東西......但這只是猜測)。

你最好的就是做一個「人體檢查」。要麼執行captcha/recaptcha解決方案,要麼執行一些其他邏輯測試,在您允許提交之前計算機難以解析或解析/理解:「這是什麼動物?[常見動物照片]」,「解決這個簡單的等式[(12/4) +1]「等等

這些檢查必須是服務器端。它們通常涉及在表單首次加載時設置$_SESSION變量與挑戰任務的「答案」,然後在提交表單後檢查它們輸入的值與此會話變量的對應關係。 永不依靠Javascript來爲你做驗證(正如你剛纔提到你正在對x711Li的評論中所做的那樣)。 Javascript驗證純粹是爲了方便用戶(所以他們可以在提交之前看到問題)或減少服務器上的負載(因此您不必運行/記錄大量失敗的提交)。任何人或機器人都可以繞過或操縱Javascript驗證,因此請確保您最終使用的任何方法都涉及服務器端檢查。