遇到問題
辛苦做網站,好不容易有點起色,考略到入不敷出的開支,於是決定投放廣告,於是選擇了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>
不廢話了,大家仔細研究下,如果有更好的思路,解決方案歡迎討論。