ubnt解决方案
查看: 14918|回复: 55

[资料分享] [教程] 超简易的网页认证/扫码上网两用认证方案(wiwiz实现)

[复制链接]

398

回帖

1704

积分

370 小时

在线时间

上尉

注册时间
2012-7-18
金币
1244 个
威望
2 个
荣誉
0 个
累计签到:73 天
连续签到:0 天
[LV.100]试剑无线
发表于 2014-5-26 14:39 |显示全部楼层
本帖最后由 brickall 于 2014-5-27 17:45 编辑

这个方案是用之前给某连锁酒店做的认证系统改的。
既能实现网页认证推送页面广告,通过客人自己输入身份证号尾号上网,也能实现入住客人扫码自动上网。
目前反馈效果不错。这里无偿把经验分享给大家。

以下是实现步骤:
第1步,设置好wiwiz热点,不会安装的去wiwiz官网看教程。注意一定要启用电子招待券和自定义认证页面两项功能。

第2步,在wiwiz后台添加一个电子招待券,最好设的长一些(30字符以内)。我这里的例子是:wifivoucher999
把招待券的内容先做base64编码,然后再做url编码,得到转码以后的文字:d2lmaXZvdWNoZXI5OTk%3D
如果自己不会转码,可以用附件里的文件Base64UrlEncode.rar。

第3步,在百度里随便找一个二维码生成器,用以下网址生成二维码:
http://www.baidu.com/?a=d2lmaXZvdWNoZXI5OTk%3D
可以用你自己转码后的招待券替换“a=”后面的部分。
我用的二维码图片是:


