PHP+Ajax實現網站廣告防止惡意點擊解決方案

來源:互聯網
上載者:User

 遇到問題                                                              

    辛苦做網站,好不容易有點起色,考略到入不敷出的開支,於是決定投放廣告,於是選擇了GG,和百度,(彈窗神馬的不考慮)

於是繼續努力,努力。。。可是、大家都知廣告聯盟都是有體現最低金額的,悲劇的事當金額逼近最低限度時,收到了一封作弊郵件。。

於是悲劇的事情發生了。。。。。

 分析問題                                                      

自己作弊是不可能的,這點常識我還是懂的。考略到可能是有些 ”好心“ 使用者幫了我一把。(在此表示深深的感謝)。

 (PS:本人不善言談,不廢話直接進入主題)

 技術解決方案 (希望大家有更好的方案請在此討論)                                                      

使用技術:

PHP,jquery(忽略),Ajax(重點)

方案解析:

對廣告DIV層Click事件進行監控,當使用者點擊DIV內廣告使 同時出發div的Click事件,(不影響正常的點擊彈出)。

對已觸發的DIV  Click事件進行處理。

具體事件處理:

1、使廣告DIV層進行隱藏消失,同時記住使用者點擊廣告時間,點擊頁面,使用者IP(重要)等資訊,如需更多請自行擷取。

2、寫入檔案或資料庫,記錄以上使用者資訊。

3、當同一使用者在24小時(自己設定)內重新整理網站或頁面時,判斷目前使用者IP是否在資料庫或資料檔案中已存在,從而決定廣告是否對該使用者進行展示。

 

我這裡使用的是Ajax非同步訪問:

save.php?ip=127.0.0.1&url=http://127.0.0.1/html/3453&browser=msie

通過GET方式得到相應使用者新進行儲存資料。

 

save.php原始碼如下(可自行擴充):

 

<?phpheader("Content-type:text/html;charset=gb2312");if($_GET['ip']){if(is_file("ip.txt"))$data = @file_get_contents("ip.txt");$arr=@explode("|",$data);for($i=0;$i<count($arr);$i++){if($_GET['ip']==$arr[$i]){exit();}}$fp = @fopen("ip.txt",'w');$data = $data."\r\n"."IP:".$_GET['ip']." | "."點擊時間:".microtime(true)." | 來源頁面:".$_GET[url]." | 瀏覽器:".$_GET[browser];fwrite($fp,$data);fclose($fp);}?>

  

 show_ad.js 代碼如下(非同步訪問save.php):

$(function(){$('#ad').click(function(){//廣告隱藏$("#ad").hide('true');//記錄IP開始var xmlHttp;function S_xmlhttprequest(){if(window.ActiveXObject){xmlHttp = new ActiveXObject('Microsoft.XMLHttp');}else if(window.XMLHttpRequest){xmlHttp = new XMLHttpRequest();}}function fun1(){var ip=document.getElementById("ad_ip").innerHTML;var url=location.href;var bro=$.browser;//alert(name);var browser='';for(var name in bro){if(bro[name] == true){var browser=browser+name+",";}}var d=new Date();var time=d.getSeconds();//解決IE7bugS_xmlhttprequest();xmlHttp.open("GET","save.php?ip="+ip+"&url="+url+"&browser="+browser+"&time="+time,true);xmlHttp.onreadystatechange = fun2;xmlHttp.send(null);}function fun2(){if(xmlHttp.readyState==4){if(xmlHttp.status==200){var str1=xmlHttp.responseText;//alert(str1);document.getElementById('ceshi').innerHTML=str1;  }}}fun1();//執行方法//記錄IP結束});//Click結束});//document結束

  

 測試是否顯示廣告頁面index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>This ia a jQuery + AJAX Test</title><script src="jquery-1.7.1.js" type="text/javascript"></script><script src="show_ad.js" type="text/javascript"></script><style>* {margin:0px auto;}div {width:800px;}#ad {width:900px;height:140px;background:#003366;text-align:center;color:#FFFFFF;font-size:24px;padding-top:10px;font-family:Arial, Helvetica, sans-serif;margin-top:100px;}</style></head><body><?php //讀取已點擊IP列表function ckip($ip){$data = @file_get_contents("ip.txt");$arr=@explode("\r\n",$data);for($i=0;$i<count($arr);$i++){$arr2=explode(" | ",$arr[$i]);$arr2[0] = @str_replace("IP:","",$arr2[0]);if($ip==$arr2[0])return 1;}return 0;}if(ckip($_SERVER[HTTP_HOST])==0)//未點擊過{//顯示廣告echo "<div id='ad'><a href='http://www.baidu.com' target='_blank'><img src='logo.gif' width='270' height='129' /></a>This is an AD!<div style='display:none' id='ad_ip'>".$_SERVER[HTTP_HOST]."</div></div>";}else{}?><div>  <p>這裡是正常網站內容。。。。 </p>  <div>    <p>這裡是正常網站內容。。。。 </p>  </div>  <div>    <p>這裡是正常網站內容。。。。 </p>  </div></div></body></html>

 

  不廢話了,大家仔細研究下,如果有更好的思路,解決方案歡迎討論。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.