特定页面获取外部来源(搜索引擎或是其他站点)的思路

来源:互联网 发布:射雕英雄传知乎 编辑:程序博客网 时间: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);
    }

 

 

                     

 

 

 

 

 

 

原创粉丝点击