遇到问题
辛苦做网站,好不容易有点起色,考略到入不敷出的开支,于是决定投放广告,于是选择了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源代码如下(可自行扩展):
<?php
header("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();//解决IE7bug
S_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>
不废话了,大家仔细研究下,如果有更好的思路,解决方案欢迎讨论。