如果你有一个用Discuz/UCenter构建的网站,还有自己的Wifi基站或热点,那你可以用Wiwiz为你的Wifi热点做一个入口登录页面。当 wifi终端用户连到你的热点时,打开任何网页都会先显示你的wifi登录页面,也就是web认证页面,然后输入他在你的网站的用户名和密码之后才能通过 认证。并且认证之后,浏览器会跳转到网站首页。
效果如下图:

Web认证页面

认证后跳转至网站首页

实现方法如下:
用PHP写web登录页,调用Wiwiz Auth API(需要Wiwiz专业版)。
我的登录页的文件名是myauth.php,将其放置在服务器的discuz根目录上即可。
myauth.php代码如下:

  1. <?php
  2. /*
  3. * 用Discuz(UCenter)用户账号实现Wifi Portal认证(Web认证)
  4. * 调用Wiwiz Auth API
  5. * 作者:tiida_2011@163.com
  6. */
  7. $userkey = "XXXXXXXXXXXXXXXXXX";    //替换为你的Wiwiz User Key
  8. //****************************************************
  9. // Gets incoming parameters
  10. //****************************************************
  11. $pTokencode = $_REQUEST["tokencode"];   // incoming parameter "tokencode"
  12. $pSrvurl = $_REQUEST["srvurl"];     // incoming parameter "srvurl"
  13. session_start();
  14. if($pTokencode != null)
  15. $_SESSION['tokencode'] = $pTokencode;
  16. if($pSrvurl != null)
  17. $_SESSION['srvurl'] = $pSrvurl;
  18. ?>
  19. <html>
  20. <head>
  21. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  22. <meta http-equiv="Content-Language" content="zh">
  23. <meta http-equiv="Pragma" content="no-cache">
  24. <meta http-equiv="Cache-Control" content="no-cache">
  25. <title> Discuz无线网络认证 </title>
  26. </head>
  27. <body>
  28. <form method="post">
  29. <center>
  30. <b><h2>Discuz无线网络</h2><br><br>
  31. 请使用网站账号进行认证<br></b>
  32. 用户名: <input type="text" name="username" />
  33. <br>
  34. 密码: <input type="password" name="password" />
  35. <br>
  36. <input type="submit" name="login" value="登录/认证" />
  37. <br>
  38. </center>
  39. <?php
  40. if(isset($_REQUEST['login'])) { // if "Login" button is clicked
  41. //****************************************************
  42. // Step 1. Do your business. E.g. check user login ...
  43. //****************************************************
  44. define('UC_CONNECT', 'mysql');  // 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen()
  45. // mysql 是直接连接的数据库, 为了效率, 建议采用 mysql
  46. //数据库相关 (mysql 连接时, 并且没有设置 UC_DBLINK 时, 需要配置以下变量)
  47. define('UC_DBHOST', 'localhost');               // UCenter 数据库主机
  48. define('UC_DBUSER', 'root');                    // UCenter 数据库用户名
  49. define('UC_DBPW', '');                          // UCenter 数据库密码
  50. define('UC_DBNAME', 'discuz');                  // UCenter 数据库名称
  51. define('UC_DBCHARSET', 'UTF-8');                // UCenter 数据库字符集
  52. define('UC_DBTABLEPRE', 'discuz.pre_ucenter_'); // UCenter 数据库表前缀
  53. //通信相关
  54. define('UC_KEY', '');               // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
  55. define('UC_API', '');               // UCenter 的 URL 地址, 在调用头像时依赖此常量
  56. define('UC_CHARSET', 'gbk');        // UCenter 的字符集
  57. define('UC_IP', '');                // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
  58. define('UC_APPID', 1);              // 当前应用的 ID
  59. require_once './uc_client/client.php';
  60. if(isset($_POST['login'])) {
  61. list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
  62. if($uid > 0) {
  63. $loginSuccess = true;
  64. } else {
  65. $loginSuccess = false;
  66. }
  67. }
  68. if($loginSuccess == false) {
  69. echo "用户名或密码错误!";   // if user login failed, show an error message
  70. } else {
  71. //****************************************************
  72. // Step 2. Do the pre-auth by calling Wiwiz Auth API
  73. // IMPORTANT: Do this on your server side(ASP, C#, JSP/Servlet, PHP...),
  74. //            but DO NOT do this on your client side (HTML/Javascript)
  75. //****************************************************
  76. // parameter "action" : REQUIRED!
  77. // set it to "1" to authenticate the user
  78. // set it to "0" to block the user
  79. $action = "1";
  80. // parameter "tokencode": REQUIRED!
  81. // set identical to the incoming parameter
  82. $tokencode = $_SESSION['tokencode'];
  83. // parameter "srvurl": REQUIRED!
  84. // set identical to the incoming parameter
  85. $srvurl = $_SESSION['srvurl'];
  86. // parameter "endtime" : OPTIONAL
  87. // Format: yyyy-mm-dd hh:MM:ss  e.g. 2012-05-31 21:39:00
  88. // set this parameter to set the time to close the user's Internet connection
  89. // Note: the value must be url-encoded.
  90. $endtime = "";  //urlencode('2012-05-31 21:39:00');     //设置wifi使用期限
  91. // parameter "postauth" : OPTIONAL
  92. // E.g. http://www.YourDomain.com
  93. // set this parameter to redirect to a specified URL after authenticated.
  94. // Note: the value should be url-encoded.
  95. $postauth = urlencode("http://192.168.1.250/home");     //wifi认证后跳转至网站首页
  96. $parameters = "?wiwiz_auth_api=1&ver=1.0". // parameter "wiwiz_auth_api" and "ver". Fixed value
  97. "&tokencode=". $tokencode . // parameter "tokencode". See above
  98. "&userkey=". $userkey .     // parameter "userkey". Set your own User Key
  99. "&action=". $action .       // parameter "action". See above
  100. "&endtime=". $endtime .     // parameter "endtime". See above
  101. "&postauth=". $postauth;    // parameter "postauth". See above
  102. $verifycode = file_get_contents($srvurl . $parameters);
  103. if (strpos ($verifycode, "ERR") === 0) {
  104. // if there is an error, show error code
  105. echo "Error: ". $verifycode;
  106. } else {
  107. // OK, now. do Step 3.
  108. //****************************************************
  109. // Step 3. Complete the Authentication by calling Wiwiz Auth API
  110. //****************************************************
  111. $redirectUrl = $srvurl.     // use the value of incoming parameter "srvurl" as the redirection address
  112. "?wiwiz_auth_api_login=1".  // parameter "wiwiz_auth_api_login"
  113. "&tokencode=". $tokencode . // parameter "tokencode", set identical to the incoming parameter
  114. "&verifycode=". $verifycode;    // parameter "verifycode", set identical to the incoming parameter
  115. ob_start();
  116. header("Location: ". $redirectUrl); // finally, do the redirection
  117. ob_flush();
  118. //          echo "<script>location.href=\"". $redirectUrl ."\"</script>";
  119. }
  120. }
  121. }
  122. ?>
  123. </form>
  124. </body>
  125. </html>

