原理,推广者通过论坛自动生成的属于自己的推广链接,分发出去后,其它人通过该链接访问,广告联盟便可记录推广者并给予奖励.
涉及三个文件.cf_conn.php及cf_reg.php,为了让推广链接窗口在帖子中显示.需要修改default这个默认模板.如果用的是第三方模板,需要自己对应模板.\template\default\forum\viewthread_node_body.htm
cf_conn.php的内容为
<?php
/*配置好下面的参数*/
//edusoho的Mysql数据库IP地址或主机名
$dbhost="localhost";
//edusoho的Mysql数据库连接用户名
$dbuser="root";
//edusoho的Mysql数据库连接密码
$dbpwd="root";
//edusoho的Mysql数据库使用的数据库名称
$dbname="discuz2";
//网站网址,如http://www.a.com/,以/结尾
$shop_url="http://www.a.com/";
//广告联盟程序安装路径,如http://www.b.com/,以/结尾
$cf_url="ttp://www.b.com/";
//广告联盟系统密钥,管理员后台可查到,登录加密用
$cf_syscode="xxxxxxxx";
//广告联盟对接的程序普通用户的广告ID
$cf_ad_id=126;
//广告联盟对接的程序楼主的广告ID
$cf_ad_idb=123;
//ifrmame高度,调试时可以设置20到40可以显示调试信息,完成后设置为0即可隐藏
$cf_iframeheight=20;
$conn = mysql_connect($dbhost,$dbuser,$dbpwd);
if (!$conn) die ("对不起,发生错误! 请检查cf_conn.php中数据库的配置是否正确!");
mysql_query("set names gbk");
mysql_select_db($dbname,$conn);
//过滤非法字符
function chkstr($paravalue,$paratype){
if($paratype==1){
$filterstr="(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
if (preg_match("/".$filterstr."/is",$paravalue)==1){
exit("传递的参数类型有错误!");
}
$inputstr=str_replace("'","''",$paravalue);
}elseif($paratype==2){
if($paravalue!=""&&is_numeric($paravalue)==false){
exit("传递的参数类型有错误!");
}else{
$inputstr=$paravalue;
}
}elseif($paratype==3){
if($paravalue!=""&&(strtotime($paravalue)==false||strtotime($paravalue)==-1)){
exit("传递的参数类型有错误!");
}else{
$inputstr=$paravalue;
}
}
return $inputstr;
}
?>
cf_reg.php内容为
<?php
header("expires:mon,26jul199705:00:00gmt");
header("cache-control:no-cache,must-revalidate");
header("pragma:no-cache");
$action = isset($_GET["action"]) ? $_GET["action"] : "useridget";
if($action=="useridget"){
require './source/class/class_core.php';//引入系统核心文件
$discuz = & discuz_core::instance();//以下代码为创建及初始化对象
$discuz->cachelist = $cachelist;
$discuz->init();//以上是调用discuz公共执行类等核心代码
$userid= $_G['uid'];
$ser=$_SERVER['HTTP_HOST'];
$scr=$_SERVER['SCRIPT_NAME'];
$scr_2=substr($scr,0,strrpos($scr,"/")+1);
//如果是登录者时,显示推广链接,这里currurl用base64加密防止被双重伪静态
if($userid!=""){
echo "document.write(\"<script src='http://".$ser.$scr_2."cf_reg.php?action=usertg&userid=$userid&currurl=\"+base64_encode(window.location.href)+\"' charset='gbk'></script>\");";
@include("cf_conn.php");
$from = isset($_GET["from"]) ? $_GET["from"] : $shop_url;
//var currurl= escape('".str_replace("http://","",$currurl)."');
//currurl='".$cf_ad_id.",".$userid.",,'+currurl;
//str+='".$cf_url."cf.aspx?'+base64_encode(currurl);
//获取完整的url
//$cur_1= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$cur_2= str_replace("http://","",$from);
echo "document.write(\"<script>var cur3= escape('".$cur_2."'); var cur='".$cf_ad_id.",".$userid.",,'+cur3;var my_currurl='http://www.b.com/cf.aspx?'+base64_encode(cur);</script>\");";
}
}
//登录用户显示推广链接
if($action=="usertg"){
@include("cf_conn.php");
if($cf_ad_id==0) exit;
//取出当前页,判断哪些页面需要出现推广提示
$currurl = isset($_GET["currurl"]) ? chkstr($_GET["currurl"],1) : "";
$currurl=base64_decode($currurl);
//echo("alert('$currurl');");
//用正则读取
if(preg_match('/p-([0-9]*)-.*\.html/',$currurl,$matched)){$tid=$matched[1];}else{$tid="";};
$userid = isset($_GET["userid"]) ? chkstr($_GET["userid"],2) : "";
$sql="select email from pre_ucenter_members where uid='$userid'";
$result=mysql_query($sql);
if($rs=mysql_fetch_array($result)){
$username=$rs["email"];
}
if($tid!=""){
//如果这个帖子是当前用户发的则调用对楼主的广告
$sql="select authorid from pre_forum_post where tid='$tid'";
$result=mysql_query($sql);
if($rs=mysql_fetch_array($result)){
$useridb=$rs["authorid"];
if ($userid==$useridb){$cf_ad_id=$cf_ad_idb;}
}
}else{
exit;//非主题页时不显示
}
//echo("alert('$currurl');");
//把用户提交到联盟用户新增接口
echo "document.write(\"<iframe src='".$cf_url."cf.aspx?action=useradd&userid=$userid&username=$username&checkcode=".md5($userid.$username.$cf_syscode)."' frameBorder=0 width=200 height=$cf_iframeheight marginheight=0 marginwidth=0 scrolling=no></iframe>\");";
echo("
var sxadwidth = 500;
var sxadheight = 120
document.write('<span id=\"cf_sxtg\"></span>');
//关闭按钮
str='';
str+='<div align=\"left\" id=\"cf_sxtg\" style=\"background-color:#c6ccd9;padding:7px;width:590px;display:inline-block\">'
str+='<span style=\"font-size:14px;color:#ff0000;\">推广本站赚钱</span>';
str+='<br><span style=\"font-size:12px;\">复制推广链接给别人可获提成</span>';
str+='<iframe src=\"".$cf_url."d_info.asp?userid=$userid&checktime=".time()."&checkcode=".md5($userid.time().$cf_syscode)."\" frameBorder=0 width=400 height=$cf_iframeheight marginheight=0 marginwidth=0 scrolling=no></iframe>';
str+='<br><textarea onfocus=\"select()\"id=\"tgtext\" style=\"width:540px;height:18px;margin-bottom:-3px;\">';
var currurl= escape('".str_replace("http://","",$currurl)."');
currurl='".$cf_ad_id.",".$userid.",,'+currurl;
//alert(currurl);
str+='".$cf_url."cf.aspx?'+base64_encode(currurl);
str+='</textarea> <a style=\"font-size:16px;display:inline-block;\"href=\"javascript:\" onclick=\"tgcopy(\'tgtext\');\"> 复制';
str+='</div>';
showMsg(str);
function showMsg(str) {
var s=\"\";
var _width=sxadwidth;_height=sxadheight;
try{
if(document.compatMode && document.compatMode != 'BackCompat'){
s+=('<div style=\"\" id=\"BottomMsg\">');
}else {
s+=('<div style=\"\" id=\"BottomMsg\" >');
}
s+=(str);
s+=('</div>');
document.getElementById('cf_sxtg').innerHTML = s;
}catch(err){}
}
function cf_sxtg_closeDiv(){
document.getElementById('cf_sxtg').style.visibility='hidden';
document.getElementById('cf_sxtg_close').style.visibility='hidden';
}
function tgcopy(ob){
var obj=tgfindObj(ob);
if(-[1,]){
obj.select();
alert(\"您的浏览器不支持此这个复制功能,请手工复制文本框中内容\")
}else{
if (obj) {
obj.select();js=obj.createTextRange();js.execCommand(\"Copy\");}
}
}
function tgfindObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf(\"?\"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}
");
}
echo("
function base64_encode(str){
var c1, c2, c3;
var base64EncodeChars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";
var i = 0, len= str.length, string = '';
while (i < len){
c1 = str.charCodeAt(i++) & 0xff;
if (i == len){
string += base64EncodeChars.charAt(c1 >> 2);
string += base64EncodeChars.charAt((c1 & 0x3) << 4);
string += \"==\";
break;
}
c2 = str.charCodeAt(i++);
if (i == len){
string += base64EncodeChars.charAt(c1 >> 2);
string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
string += base64EncodeChars.charAt((c2 & 0xF) << 2);
string += \"=\";
break;
}
c3 = str.charCodeAt(i++);
string += base64EncodeChars.charAt(c1 >> 2);
string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
string += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
string += base64EncodeChars.charAt(c3 & 0x3F)
}
return string
}
")
?>
三,如果要让百度分享显示.并且分享后,附带回调的本论坛网址为自定义的推广链接.
其中{eval}表示在模板中直接运行php,
如果要自定义链接.需要增加bdUrl:my_currurl 这一句.
为 了方便复杂推广链接,请不要开启百度划词分享功能.
在\template\default\forum\viewthread_node_body.htm
大约62行.也就是<!--{if $post['first']}-->的下面,要加在这个位置,是因为这个代码只想让他显示在主题帖子中,回复中不显示.添加上面两个文件的调用及百度分享
代码都不需要在后台设置什么
<!--{eval
$cur_1= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo "<script src='/cf_reg.php?from=".$cur_1."' charset='gbk'></script>";
}-->
<div class="bdsharebuttonbox"><a href="#" class="bds_more" data-cmd="more"></a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a></div>
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"32",bdUrl:my_currurl},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>