ubnt解决方案
查看: 27167|回复: 130

[个人实战] wiwiz认证页面源码 - 招待券与短信验证 两种认证可切换

  [复制链接]
回帖奖励 433 个金币 回复本帖可获得 1 个金币奖励! 每人限 1 次(中奖概率 80%)

774

回帖

6099

积分

1305 小时

在线时间

中校

技术达人

注册时间
2011-4-12
金币
4969 个
威望
21 个
荣誉
3 个
累计签到:32 天
连续签到:0 天
[LV.50]初入江湖
发表于 2013-1-15 11:42 |显示全部楼层
本帖最后由 tiida2011 于 2013-1-19 21:12 编辑

最近客户出了一个难题,希望同时使用手机号码短信验证 和 电子招待券 两种认证方式,而且希望可以让客户二选一,也就是既能用招待券认证,也可以用手机号码认证。这样店内的人和有招待券的客人和只希望用手机号码上网的人都能进行认证。
难的地方在于wiwiz本身虽然支持同时设置这两种认证方式,但如果同时启用,认证的时候就必须同时满足这两个认证条件,而不能二选一。
经过一个朋友的帮助,终于用自己写的认证页面代码解决了这个问题。
原理是,先在Wiwiz后台设置一个默认的电子招待券(我叫它万能招待券),和一个万能手机验证码。
当用户选择电子招待券认证模式时,就用Javascript随便设置一个手机号,手机验证码设为之前设置的万能验证码,并且在页面上隐藏手机号和万能验证码。反过来,如果用户选择手机号码认证模式时,就用Javascript随便设置之前设置的万能招待券并隐藏。

认证页面截屏如下:
  