第4步,在wiwiz后台里把“认证页面类型”设置为“自定义认证页面HTML”。
把“自定义HTML”按以下的内容填写:
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <meta http-equiv="Content-Language" content="zh">
  6. <meta http-equiv="Pragma" content="no-cache">
  7. <meta http-equiv="Cache-Control" content="no-cache">
  8. <meta name="viewport" content="width=device-width; initial-scale=1.0">

  9. <style type="text/css">
  10. .fontfamily {font-family: Microsoft YaHei, SimHei; color: #043307}

  11. .footerlink {font-family: Microsoft YaHei, SimHei; color: #ffffff; text-decoration:none;}

  12. .wiwizinputbox {
  13. height:32px;

  14. font: 18px/1.25 Microsoft YaHei, SimHei, arial, \5b8b\4f53;
  15. margin-top:10px;
  16. border:3px #d7d7d7 solid; background:#fff;
  17. }

  18. .wiwizbtn1 {
  19. margin-top:10px;
  20. background-color: #ffffff;
  21. -moz-border-radius: 0px;
  22. -webkit-border-radius: 0px;
  23. border-radius: 0px;
  24. /*IE 7 AND 8 DO NOT SUPPORT BORDER RADIUS*/
  25. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#736db4', endColorstr = '#404288');
  26. /*INNER ELEMENTS MUST NOT BREAK THIS ELEMENTS BOUNDARIES*/
  27. /*Element must have a height (not auto)*/
  28. /*All filters must be placed together*/
  29. -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr = '#736db4', endColorstr = '#404288')";
  30. /*Element must have a height (not auto)*/
  31. /*All filters must be placed together*/
  32. background-image: -moz-linear-gradient(top, #736db4, #404288);
  33. background-image: -ms-linear-gradient(top, #736db4, #404288);
  34. background-image: -o-linear-gradient(top, #736db4, #404288);
  35. background-image: -webkit-gradient(linear, center top, center bottom, from(#736db4), to(#404288));
  36. background-image: -webkit-linear-gradient(top, #736db4, #404288);
  37. background-image: linear-gradient(top, #736db4, #404288);
  38. -moz-background-clip: padding;
  39. -webkit-background-clip: padding-box;
  40. background-clip: padding-box;
  41. /*Use "background-clip: padding-box" when using rounded corners to avoid the gradient bleeding through the corners*/
  42. /*--IE9 WILL PLACE THE FILTER ON TOP OF THE ROUNDED CORNERS--*/
  43. color: #ffffff;
  44. height: 38px;

  45. font-family:Microsoft YaHei;
  46. font-size: 16px;
  47. cursor: pointer;
  48. }

  49. /* PC */
  50. #content {
  51.         width: 75%;
  52.         padding: 0% 0%;
  53. }

  54. #dvTerms {
  55.         position: absolute; width:66%; top:15%;left:17%;
  56. }

  57. #header {
  58.         float:left;
  59.         width:100%;
  60. }

  61. #leftbar {
  62.         float:left;
  63.         width:70%;
  64. }

  65. #rightbar {
  66.         float:right;
  67.         width:30%;
  68. }

  69. #footer {
  70.         float:left;
  71.         width:100%;
  72. }

  73. #myImg {
  74.         width: auto;
  75.         max-width: 100%;
  76. }

  77. [url=home.php?mod=space&uid=122441]@media[/url] screen and (max-width: 1024px) {
  78.         #content {
  79.                 width: 100%;
  80.                 padding: 0px 0px;
  81.         }
  82. }

  83. /* Mobile */
  84. @media screen and (max-width: 600px) {
  85.         #content {
  86.                 width: 100%;
  87.                 padding: 0px 0px;
  88.         }
  89.         
  90.         #dvTerms {
  91.                 width: 98%;
  92.                 left: 1%;
  93.         }

  94. /*        #header {
  95.                 float:left;        
  96.                 width:100%;
  97.         }*/

  98.         #leftbar {
  99.                 float:left;
  100.                 width:100%;
  101.         }

  102.         #rightbar {
  103.                 float:left;
  104.                 width:100%;
  105.         }

  106. /*        #footer {
  107.                 float:left;
  108.                 width:100%;
  109.         }*/
  110.         
  111.         #myImg {
  112.                 width: 100%;
  113.                 max-width: 100%;
  114.         }
  115. }
  116. </style>

  117. <title> 免费WiFi </title>
  118. <script src="../../js/common.js?v=20130214"></script>
  119. <script src="../../js/html5.js"></script>
  120. <script src="../../js/jquery.min.js"></script>
  121. <script src="../../js/jquery.placeholder.min.js"></script>
  122. <!-- css3-mediaqueries.js for IE less than 9 -->
  123. <!--[if lt IE 9]>
  124. <script src="../../js/css3-mediaqueries.js"></script>
  125. <![endif]-->

  126. <script type="text/javascript">
  127. $(function() {
  128. $('input, textarea').placeholder();
  129. });
  130. </script>

  131. <script src="/as/AuthPageScript.js"></script>
  132. <script>
  133. eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('l E(m,N){b(m==v)m="";k M=W V("(^|&)"+N+"=([^&]*)(&|$)","i");k r=m.X(m.o("?")+1).U(M);b(r!=v)q L(r[2]);q v}l 1b(){k P=E(Q.17.Y,"m");k B=E(P,"a");b(B!=v){b(h.j(\'O\')){h.j(\'O\').1a=L(R(B));h.j(\'15\').14.Z=\'10\';h.j("T").S()}}}l R(g){k t="19+/=";k s,x,H,D,I,z,y,p,i=0,u=0,C="",n=[];b(!g){q g}g+=\'\';11{D=t.o(g.w(i++));I=t.o(g.w(i++));z=t.o(g.w(i++));y=t.o(g.w(i++));p=D<<18|I<<12|z<<6|y;s=p>>16&A;x=p>>8&A;H=p&A;b(z==K){n[u++]=G.F(s)}d b(y==K){n[u++]=G.F(s,x)}d{n[u++]=G.F(s,x,H)}}1c(i<g.1o);C=n.1r(\'\');q C}l 1q(c){b(c=="-1"){f("手机号码不可为空!")}d b(c=="0"){f("验证码已通过短信发送至您的手机,请注意查收。然后请在认证页面输入验证码。")}d b(c=="1"){f("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。")}d b(c=="2"){f("该热点不允许进行手机号码验证。如有疑问请您联系热点管理员。")}d b(c=="3"){f("该手机号码不允许进行验证。如有疑问请您联系热点管理员。")}d b(c=="4"){f("手机号码验证过于频繁,请稍后再试。")}d b(c=="5"){f("该手机号码进行验证次数已超过今日上限。")}d b(c=="6"){f("热点认证服务已暂停,不可进行手机验证。")}d b(c=="7"){f("该热点手机验证次数已超过配额。请联系热点管理员。")}d b(c=="8"){f("请求已超时,请刷新认证页面。")}d b(c=="9"){f("请使用上一次通过短信接收到的验证码。")}d b(c=="1m"){f("验证短信发送失败。请检查手机号码的有效性,或联系热点管理员。")}d b(c=="1n"){f("系统异常,验证短信发送失败。请联系热点管理员。")}d{f("系统异常。请联系热点管理员。")}1g("h.j(\'1f\').1e = J",1d)}l 1h(c){b(c==1){f("您无法使用此网络,除非您认同此协议条款。")}d b(c==2){f("请输入用户名。")}d b(c==3){f("用户名或密码错误。")}d b(c==4){f("电子招待券无效。")}d b(c==6){f("超过最大在线用户数。")}d b(c==7){f("请输入手机号码。")}d b(c==8){f("热点已停用。")}d b(c==1j){f("账户存在异常,暂时锁定中。")}d b(c==1k){f("手机验证码错误或已超时。")}d b(c==1l){f("该手机号码不允许进行验证。如有疑问请您联系热点管理员。")}d b(c==1i){f("该手机号码进行验证次数已超过今日上限。")}d{f("未知错误。错误码:"+c)}}h.1s=l(e){b(!e)e=Q.1t;b((e.1u||e.1p)==13){h.j("T").S();q J}}',62,93,'|||||||||||if|code|else||alert|data|document||getElementById|var|function|url|tmp_arr|indexOf|bits|return||o1|b64|ac|null|charAt|o2|h4|h3|0xff|_auto_voucher|dec|h1|getQueryParameter|fromCharCode|String|o3|h2|false|64|decodeURIComponent|reg|name|voucher|_url|window|base64_decode|click|login|match|RegExp|new|substr|href|display|none|do|||style|dvVoucher||location||ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|value|myOnLoad|while|900|disabled|sms|setTimeout|WiwizAuthPageError|37|32|35|36|99|999|length|which|WiwizSmsVerifyMsg|join|onkeydown|event|keyCode'.split('|'),0,{}))

  134. </script>
  135. </head>
  136. <body onbeforeunload="onBeforeUnload();" onunload="onUnload();" bgcolor="#FFFFFF" background="" style="margin:0px" onload="myOnLoad();">
  137. <form>

  138. <center>
  139. <div id="content">

  140. <div id="header" style="margin: 0px; margin-top:0px; padding-top:10px; padding-bottom:10px; text-align:left; line-height:32px; background-color:#a0a0a0; ">

  141. <span style="width:40px"> </span> <font class="fontfamily" style="font-size:32px; font-weight:bold; color:#ffffff">免费WiFi</font>



  142. </div>



  143. <div id="leftbar">
  144. <div style="margin:5px; width:auto;">
  145. <img src="../../img/wiwiz.gif" id="myImg"></img>
  146. </div>

  147. <font class="fontfamily" style="font-size:16px"><p><span style="font-weight: bold;">本酒店免费向入住宾客提供WiFi网络。</span>

  148. <font color="#ff4400">电子招待券为入住登记人身份证的后4位</font>
  149. </font>
  150. </div>


  151. <div id="rightbar">


  152. <div style="margin:5px; width:auto; background-color: #f3f3f3">



  153. <table border="0" cellspacing="1" cellpadding="1" class="fontfamily" style="font-size:14px; padding:11px" width="100%">


  154.         
  155. <tr align="center">
  156.         <td>        
  157.                 <input name="agree" id="agree" type="checkbox" value="1" checked />
  158.                 <label for="agree">我完全同意<a href="#" onclick="document.getElementById('dvTerms').style.display=''; return false;">此条款的内容</a></label>
  159.                
  160. <DIV STYLE="display:none; height:395px; background-color:#cccccc; padding-top:4px; border:1px #777777 solid;" id="dvTerms">
  161. <div style="width:75%; float:left; text-align:left;">   <b>请详细阅读使用条款</b> </div>
  162. <div style="width:25%; float:right; text-align:right;"><b>[ <a href="#" onclick="document.getElementById('dvTerms').style.display='none'; return false;" style="text-decoration:none; color:#043307">关闭</a> ]   </b></div>
  163. <textarea style="width:98%; height:360px; font-size:14px">本热点仅用于分享网络连接。
  164. 用户了解服务条件与其风险并自愿使用本WiFi无线网络热点以接入Internet。

  165. 我们维护网络安全性并保证用户隐私安全。不会采用技术手段监听、采集用户数据。

  166. 用户对使用本Wifi热点所引起的任何经济、政治、法律等责任负完全责任。

  167. 我们尽力维持服务的品质及稳定性,如遇不可抗力导致服务中断,我们采取一切必要措施减少用户损失。

  168. 禁止一切不良用途。一旦发现立即终止连接。</textarea>

  169. </DIV>
  170.                
  171.         </td>
  172. </tr>
  173.         

  174. <tr align="center">
  175.         <td>
  176.                 <div id="dvVoucher" style="width:100%; display:">
  177.                 <input name="voucher" id="voucher" placeholder="输入电子招待券" type="text" value="" style="width:90%" class="wiwizinputbox" />
  178.                 </div>
  179.         </td>
  180. </tr>



  181. <tr align="center">
  182. <td>
  183. <input type="button" name="login" id="login" value="  认证上网  " onclick="WiwizStartAuth();" style="width:90%"  class="wiwizbtn1" />
  184. </td>
  185. </tr>
  186. <tr><td align="center">

  187. </td></tr>
  188. </table>





  189. </div>

  190. </div>



  191. <div id="footer" style="margin-left:0px; margin-top: 10px; padding-top:10px; background-color:#808080; height:60px; line-height:26px;">
  192. <center>


  193. <b>
  194. <font style="font-size:14px" class="footerlink">
  195. <a href="/as/s/menu/" target="_blank" class="footerlink">用户菜单</a>  |  
  196. <a href="http://www.wiwiz.com" target="_blank" class="footerlink">首页</a>  |  
  197. <a href="http://www.wiwiz.com/zh/faq" target="_blank" class="footerlink">帮助</a>  |  
  198. <a href="http://www.wiwiz.com/zh/privacy" target="_blank" class="footerlink">隐私保护</a>  |
  199. <a href="http://www.wiwiz.com/zh/about-2" target="_blank" class="footerlink">关于</a>


  200. </b>

  201. <a href="http://www.wiwiz.com" target="_blank" class="footerlink">powered by <b>Wiwiz.com</b></a>


  202. </font>

  203. </center>
  204. </div>


  205. </div>
  206. </center>

  207. <script>
  208.         document.getElementById("encrypt").checked = true;
  209. </script>

  210. </form>
  211. </body>
  212. </html>