转载于:https://blog.51cto.com/beastwu/954612

用Discuz/UCenter账号实现Wifi登录认证相关推荐

  1. 运用树莓派+kali linux绕过wifi登录认证系统

    本文仅供学习,请勿用于任何违法行为 引言 现在很多地方都有公共wifi,但是很烦人的是很多免费wifi都需要登陆认证,那种微信认证还好,至少能用,但是在某些地方,比如校园内,往往需要正确的账号密码才能 ...

  2. nodemcu 8266 wifi 强制门户 自动弹出web 页面 wifi登录认证 手机弹出认证页面

    需要的全部代码 需要的全部工具 清空固件 下载nodemcu固件 上传lua代码 上传成功后复位 打开手机 搜索附近wifi 这里要注意 因为8266wifi是2.4G的 所以如果你的手机现在连接的的 ...

  3. 校园wifi网页认证登录入口

    一.校园WIFI自助服务简介 在我校校园网认证业务中,教职工校园通行证账号支持最大3个终端同时在线,如果超出最大在线数,最后上线的终端会把第一个上线的终端踢下线,导致终端经常掉线,需要重新登录才可上网 ...

  4. Android Tv wifi网络登录认证

    Android Tv wifi网络登录认证 前言 现在商铺.酒店等公共场所的wifi 网络大多数都需要进行网络登录认证,但在android Tv上面系统设置上的wifi模块好像没有对此场景做出处理,必 ...

  5. php ucenter原理,深入挖掘Discuz Ucenter同步登录过程原理分析

    深入挖掘discuz ucenter同步登录过程原理分析,哈哈,其实纯属标题党,主要就是做了一个思路分析而已. Discuz是Ucenter的一个应用. Ucenter包含Server和Client, ...

  6. sso登录统一账号体系和集中认证授权,实现用户快速访问应用-哇谷云

    sso登录统一账号体系和集中认证授权,实现用户快速访问应用-哇谷云 主流应用接入 通过哇谷云的多因素身份验证,在原本静态账号口令的基础上增加一层动态口令,或借助"扫一扫".生物识别 ...

  7. 安卓或者IOS不自动跳出WiFi登录页怎么办的方法(wifi认证页面打不开)

    换新iPhone连接不上学校的无线WiFi了应该怎么办.我就和大家分享了这样一篇文章. 首先是遇到的问题,连接学校的WiFi之后没有弹出认证/登录页面. 目前能够遇到的大部分WiFi网络连接认证方式大 ...

  8. 交换机设备登录账号权限1_交换机上配置RADIUS登录认证

    交换机上配置RADIUS登录认证 我们可以以Telnet,SSH,Web或者console口等不同的方式登录交换机,获得普通或者特权模式的访问权限.在网络设备众多,对网络安全要求较高的企业里,仅仅使用 ...

  9. etx使用ldap账号登录认证,以及账号添加和license激活

    1. 信息填写: * Server and port freeipa或者ldap的ip地址及端口号(比如192.168.1.1:389) Use SSL/TLS * Bind as 选第三个,Auth ...

