热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自定义WiWiz认证页面代码实现:支持Cookie与自动登录功能优化

针对WiWiz自带认证页面的不便之处,特别是缺乏Cookie支持导致每次认证需手动输入信息的问题,本文介绍了通过自定义认证页面代码实现支持Cookie与自动登录功能的方法,显著提升了用户体验。具体实现了记录和处理用户认证信息的功能,确保了认证过程的便捷性和高效性。

一直觉得Wiwiz自带的认证页面不太方便,尤其是不支持COOKIE,这样每次认证时都需要手动输入认证信息,会比较麻烦。
我利用自定义认证页面的定制代码,加入了记录和处理COOKIE的功能,用Javascript实现的。
这里分享给大家,谁需要请拿去用吧。

认证页面效果图:

认证页面HTML代码:

  
  1. <html> 
  2. <head> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  4. <meta http-equiv="Pragma" content="no-cache"> 
  5. <meta http-equiv="Cache-Control" content="no-cache"> 
  6. <meta name="viewport" content="user-scalable=no,  />   
  7.   
  8.  
  9. <script src="/as/AuthPageScript.js">script> 
  10. <script> 
  11.  
  12.  
  13. /* 读写COOKIE的函数 */ 
  14. function SetCOOKIE(name,value) { 
  15.     var Days = 180
  16.     var exp  = new Date(); 
  17.     exp.setTime(exp.getTime() + Days*24*60*60*1000); 
  18.     document.COOKIE = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); 
  19.  
  20. function getCOOKIE(name) { 
  21.     var arr = document.COOKIE.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); 
  22.     if(arr != null)  
  23.         return unescape(arr[2]);  
  24.     return ""; 
  25.  
  26. /* 用于在认证时记录COOKIE */ 
  27. function recordCOOKIE() { 
  28.     if(document.getElementById("remember").checked == false) 
  29.         return; 
  30.     else { 
  31.         var u = document.getElementById("username").value; 
  32.         var p = document.getElementById("pswd").value; 
  33.          
  34.         SetCOOKIE("wifi-user", u); 
  35.         SetCOOKIE("wifi-pswd", p); 
  36.     } 
  37.  
  38. /* 页面初始化是读入COOKIE并自动按下认证按钮 */ 
  39. function doInit() { 
  40.     var u = getCOOKIE("wifi-user"); 
  41.     var p = getCOOKIE("wifi-pswd"); 
  42.      
  43.     if(u != "") { 
  44.         document.getElementById("username").value = u; 
  45.         document.getElementById("pswd").value = p
  46.          
  47.         document.getElementById("login").click(); 
  48.     } 
  49.   
  50. /* 回调函数。“获取验证码”按钮按下后,将自动调用此函数。可根据code值自行改写该函数。 */ 
  51. function WiwizSmsVerifyMsg(code) { 
  52.     if      (code == "-1") { 
  53.         alert("手机号码不可为空!"); 
  54.     } else if(code == "0") { 
  55.         alert("验证码已通过短信发送至您的手机,请注意查收。然后请在认证页面输入验证码。"); 
  56.     } else if(code == "1") { 
  57.         alert("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。"); 
  58.     } else if(code == "2") { 
  59.         alert("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。"); 
  60.     } else if(code == "3") { 
  61.         alert("该手机号码不允许进行验证。如有疑问请您联系热点管理员。"); 
  62.     } else if(code == "4") { 
  63.         alert("手机号码验证过于频繁,请稍后再试。"); 
  64.     } else if(code == "5") { 
  65.         alert("该手机号码进行验证次数已超过今日上限。"); 
  66.     } else if(code == "6") { 
  67.         alert("热点认证服务已暂停,不可进行手机验证。"); 
  68.     } else if(code == "7") { 
  69.         alert("该热点手机验证次数已超过配额。请联系热点管理员。"); 
  70.     } else if(code == "8") { 
  71.         alert("请求已超时,请刷新认证页面。"); 
  72.     } else if(code == "9") { 
  73.         alert("请使用上一次通过短信接收到的验证码。"); 
  74.     } else if(code == "99") { 
  75.         alert("验证短信发送失败。请检查手机号码的有效性,或联系热点管理员。"); 
  76.     } else if(code == "999") { 
  77.         alert("系统异常,验证短信发送失败。请联系热点管理员。"); 
  78.     } else { 
  79.         alert("系统异常。请联系热点管理员。"); 
  80.     } 
  81.   
  82. /* 回调函数。“认证”按钮按下后,如报错将自动调用此函数。可根据code值自行改写该函数。 */ 
  83. function WiwizAuthPageError(code) { 
  84.     if       (code == 1) { 
  85.         alert("您无法使用此网络,除非您认同此协议条款。"); 
  86.     } else if(code == 2) { 
  87.         alert("请输入用户名。"); 
  88.     } else if(code == 3) { 
  89.         alert("用户名或密码错误。"); 
  90.     } else if(code == 4) { 
  91.         alert("电子招待券无效。"); 
  92.     } else if(code == 6) { 
  93.         alert("超过最大在线用户数。"); 
  94.     } else if(code == 7) { 
  95.         alert("请输入手机号码。"); 
  96.     } else if(code == 32) { 
  97.         alert("账户存在异常,暂时锁定中。"); 
  98.     } else if(code == 35) { 
  99.         alert("手机验证码错误或已超时。"); 
  100.     } else { 
  101.         alert("未知错误。错误码:"+ code); 
  102.     } 
  103. script> 
  104. head> 
  105. <body onload="doInit();"> 
  106.   
  107. <form name="myform" id="myform" action="" method="post">  
  108.   
  109. <center> 
  110.  
  111. <table width="320" bgcolor="#ffffff"> 
  112. <tr><td align="center"> 
  113. <br> 
  114. <table width="100%" cellspacing="2" cellpadding="2"> 
  115. <tr align="center"><td> 
  116. <font size="+2" color="#000000"><b>Wifi无线网络 - 10M带宽 b> font> 
  117. td>tr> 
  118.  
  119. <tr align="center"><td> 
  120. <img src="/as/img/wiwiz.gif">img> 
  121. td>tr> 
  122. table> 
  123.  
  124. <table width="99%" cellspacing="1" cellpadding="2" style="font-size:12px"> 
  125. <tr align="center"> 
  126.     <td width="100%">    
  127.         <table style="font-size:12px" width="98%"> 
  128.         <tr><td> 
  129.         <font color="#ff1111"> 
  130.         本热点为计费WiFi热点。费率为: 
  131.         3元/日 
  132.         50元/月 
  133.         font> 
  134.         td>tr> 
  135.         table> 
  136.          
  137.  
  138.  
  139.         <table style="font-size:12px" width="100%"> 
  140.         <tr> 
  141.         <td align="center"> 
  142.              
  143.             在使用此网络之前,请您详细阅读使用条款。<br> 
  144.             <textarea readonly rows="4" style="width:87%;font-size:12px">条款内容textarea> 
  145.             <br> 
  146.              
  147.             <input name="agree" id="agree" type="checkbox" value="1" checked /> 
  148.             <label for="agree">我完全同意此条款的内容。label> 
  149.         td> 
  150.         tr> 
  151.         table>     
  152.          
  153.     td> 
  154. tr> 
  155. table> 
  156.  
  157. <table width="100%" cellspacing="1" cellpadding="4" style="font-size:12px"> 
  158. <tr align="center"> 
  159.     <td width="100%"> 
  160.      
  161.          
  162.         <table style="font-size:12px"> 
  163.         <tr> 
  164.             <td>用户名: td> 
  165.             <td> 
  166.                 <input name="username" id="username" type="text" value="" style="width:140px" /> 
  167.              
  168.             td> 
  169.         tr> 
  170.         <tr> 
  171.             <td>密码: td> 
  172.             <td> 
  173.                 <input name="pswd" id="pswd" type="password" style="width:140px" /> 
  174.             td> 
  175.         tr> 
  176.         table> 
  177.          
  178.         <input name="remember" id="remember" type="checkbox" value="1" checked /><label for="remember">下次自动登录label> 
  179.         <br><br> 
  180.          
  181.               
  182.         <input type="button" name="login" id="login" value="   立即开始使用此网络   " onclick="recordCOOKIE(); WiwizStartAuth();" /> 
  183.          
  184.         <br> 
  185.         <br> 
  186.         <font size="-1"><b><a href="#" onclick="window.open('http://cp.wiwiz.com/as/s/viewhotspot/?gw_id='+ WiwizGetQueryParameter('gw_id')); return false;">更多信息a>font>b> 
  187.         <br> 
  188.         <br> 
  189.         <font style="font-size:12px"><b> 
  190.         <a href="/as/s/register/" target="_blank">注册a>   |    
  191.         <a href="/as/s/remindpswd/" target="_blank">忘记密码?a> 
  192.         b>font>  
  193.     td> 
  194. tr> 
  195. table> 
  196.  
  197. td>tr>table> 
  198.  
  199. <br> 
  200. center> 
  201.   
  202. form> 
  203. body>html> 

 

本文出自 “野兽技术博客” 博客,请务必保留此出处http://beastwu.blog.51cto.com/5091229/999708


推荐阅读
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • Cookie是一种小型数据文件,由Web服务器生成并存储在用户的浏览器中。当用户再次访问同一服务器时,这些数据可以被重新读取,为用户提供个性化的体验。Cookie在软件测试中具有重要作用,能够帮助测试人员验证会话管理、用户偏好设置等功能的正确性和安全性。通过深入解析Cookie的工作原理及其在不同场景下的应用,本文旨在为软件测试人员提供全面的技术指导。 ... [详细]
  • Spring 中获取 Request 的多种方式及其线程安全性的深入解析
    本文深入探讨了在Spring MVC框架下获取HTTP请求对象的多种方法,详细分析了每种方法的实现原理及其线程安全性,为开发者提供了全面的技术参考。 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • 浏览器中 W3School JavaScript 的 Location 对象详解
    Location对象是浏览器Window对象的一部分,通过`window.location`属性可访问。它包含了当前页面URL的相关信息,如协议、主机名、路径和查询参数等,对于页面导航和URL操作非常有用。 ... [详细]
  • 在2020年8月19日的深度分析中,我们探讨了HTML标签中同时存在`a`标签的`href`和`onclick`属性时的触发顺序问题。此外,还讨论了如何在一个自适应高度的父级`div`中,使两个子`div`中的一个固定高度为300px,另一个自动填充剩余空间的方法。最后,文章详细介绍了JavaScript异步加载的多种实现方式,包括但不限于`async`、`defer`属性以及动态脚本插入技术,为开发者提供了丰富的技术参考。 ... [详细]
  • EasyUI作为一种高效的前端框架,显著简化了JavaScript代码的编写,提升了开发效率。在构建窗口应用程序时,首先需要引入EasyUI所需的JS文件和CSS样式表。由于EasyUI依赖于jQuery,因此还需确保正确加载jQuery库。通过这种方式,开发者能够快速实现界面组件的动态交互与美观布局,为用户提供更加流畅的使用体验。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 在进行前端JavaScript国际化(i18n)的过程中,为了从cookie中获取语言信息并动态加载相应资源,我决定将语言检测逻辑和i18n初始化代码直接嵌入到index页面中,使用了Velocity模板引擎的语法。这种方法不仅简化了代码结构,还提高了语言切换的灵活性和响应速度。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 为了确保用户在Web页面回退后重新登录以保障账户安全,可以在JSP页面中添加以下元标签:``。这将防止浏览器缓存页面内容,从而避免用户通过浏览器的后退按钮访问已登录的页面。此外,还可以结合会话管理机制,如设置会话超时时间、使用安全的会话标识符传输方式(如HTTPS),以及在用户退出或长时间不活动后强制重新认证,进一步增强账户的安全性。 ... [详细]
  • 本文将详细介绍如何利用JMeter高效执行API接口测试,涵盖JMeter的基础介绍、安装方法、中文环境配置、主要元件及其作用域和执行顺序等内容,并分享一系列实用的测试技巧,帮助读者全面掌握JMeter接口测试的全过程。 ... [详细]
  • 全面解析:安检利器的高效应用与技术特点
    全面解析:安检利器的高效应用与技术特点 ... [详细]
author-avatar
虚假爱情2502873563_918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有