复制代码
p.s. 这个网页是屏宽自适应的,手机,电脑,平板都可以用。你自己可以按实际需要替换页面里面的显示内容。

本帖子中包含更多资源

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

x

点评

看了你的帖子后来了灵感,把我的614v9也改成了和你一样的功能网页认证加扫码上网.还比你多了个认证功能关注微信后一键上网了,噢耶  发表于 2014-5-30 23:45
技术贴!很不错  发表于 2014-5-27 09:19

评分

1

查看全部评分

今天很热啊

398

回帖

1704

积分

370 小时

在线时间

上尉

注册时间
2012-7-18
金币
1244 个
威望
2 个
荣誉
0 个
累计签到:73 天
连续签到:0 天
[LV.100]试剑无线
发表于 2014-11-6 20:50 |显示全部楼层
shmousetiger 发表于 2014-6-21 00:02
同求固件,希望有人放出来

不需要固件的
今天很热啊
回复

使用道具 举报

189

回帖

986

积分

124 小时

在线时间

中尉

注册时间
2010-8-2
金币
763 个
威望
0 个
荣誉
0 个
累计签到:65 天
连续签到:0 天
[LV.100]试剑无线
发表于 2014-5-26 14:57 |显示全部楼层
支持。
回复

使用道具 举报

4886

