用户手机客户端登录Login页面跳转到手机MobileLogin页面问题总结

     最近的一个项目中要实现区别手机移动客户端还是PC客户端,然后让手机客户端的用户跳转到MobileLogin页面。遇到了一个问题,我反复测试、调试、修改终于就出这个问题的原因。具体问题是这样的:

            Login.aspx页面是这样的:有一个连接<a class ="a04" id = "a04"  href = "<%=os ?MobileLogin.aspx:'#'%>"></a> 

            后台代码定义了一个静态全局变量:public static bool os = ISWAPBroser(); ;

                    protected void Page_Load(object sender, EventArgs e)
                 {


                                         string userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
                                        

                                其他略。。。。。

                    }

  #region
        /// <summary>  
        /// 获取客户端是是否手机  
        /// </summary>  
        /// <returns></returns>  
        public  bool ISWAPBroser()
        {
            //UserAgent   
            string  userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
              
          String[] mobileAgents = {"iphone", "android", "phone", "mobile", "wap", "netfront",
                                      "java", "opera mobi", "opera mini", "ucweb", "windows ce", 
                                      "symbian", "series", "webos", "sony", "blackberry", "dopod", 
                                      "nokia", "samsung", "palmsource", "xda", "pieplus", "meizu", 
                                      "midp", "cldc", "motorola", "foma", "docomo", "up.browser", 
                                      "up.link", "blazer", "helio", "hosin", "huawei", "novarra",
                                      "coolpad", "webos", "techfaith", "palmsource", "alcatel", 
                                      "amoi", "ktouch", "nexian", "ericsson", "philips", "sagem",
                                      "wellcom", "bunjalloo", "maui", "smartphone", "iemobile",  
                                      "spice", "bird", "zte-", "longcos", "pantech", "gionee", "portalmmm",
                                      "jig browser", "hiptop", "benq", "haier", "^lct", "320x320", "240x320",
                                      "176x220", "w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq",
                                      "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang", "doco",
                                      "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi", "keji", "leno",
                                      "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo", "midp", "mits", "mmef",
                                      "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", "palm",
                                      "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", 
                                      "sany", "sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", 
                                      "smal", "smar", "sony", "sph-", "symb", "t-mo", "teli", "tim-", "tosh",
                                      "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", 
                                      "wapr", "webc", "winw", "winw", "xda", "xda-", "Googlebot-Mobile"};
        bool  isMoblie = false;
          
         string userAgent1 = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
        
         if (userAgent1 != null)
           {
             for(int i=0;i<mobileAgents.Length;i++)
              {
                  if (userAgent1.ToLower().IndexOf(mobileAgents[i]) >= 0)
               {
                isMoblie = true;
                break;
             }
            }
          }
          return isMoblie;
         }
        #endregion 


这样写的目的是想在页面加载之前确定链接地址。但是我却忽略了一个问题,就是我此时获得userAgent 是空的,所以ISWAPBroser()返回的值一直是false,找到最终原因,所以解决的办法就有了。如下:

protected void Page_Load(object sender, EventArgs e)
        {


            string userAgent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
            bool os = ISWAPBroser();
        }

在前端实现用户无操作自动跳转到登录页面,通常涉及到页面停留时间的检测和会话状态的检查。这可以通过JavaScript来实现,以下是一个基本的实现思路: 1. 设置一个变量来记录用户最后的操作时间。 2. 利用JavaScript的定时器(如`setTimeout`)来检测用户是否在一定时间内没有操作。 3. 如果用户超过设定时间未进行操作,则跳转到登录页面。 4. 在用户进行任何操作时,更新最后操作时间。 具体实现可以使用以下代码作为参考: ```javascript // 设置用户无操作的超时时间(例如:5分钟) var timeout = 5 * 60 * 1000; var lastActivity = Date.now(); // 更新最后操作时间的函数 function updateLastActivity() { lastActivity = Date.now(); } // 监听用户活动(如键盘、鼠标事件) document.addEventListener('keydown', updateLastActivity); document.addEventListener('mousemove', updateLastActivity); // 设置超时检查 setTimeout(function() { if ((Date.now() - lastActivity) >= timeout) { // 超时,无操作,则跳转到登录页面 window.location.href = '/login'; } }, timeout); // 也可以设置一个检查函数,周期性地检查用户是否应该被重定向 setInterval(function() { if ((Date.now() - lastActivity) >= timeout) { window.location.href = '/login'; } }, 1000); ``` 在使用上述代码时需要注意以下几点: - 页面加载时,应立即设置最后操作时间。 - 应当考虑用户体验,适当调整超时时间。 - 对于长时间运行的操作,需要在操作开始和结束时手动调用`updateLastActivity`函数,以避免误判用户无操作。 - 该逻辑应该放在全局范围内,避免在某些页面(如登录页面)中执行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值