认证页面代码如下:
(代码中的MAGIC_VOUCHER和MAGIC_MOBILE_CODE就是在Wiwiz后台设置的万能招待券和万能手机验证码)
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <meta http-equiv="Content-Language" content="zh">
  5. <meta http-equiv="Pragma" content="no-cache">
  6. <meta http-equiv="Cache-Control" content="no-cache">
  7. <meta name="viewport" content="user-scalable=no, width=device-width" />  
  8. <style type="text/css">

  9. <!--
  10. h1 { color: #841c39; }
  11. td { color: #841c39; }
  12. { color: #841c39; }
  13. a {color: #841c39;}

  14. -->
  15. </style>

  16. <!-- 必须引入AuthPageScript.js -->
  17. <script src="/as/AuthPageScript.js"></script>
  18. <script>
  19. /* 自定义部分 */
  20. var MAGIC_VOUCHER = "MagicVoucher3C3f3eollpoi0OC";        
  21. var MAGIC_MOBILE = "13011112222";
  22. var MAGIC_MOBILE_CODE = "MagicMobileCode9c3iIl10OA";

  23. function $(id) {
  24.         return document.getElementById(id);
  25. }

  26. /* 用电子招待券认证 */
  27. function onVoucher() {
  28.         $("spVoucher").style.display = "";
  29.         $("spMobile").style.display = "none";
  30.         
  31.         $("linkVoucher").style.fontWeight = "bold";
  32.         $("linkMobile").style.fontWeight = "normal";
  33.         $("spMarkVoucher").innerHTML = "&#9654;";
  34.         $("spMarkMobile").innerHTML = "";
  35.         
  36.         $("voucher").value = "";
  37.         $("phonenum").value = MAGIC_MOBILE;
  38.         $("phonecode").value = MAGIC_MOBILE_CODE;
  39. }

  40. /* 用手机号码(短信验证)认证 */
  41. function onMobile() {
  42.         $("spVoucher").style.display = "none";
  43.         $("spMobile").style.display = "";

  44.         $("linkVoucher").style.fontWeight = "normal";
  45.         $("linkMobile").style.fontWeight = "bold";
  46.         $("spMarkVoucher").innerHTML = "";
  47.         $("spMarkMobile").innerHTML = "&#9654;";        

  48.         $("voucher").value = MAGIC_VOUCHER;
  49.         $("phonenum").value = "";
  50.         $("phonecode").value = "";
  51. }

  52. /* 响应回车键 */
  53. document.onkeydown = function(e){
  54.         if(!e) e = window.event;
  55.         if((e.keyCode || e.which) == 13){
  56.                 $("login").click(); return false;        //触发认证按钮
  57.         }
  58. }

  59. /* 以下为需要对接Wiwiz所需的函数 */
  60. /* 回调函数。“获取验证码”按钮按下后,将自动调用此函数。可根据code值自行改写该函数。 */
  61. function WiwizSmsVerifyMsg(code) {
  62.         if      (code == "-1") {
  63.                 alert("手机号码不可为空!");
  64.         } else if(code == "0") {
  65.                 alert("验证码已通过短信发送至您的手机,请注意查收。然后请在认证页面输入验证码。");
  66.         } else if(code == "1") {
  67.                 alert("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。");
  68.         } else if(code == "2") {
  69.                 alert("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。");
  70.         } else if(code == "3") {
  71.                 alert("该手机号码不允许进行验证。如有疑问请您联系热点管理员。");
  72.         } else if(code == "4") {
  73.                 alert("手机号码验证过于频繁,请稍后再试。");
  74.         } else if(code == "5") {
  75.                 alert("该手机号码进行验证次数已超过今日上限。");
  76.         } else if(code == "6") {
  77.                 alert("热点认证服务已暂停,不可进行手机验证。");
  78.         } else if(code == "7") {
  79.                 alert("该热点手机验证次数已超过配额。请联系热点管理员。");
  80.         } else if(code == "8") {
  81.                 alert("请求已超时,请刷新认证页面。");
  82.         } else if(code == "9") {
  83.                 alert("请使用上一次通过短信接收到的验证码。");
  84.         } else if(code == "99") {
  85.                 alert("验证短信发送失败。请检查手机号码的有效性,或联系热点管理员。");
  86.         } else if(code == "999") {
  87.                 alert("系统异常,验证短信发送失败。请联系热点管理员。");
  88.         } else {
  89.                 alert("系统异常。请联系热点管理员。");
  90.         }
  91. }

  92. /* 回调函数。“认证”按钮按下后,如报错将自动调用此函数。可根据code值自行改写该函数。 */
  93. function WiwizAuthPageError(code) {
  94.         if       (code == 1) {
  95.                 alert("您无法使用此网络,除非您认同此协议条款。");
  96.         } else if(code == 2) {
  97.                 alert("请输入用户名。");
  98.         } else if(code == 3) {
  99.                 alert("用户名或密码错误。");
  100.         } else if(code == 4) {
  101.                 alert("电子招待券无效。");
  102.         } else if(code == 6) {
  103.                 alert("超过最大在线用户数。");
  104.         } else if(code == 7) {
  105.                 alert("请输入手机号码。");
  106.         } else if(code == 8) {
  107.                 alert("热点已停用。");
  108.         } else if(code == 32) {
  109.                 alert("账户存在异常,暂时锁定中。");
  110.         } else if(code == 35) {
  111.                 alert("手机验证码错误或已超时。");
  112.         } else {
  113.                 alert("未知错误。错误码:"+ code);
  114.         }
  115. }
  116. </script>
  117. </head>
  118. <!-- Body Onload 事件调用onVoucher() -->
  119. <body topmargin="0" leftmargin="0" onload="onVoucher();">

  120. <form name="myform" id="myform" action="" method="post" onsubmit="alert(0);">

  121. <table width="100%" cellspacing="1" cellpadding="4" style="font-size:14px" bgcolor="#FFFFFF">
  122. <tr align="center">
  123.         <td width="100%">
  124.                 <!-- 商户LOGO -->
  125.                 <img src=/as/s/uploaduserfile/?dl=0&fn=13c3970f650.png />
  126.                 <br><br>
  127.                
  128.                 <span id="linkVoucher" style="font-weight:bold; font-size:14px"><span id="spMarkVoucher">&#9654;</span><a href="#" onclick="onVoucher();return false;">用电子招待券认证</a></span>     
  129.                 <span id="linkMobile" style="font-weight:normal; font-size:14px"><span id="spMarkMobile"></span><a href="#" onclick="onMobile();return false;">用手机号码认证</a></span>
  130.                 <br><br>               
  131.                
  132.                 <span id="spVoucher" style="display:">
  133.                 <br>
  134.                 <table style="font-size:14px">
  135.                 <tr>
  136.                         <td><b>电子招待券: </b></td>
  137.                         <td>
  138.                                 <!-- 参数: voucher 代表电子招待券 -->
  139.                                 <input name="voucher" id="voucher" type="text" style="width:140px" />               
  140.                         </td>
  141.                 </tr>
  142.                 <tr>
  143.                         <td colspan="2" align="center"><font style="font-size:12px;color:#666666">请向店员索取上网用电子招待券</font></td>
  144.                 </tr>
  145.                 </table>
  146.                 </span>
  147.         
  148.                 <span id="spMobile" style="display:none">
  149.                 <table style="font-size:14px">
  150.                 <tr>
  151.                         <td><b>手机号码: </b></td>
  152.                         <td>
  153.                                 <!-- 参数: phonenum 代表手机号码 -->
  154.                                 <input name="phonenum" id="phonenum" type="text" value="" style="width:140px" />
  155.                         </td>
  156.                 </tr>
  157.                 <tr>
  158.                         <td></td>
  159.                         <td>
  160.                                 <!-- 用于取得发送手机验证码短信的按钮,onclick事件必须调用WiwizSmsVerify()函数
  161.                                     WiwizSmsVerify()参数说明:
  162.                                     参数1(必须): 手机号码
  163.                                     参数2(必须): HotSpot ID
  164.                                  -->
  165.                                 <input type="button" value="获取验证码" onclick="WiwizSmsVerify(document.getElementById('phonenum').value, WiwizGetQueryParameter('gw_id'));" />
  166.                         </td>
  167.                 </tr>
  168.                 <tr>
  169.                         <td><b>手机验证码: </b></td>
  170.                         <td>
  171.                         <!-- 参数: phonecode 代表手机验证码 -->
  172.                         <input name="phonecode" id="phonecode" type="text" value="" style="width:140px" />
  173.                         </td>
  174.                 </tr>
  175.                 <tr>
  176.                         <td colspan="2" align="center"><font style="font-size:12px;color:#666666">验证码将通过短信发送至手机</font></td>
  177.                 </tr>               
  178.                 </table>
  179.                 </span>
  180.                 <br>
  181.                
  182.                 <input type="button" name="login" id="login" value="   认证   " onclick="WiwizStartAuth();" />
  183.                 <br><br>
  184.         </td>
  185. </tr>
  186. </table>

  187. </form>
  188. </body></html>
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x

评分

2

查看全部评分

398

回帖

1704

积分

370 小时

在线时间

上尉

注册时间
2012-7-18
金币
1244 个
威望
2 个
荣誉
0 个
累计签到:73 天
连续签到:0 天
[LV.100]试剑无线
发表于 2013-1-15 11:47 |显示全部楼层

回帖奖励 +1 个金币

楼主这个真好。我也做过wiwiz认证页面,不过自己写代码的功力不够。
我也分享一个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
今天很热啊
回复

使用道具 举报

1369

回帖

2916

积分

883 小时

在线时间

少校

注册时间
2012-4-21
金币
1412 个
威望
1 个
荣誉
0 个
累计签到:693 天
连续签到:0 天
[LV.730]常住居民
发表于 2013-1-15 12:13 |显示全部楼层

回帖奖励 +1 个金币

这个属于 钓鱼  的嘛
回复

使用道具 举报

197

回帖

1103

积分

221 小时

在线时间

上尉

注册时间
2011-6-14
金币
875 个
威望
0 个
荣誉
0 个
累计签到:103 天
连续签到:0 天
[LV.200]无线新星
发表于 2013-1-15 12:41 |显示全部楼层

回帖奖励 +1 个金币

都很不错,准备实战下
回复

使用道具 举报

268

回帖

780

积分

228 小时

在线时间

中尉

注册时间
2011-6-27
金币
448 个
威望
3 个
荣誉
1 个
累计签到:10 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2013-1-15 12:44 |显示全部楼层
猪么猪么难呢?
回复

使用道具 举报

380

回帖

3914

积分

191 小时

在线时间

少校

注册时间
2012-12-10
金币
3515 个
威望
0 个
荣誉
0 个
累计签到:355 天
连续签到:0 天
[LV.365]无线熟人
发表于 2013-1-15 13:00 |显示全部楼层
都很不错:)
回复

使用道具 举报

52

回帖

466

积分

185 小时

在线时间

少尉

注册时间
2009-10-26
金币
370 个
威望
1 个
荣誉
0 个
累计签到:47 天
连续签到:0 天
[LV.50]初入江湖
发表于 2013-1-15 13:39 |显示全部楼层
严重支持,有机会一定试试
回复

使用道具 举报

1104

回帖

1714

积分

1341 小时

在线时间

上尉

注册时间
2011-2-28
金币
412 个
威望
2 个
荣誉
0 个
累计签到:28 天
连续签到:0 天
[LV.50]初入江湖
发表于 2013-1-15 14:24 |显示全部楼层

回帖奖励 +1 个金币

很厉害啊,什么样子的路由呀、
回复

使用道具 举报

110

回帖

824

积分

385 小时

在线时间

中尉

注册时间
2012-1-8
金币
674 个
威望
0 个
荣誉
0 个
累计签到:2 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2013-1-15 14:29 |显示全部楼层

回帖奖励 +1 个金币

严重支持,有机会一定试试
回复

使用道具 举报

111

回帖

1157

积分

192 小时

在线时间

上尉

注册时间
2011-6-18
金币
999 个
威望
1 个
荣誉
0 个
累计签到:1 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2013-1-15 14:51 |显示全部楼层

回帖奖励 +1 个金币

楼主好功力
回复

使用道具 举报

45

回帖

662

积分

97 小时

在线时间

中尉

注册时间
2012-9-14
金币
607 个
威望
0 个
荣誉
0 个
累计签到:61 天
连续签到:0 天
[LV.100]试剑无线
发表于 2013-1-15 15:02 |显示全部楼层

回帖奖励 +1 个金币

很厉害的样子,支持下
回复

使用道具 举报

头像被屏蔽

92

回帖

606

积分

68 小时

在线时间

禁止发言

注册时间
2012-12-27
金币
495 个
威望
1 个
荣誉
0 个
累计签到:46 天
连续签到:0 天
[LV.50]初入江湖
发表于 2013-1-15 15:06 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

站点统计 | Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

GMT+8, 2024-12-20 02:14

返回顶部 返回列表