要实现:记录百度广告点击进入网站并在一定时间内成功注册
首先是入口。所有页面都可以是一个入口。
百度广告进来的入口一般是这样: 你的网址后面带有:?hmsr=baidu%20sem&hmmd=cpc&hmpl=201304&hmkw=%E7%A1%AC%E5%B9%BF&hmci=A
[code lang=”js”]
function setCookieMin(c_name,value,expireMins)//设置cookie 按照分钟 added by shanmao 2013 – 4 – 13
{
var exdate=new Date()
exdate.setMinutes(exdate.getMinutes()+expireMins)
document.cookie=c_name+ "=" +escape(value)+
((expireMins==null) ? "" : ";expires="+exdate.toGMTString())+";"+"path=/"
}
var hmsr = escape(jsgetURL(‘hmsr’));//获取URL的值。这个函数可以参考本站的文章
var hmmd = escape(jsgetURL(‘hmmd’));
var hmpl = escape(jsgetURL(‘hmpl’));
var hmkw = escape(jsgetURL(‘hmkw’));
var hmci = escape(jsgetURL(‘hmci’));
var pagename=thisurl.substring(thisurl.lastIndexOf("/") + 1,thisurl.indexOf("?"));
var data = {hmsr:hmsr,hmmd:hmmd,hmpl:hmpl,hmkw:hmkw,hmci:hmci,pagename:pagename}
var valsd = JSON.stringify(data);//
if(hmci){
setCookieMin(‘baidu_gg’,valsd,60);
}
[/code]
Json.stringify 可以参考:http://shanmao.me/web/js/yong-cookie-bao-cun-js-dui-xiang
jsgetURL:http://shanmao.me/web/jquery/js-huo-qu-dang-qian-url-shu-zhi
这几记录广告进来后60分钟内,用户注册成功则记录到数据库。
php code 写入数据库:
[code lang=”php”]
function baiduad($uid=null,$username=null,$email=null,$tel=null){
header("Content-Type: text/html; charset=UTF-8");
$gg = $_COOKIE[‘baidu_gg’];
if(!$gg){
exit;
}
$gg = json_decode(stripslashes($gg),true);
$data[‘hmsr’] = urldecode($gg[‘hmsr’]);
$data[‘hmkw’] = urldecode($gg[‘hmkw’]);
$data[‘hmmd’] = urldecode($gg[‘hmmd’]);
$data[‘hmpl’] = urldecode($gg[‘hmpl’]);
$data[‘hmci’] = urldecode($gg[‘hmci’]);
$data[‘pagename’] = urldecode($gg[‘pagename’]);
$data[‘uid’]=$uid;
$data[‘username’]=$username;
$data[’email’]=$email;
$data[‘tel’]=$tel;
$data[‘regtime’]=time();
$data[‘regip’]=get_client_ip();
$re = M(‘Ad_count’)->add($data);
//dump($data);
//dump($re);
}
[/code]
然后在注册的地方调用上面这个php方法。即可保存到数据库。
———————————————————————–
经测试: JSON.stringify 方法,在ie中貌似有问题!
在纯html的情况下是ok的。
然后在(入口页)有引用优酷视频的页面中使用这个 JSON.stringify 就会出现
未定义 JSON。。
导致整个功能失败。
这个问题只有在IE中,和引入了优酷视频的页面才会存在。其他页面都ok。不知道还有什么情况下会失败~。
最后我只好改成如下:
[code]
// JavaScript Document 百度广告js统计入口
var hmsr = escape(jsgetURL(‘hmsr’));
var hmmd = escape(jsgetURL(‘hmmd’));
var hmpl = escape(jsgetURL(‘hmpl’));
var hmkw = escape(jsgetURL(‘hmkw’));
var hmci = escape(jsgetURL(‘hmci’));
var pagename=thisurl.substring(thisurl.lastIndexOf("/") + 1,thisurl.indexOf("?"));
//var data = {hmsr:hmsr,hmmd:hmmd,hmpl:hmpl,hmkw:hmkw,hmci:hmci,pagename:pagename}
//var valsd = JSON.stringify(data);
var vals = new Array(hmsr,hmmd,hmpl,hmkw,hmci,pagename);
if(hmci){
//$.cookie(‘baidu_gg’,valsd,{expires:0.5,path:"/"});
setCookieMin(‘baidu_ggffff’,vals,60);
}
[/code]
用数组的方式存储。
然后php获取这个数组的cookie ,执行相应的操作写入数据库。
php code:
[code]
function baiduad($uid=null,$username=null,$email=null,$tel=null){
header("Content-Type: text/html; charset=UTF-8");
$gg = $_COOKIE[‘baidu_ggffff’];
if($gg){
//$gg = json_decode(stripslashes($gg),true);
$gg = explode(",",$gg);
//hmsr,hmmd,hmpl,hmkw,hmci,pagename
$data[‘hmsr’] = urldecode($gg[0]);
$data[‘hmkw’] = urldecode($gg[3]);
$data[‘hmmd’] = urldecode($gg[1]);
$data[‘hmpl’] = urldecode($gg[2]);
$data[‘hmci’] = urldecode($gg[4]);
$data[‘pagename’] = urldecode($gg[5]);
$data[‘uid’]=$uid;
$data[‘username’]=$username;
$data[’email’]=$email;
$data[‘tel’]=$tel;
$data[‘regtime’]=time();
$data[‘regip’]=get_client_ip();
$re = M(‘Ad_count’)->add($data);
}
//dump($data);
//dump($gg);
}
[/code]
这样就兼容所有的浏览器。