回帖

1万

积分

466 小时

在线时间

上校

灌水天才

注册时间
2013-5-30
金币
8922 个
威望
101 个
荣誉
1 个
累计签到:329 天
连续签到:0 天
[LV.365]无线熟人
发表于 2014-5-26 15:03 |显示全部楼层
不太懂啊。。。。。。小白路过!!!
好啊。。。。。大家
回复

使用道具 举报

318

回帖

894

积分

96 小时

在线时间

中尉

注册时间
2012-7-24
金币
555 个
威望
2 个
荣誉
0 个
累计签到:7 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2014-5-26 15:09 |显示全部楼层
不过 很简洁  收下了。
回复

使用道具 举报

105

回帖

1474

积分

136 小时

在线时间

上尉

随时随地Anywlan

注册时间
2014-3-19
金币
1328 个
威望
2 个
荣誉
1 个
累计签到:138 天
连续签到:0 天
[LV.200]无线新星
发表于 2014-5-26 15:22 |显示全部楼层
能看到源码的东西就是放心
回复

使用道具 举报

6

回帖

61

积分

11 小时

在线时间

新兵上阵

注册时间
2014-5-13
金币
33 个
威望
2 个
荣誉
1 个
累计签到:2 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2014-5-26 15:31 |显示全部楼层
绑定学习!
回复