最新文章

  1. android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
  2. sql developer下载_网络安全图标库下载
  3. winform dategridview 自动完成。
  4. Spring AOP是什么?
  5. 前端进阶之防抖与节流是什么?
  6. HTML5 tel make a phone call
  7. BCH升级在即,什么是OP_CHECKDATASIG和Canonical Transaction Ordering(一)
  8. cout不明确什么意思_不计免赔险是什么意思?弄不清楚要吃大亏
  9. 震旦打印机打不开首选项
  10. CVPR 2022 | AAAI2022 | WACV 2022 超分辨率(super-resolution)方向上接收论文总结
  11. Linux 命令 大结
  12. Motion-based counter-measures to photo attacks in face recognition
  13. flash 火狐总是崩溃_火狐浏览器经常崩溃怎么办,解决Firefox、Flash假死问题
  14. 巨高兴,自己的“万能数据库查询分析器”中英文 3.01版本 已经在国内6大软件下载网站发布
  15. 在线运行java测试
  16. 如何把一个数字x最右侧那个1拿出来,变成00...10..的格式
  17. html计时器重置的代码,javascript 秒表计时器实现代码
  18. Java的反射机制?
  19. The authenticity of host 'izwz9c8l39itikxj328wwuz (IP地址)' can't be established.
  20. 操作系统——操作系统发展历程及基本概念

热门文章

  1. 区块链安全:2019年我们走了多远?
  2. 技本功丨呀~我不会写CSS之vertical-align(上集)
  3. 一个资深技术人的转型之路
  4. javascript 红宝书笔记之函数、变量、参数、作用域
  5. 分布式缓存系统Memcached简介与实践(.NET memcached client library)
  6. shell的相关知识(变量、脚本定义)
  7. Javascript 装饰器极速指南
  8. 多角度认识markdown
  9. windows7 下的日期没有internet时间的选项卡
  10. Mac系统的JDK8默认安装路径