特定页面获取外部来源(搜索引擎或是其他站点)的思路
来源:互联网 发布:射雕英雄传知乎 编辑:程序博客网 时间:2024/06/11 12:19
大概思路有两种:
1。 就是每个页往前推 document.referrer
如果页面少的话还可以。页面多的话根本不现实。而且很乱!
2。用cookie
首先在没个页面里 设置一段代码。就是去抓前一个页的地址,并且保存到cookie里。保存cookie 用单件模式。也就是只能保存一次。如果保存过了就不在保存。 cookie 过期时间设置为跟进程同步周期。 也就是关闭IE cookie消失。这样就能保证是获取的是来本站点前的页面了。
然后到特定页面在去提取cookie。并保存到数据库中,就可以保存特定页面的来源信息了。
在页脚 文件中插入如下代码:
<div style="display:none
<script language="javascript" type="text/javascript">
var url = "http://域名/OriginPage/sc.aspx?referrer="+ escape(document.referrer);
window.document.write("<script src=/'"+url+"/'><//script>");
</script>
</div>
sc.aspx代码如下:
public string referrer = "";
protected void Page_Load(object sender, EventArgs e)
{
referrer = DAL.Handler.Request("referrer", DAL.GetTypeEnum.QueryAndPost, DAL.CheckGetEnum.Safety).ToString(); //获取脚本传过来的参数
//先提取cookie
HttpCookie cookie = IgoCMS.Web.Cookie.Get(DAL.Model.CookieforOrigin.OriginCookie);
if (cookie != null)
{
// IsSet 这项是判断cookie是否已经写过的属性
bool isset = Convert.ToBoolean(cookie[DAL.Model.CookieforOrigin.IsSet]);
if (!isset)
{
//保存cookie
HttpCookie cookie1 = new HttpCookie(DAL.Model.CookieforOrigin.OriginCookie);
cookie1[DAL.Model.CookieforOrigin.Origin] = Server.UrlEncode(referrer);
cookie1[DAL.Model.CookieforOrigin.IsSet] = "true";
cookie1.Domain = DAL.Model.CookInfo.cookieDomain;
CMS.Web.Cookies.Save(cookie1);
}
}
else
{
//保存cookie
HttpCookie cookie1 = new HttpCookie(DAL.Model.CookieforOrigin.OriginCookie);
cookie1[DAL.Model.CookieforOrigin.Origin] = referrer;
cookie1[DAL.Model.CookieforOrigin.IsSet] = "true";
cookie1.Domain = DAL.Model.CookInfo.cookieDomain;
CMS.Web.Cookies.Save(cookie1);
}
}
特定页面保存的代码
string Ref ;
HttpCookie cookie = IgoCMS.Web.Cookie.Get(DAL.Model.CookieforOrigin.OriginCookie);
if (cookie != null)
{
bool isset = Convert.ToBoolean( cookie[DAL.Model.CookieforOrigin.IsSet]);
string Referrer = cookie[DAL.Model.CookieforOrigin.Origin];
if (isset)
{
Ref = Uri.UnescapeDataString(Referrer);//设置cookie里保存的来源
}
}
else
{
Ref = Furl;;//设置本页前一页的地址
}
Ref = Furl;
然后把 Ref 保存到库里就可以了。
后台显示页面:
public string ReturnUrl( object str1)
{
string str = "";
if (str1 == null)
{
return "";
}
str = str1.ToString().ToLower();
string strEncoding = "gb2312";
Encoding encode = Encoding.Default;
if (str.IndexOf("google") > -1 || str.IndexOf("yahoo") > -1 || str.IndexOf("youdao") > -1 || str.IndexOf("yisou") > -1)
{
strEncoding = "utf-8";
}
else
{
strEncoding = "gb2312";
}
encode = Encoding.GetEncoding(strEncoding);
return HttpUtility.UrlDecode(str, encode);
}
- 特定页面获取外部来源(搜索引擎或是其他站点)的思路
- 获取来源页面的页面
- 获取网站来源,以及搜索引擎来源的关键字
- 如何获取搜索引擎的来源,以及搜索引擎的相关信息
- 百度怎样监控其他搜索引擎或途径的来源流量
- js获取来源url(上个页面的地址)
- 获取站点根目录路径的一种思路
- PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
- 页面中引用其他外部链接的页面
- 增加搜索引擎友好度的页面布局设计思路
- php获取来源页面地址
- js获取其他页面的变量
- ExtJs 获取其他页面的组件方式
- 其他的搜索引擎
- webView程序 第一次加载页面是出现白屏或是黑屏或是其他
- 引用外部.css或.js文件的路径问题--jsp或html页面或是在web项目中的引用
- 微软的站点搜索引擎内幕
- 一段JS简单获取页面来源地址
- 动态规划 (Dynamic Programming) 之 矩阵链乘法(Matrix Chain Multiplication)
- nature science上关于计算机视觉的一些原创文献
- 要成为Java高手需要注意的25个学习目标
- Ext中的get、getDom、getCmp、getBody、getDoc的区别
- 东芝230复印机常用08设定模式代码
- 特定页面获取外部来源(搜索引擎或是其他站点)的思路
- oracle光标的学习
- 指定的SID在本机上已经存在,请指定一个不同的SID”的解决办法
- 四国布局
- 使用GetSystemDefaultLCID获取手机语言
- php生成SessionID和图片校验码的思路和实现
- DBUS 记录
- 事件委托实例
- Linq入门