使用道具 举报

22

回帖

100

积分

45 小时

在线时间

上等兵

注册时间
2009-4-12
金币
73 个
威望
0 个
荣誉
0 个
累计签到:2 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2014-5-26 15:45 |显示全部楼层
不错,收藏了。
回复

使用道具 举报

49

回帖

213

积分

149 小时

在线时间

少尉

注册时间
2012-3-25
金币
148 个
威望
0 个
荣誉
0 个
累计签到:7 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2014-5-26 17:37 |显示全部楼层
新人,不懂,还是帮顶起
回复

使用道具 举报

774

回帖

6099

积分

1305 小时

在线时间

中校

技术达人

注册时间
2011-4-12
金币
4969 个
威望
21 个
荣誉
3 个
累计签到:32 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-5-27 09:14 |显示全部楼层
呵呵,不错。
楼主这个无线方案是怎样的?什么设备?
回复

使用道具 举报

56

回帖

697

积分

195 小时

在线时间

中尉

注册时间
2011-6-5
金币
621 个
威望
0 个
荣誉
0 个
累计签到:32 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-5-27 10:35 |显示全部楼层
技术贴很不错
回复

使用道具 举报

681

回帖

2293

积分

480 小时

在线时间

少校

注册时间
2012-3-19
金币
1507 个
威望
0 个
荣誉
0 个
累计签到:73 天
连续签到:0 天
[LV.100]试剑无线
发表于 2014-5-27 12:48 |显示全部楼层
bucuo bucuo 不粗备用
回复

使用道具 举报

398

回帖

1704

积分

370 小时

在线时间

上尉

注册时间
2012-7-18
金币
1244 个
威望
2 个
荣誉
0 个
累计签到:73 天
连续签到:0 天
[LV.100]试剑无线
发表于 2014-5-27 17:47 |显示全部楼层
你好,肉鸡 发表于 2014-5-26 15:22
能看到源码的东西就是放心

是呀。
这里光说不练的人大有人在
今天很热啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 01:03

返回顶部 返回列表