需求:在這個現有的網站之中每一個頁面增長一個get參數,保證用戶分享出去連接均有推廣用戶id。php
想法一:給相似tp框架之中U函數(構造URL連接函數)增長一個get參數,半分鐘搞定需求。前端
現實:這個網站沒有這個構造連接函數,頁面於頁面之間銜接的連接都是寫死在模板裏的。cookie
想法二:在模板中把那些連接地址都替換掉,正則一下,最多也就幾分鐘解決掉。框架
現實:因爲使用的是smarty模板引擎,替換起來比較麻煩。不少連接不幸被替換錯誤,致使網站沒法正常工做。手寫的話 保不許之後增長頁面還得作重複工做。函數
想法三:用htaccess重寫URL,給每一個頁面附加參數。性能
現實:由於附加的是用戶id,htaccess沒法直接獲取用戶id。網站
終於打消奇葩的思想以後,開始認真地考慮需求。this
解決方案以下:url
使用js替換掉每一個頁面之中全部的連接,並附加用戶id。spa
使用js給每一個a連接增長事件,跳轉前附加用戶id。
由以上兩種方案中,相比性能而言,天然是後者比較好。
用戶登陸以後:***.php
/* 設置cookie信息 */ setcookie('user_id',$_SESSION['user_id']);// 用戶id存儲在cookie裏,便於前端訪問。
公共js文件 ***.js
// 追加js //獲取cookie #s function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1); if (c.indexOf(name) != -1) return c.substring(name.length, c.length); } return ""; } // 遍歷a標籤添加事件 重寫url // u 爲網站推薦用戶id // user_id 爲登錄後存儲在cookie裏用戶id var aLink=document.getElementsByTagName("a"); for(i=0;i<aLink.length;i++){ aLink[i].onclick=function(){ var u = getCookie('user_id'); if(parseInt(getCookie('user_id'))<=0 || u==""){ return; } if(this.href.indexOf('u=') > -1){ return; } if(this.href.indexOf('?')>0){ this.href = this.href +"&u="+u; }else{ this.href = this.href +"?u="+u; } } }
用戶註銷登陸以後 **.php
setcookie("user_id","",time() - 3600);
以上僅是本人總結的一些解決方案,固然並不是是最優的。若是你們有更好的解決方案能夠分享出來!