ubnt解决方案
查看: 15044|回复: 53

[资料分享] 用Discuz/UCenter账户作为Wifi热点的Web认证账户

[复制链接]

774

回帖

6099

积分

1305 小时

在线时间

中校

技术达人

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

如果你有一个用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.          
  33. 用户名: <input type="text" name="username" />
  34. <br>

  35. 密码: <input type="password" name="password" />
  36. <br>

  37. <input type="submit" name="login" value="登录/认证" />
  38. <br>
  39. </center>

  40. <?php
  41. if(isset($_REQUEST['login'])) {        // if "Login" button is clicked

  42.         //****************************************************
  43.         // Step 1. Do your business. E.g. check user login ...
  44.         //****************************************************
  45.         define('UC_CONNECT', 'mysql');        // 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen()
  46.                                                                         // mysql 是直接连接的数据库, 为了效率, 建议采用 mysql

  47.         //数据库相关 (mysql 连接时, 并且没有设置 UC_DBLINK 时, 需要配置以下变量)
  48.         define('UC_DBHOST', 'localhost');                                // UCenter 数据库主机
  49.         define('UC_DBUSER', 'root');                                        // UCenter 数据库用户名
  50.         define('UC_DBPW', '');                                                        // UCenter 数据库密码
  51.         define('UC_DBNAME', 'discuz');                                        // UCenter 数据库名称
  52.         define('UC_DBCHARSET', 'UTF-8');                                // UCenter 数据库字符集
  53.         define('UC_DBTABLEPRE', 'discuz.pre_ucenter_');        // UCenter 数据库表前缀

  54.         //通信相关
  55.         define('UC_KEY', '');                                // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
  56.         define('UC_API', '');                                // UCenter 的 URL 地址, 在调用头像时依赖此常量
  57.         define('UC_CHARSET', 'gbk');                // UCenter 的字符集
  58.         define('UC_IP', '');                                // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
  59.         define('UC_APPID', 1);                                // 当前应用的 ID
  60.         
  61.         require_once './uc_client/client.php';

  62.         if(isset($_POST['login'])) {
  63.                 list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
  64.                 if($uid > 0) {
  65.                         $loginSuccess = true;
  66.                 } else {
  67.                         $loginSuccess = false;
  68.                 }
  69.         }

  70.         if($loginSuccess == false) {

  71.                 echo "用户名或密码错误!";        // if user login failed, show an error message

  72.         } else {

  73.                 //****************************************************
  74.                 // Step 2. Do the pre-auth by calling Wiwiz Auth API
  75.                 // IMPORTANT: Do this on your server side(ASP, C#, JSP/Servlet, PHP...),
  76.                 //            but DO NOT do this on your client side (HTML/Javascript)
  77.                 //****************************************************

  78.                 // parameter "action" : REQUIRED!
  79.                 // set it to "1" to authenticate the user
  80.                 // set it to "0" to block the user
  81.                 $action = "1";

  82.                 // parameter "tokencode": REQUIRED!
  83.                 // set identical to the incoming parameter
  84.                 $tokencode = $_SESSION['tokencode'];

  85.                 // parameter "srvurl": REQUIRED!
  86.                 // set identical to the incoming parameter        
  87.                 $srvurl = $_SESSION['srvurl'];

  88.                 // parameter "endtime" : OPTIONAL
  89.                 // Format: yyyy-mm-dd hh:MM:ss  e.g. 2012-05-31 21:39:00
  90.                 // set this parameter to set the time to close the user's Internet connection
  91.                 // Note: the value must be url-encoded.  
  92.                 $endtime = "";        //urlencode('2012-05-31 21:39:00');                //设置wifi使用期限

  93.                 // parameter "postauth" : OPTIONAL
  94.                 // E.g. http://www.YourDomain.com
  95.                 // set this parameter to redirect to a specified URL after authenticated.
  96.                 // Note: the value should be url-encoded.  
  97.                 $postauth = urlencode("http://192.168.1.250/home");                //wifi认证后跳转至网站首页

  98.                 $parameters = "?wiwiz_auth_api=1&ver=1.0". // parameter "wiwiz_auth_api" and "ver". Fixed value
  99.                                 "&tokencode=". $tokencode .        // parameter "tokencode". See above
  100.                                 "&userkey=". $userkey .                // parameter "userkey". Set your own User Key
  101.                                 "&action=". $action .                // parameter "action". See above
  102.                                 "&endtime=". $endtime .                // parameter "endtime". See above
  103.                                 "&postauth=". $postauth;         // parameter "postauth". See above

  104.                 $verifycode = file_get_contents($srvurl . $parameters);

  105.                 if (strpos ($verifycode, "ERR") === 0) {
  106.                         // if there is an error, show error code
  107.                         echo "Error: ". $verifycode;

  108.                 } else {
  109.                         // OK, now. do Step 3.

  110.                         //****************************************************
  111.                         // Step 3. Complete the Authentication by calling Wiwiz Auth API
  112.                         //****************************************************        
  113.                         $redirectUrl = $srvurl.                // use the value of incoming parameter "srvurl" as the redirection address
  114.                                         "?wiwiz_auth_api_login=1".        // parameter "wiwiz_auth_api_login"
  115.                                         "&tokencode=". $tokencode .        // parameter "tokencode", set identical to the incoming parameter        
  116.                                         "&verifycode=". $verifycode;        // parameter "verifycode", set identical to the incoming parameter        
  117.                         ob_start();
  118.                         header("Location: ". $redirectUrl);        // finally, do the redirection
  119.                         ob_flush();

  120. //                        echo "<script>location.href="". $redirectUrl .""</script>";

  121.                 }

  122.         }
  123. }
  124. ?>

  125. </form>

  126. </body>
  127. </html>
复制代码







本帖子中包含更多资源

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

x

评分

1

查看全部评分

2622

回帖

8450

积分

1513 小时

在线时间

中校

奉天淫

雷锋勋章太平绅士灌水天才正义勋章推广先锋设备暴发户伯乐勋章资深收藏家鲁班小弟技术达人杰出会员全才勋章

注册时间
2012-5-24
金币
4710 个
威望
166 个
荣誉
8 个
累计签到:472 天
连续签到:0 天
[LV.730]常住居民
发表于 2012-8-5 17:54 |显示全部楼层
{:3_53:}谢谢楼主分享。。。

  {:3_59:}就是看不懂啊。。。
回复

使用道具 举报

398

回帖

1万

积分

784 小时

在线时间

上校

注册时间
2012-5-20
金币
17350 个
威望
3 个
荣誉
1 个
累计签到:1860 天
连续签到:0 天
[LV.2920]超级粉丝
发表于 2012-8-5 17:56 |显示全部楼层
高手啊      
回复

使用道具 举报

973

回帖

3591

积分

613 小时

在线时间

少校

注册时间
2011-3-12
金币
2456 个
威望
9 个
荣誉
1 个
累计签到:163 天
连续签到:0 天
[LV.200]无线新星
发表于 2012-8-5 18:30 |显示全部楼层
很強大的說  很厲害的啊  我的個天
回复

使用道具 举报

295

回帖

789

积分

226 小时

在线时间

中尉

注册时间
2010-10-28
金币
449 个
威望
1 个
荣誉
0 个
累计签到:9 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2012-8-5 20:33 |显示全部楼层
回复

使用道具 举报

75

回帖

205

积分

61 小时

在线时间

少尉

注册时间
2011-8-9
金币
123 个
威望
0 个
荣誉
0 个
累计签到:1 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2012-8-5 23:57 |显示全部楼层
这样也可以????? 功能变成了不是上网... 安装个U盘在带USB的路由里..... 变成了无线网站....
回复

使用道具 举报

774

回帖

6099

积分

1305 小时

在线时间

中校

技术达人

注册时间
2011-4-12
金币
4969 个
威望
21 个
荣誉
3 个
累计签到:32 天
连续签到:0 天
[LV.50]初入江湖
发表于 2012-8-6 14:15 |显示全部楼层
sampro 发表于 2012-8-5 23:57
这样也可以????? 功能变成了不是上网... 安装个U盘在带USB的路由里..... 变成了无线网站....

这样弄个无线网站当然也可以。
但是,这个方案的重点是,如果你有网站(在公网上),可以让你的网站更火。
回复

使用道具 举报

124

回帖

958

积分

112 小时

在线时间

中尉

注册时间
2011-3-25
金币
799 个
威望
1 个
荣誉
0 个
累计签到:16 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2012-8-7 00:52 来自手机 |显示全部楼层
Discuz是干什么的?
回复

使用道具 举报

774

回帖

6099

积分

1305 小时

在线时间

中校

技术达人

注册时间
2011-4-12
金币
4969 个
威望
21 个
荣誉
3 个
累计签到:32 天
连续签到:0 天
[LV.50]初入江湖
发表于 2012-8-7 13:47 |显示全部楼层
heiheihoho 发表于 2012-8-7 00:52
Discuz是干什么的?

著名的建站平台
回复

使用道具 举报

774

回帖

6099

积分

1305 小时

在线时间

中校

技术达人

注册时间
2011-4-12
金币
4969 个
威望
21 个
荣誉
3 个
累计签到:32 天
连续签到:0 天
[LV.50]初入江湖
发表于 2012-8-8 23:40 |显示全部楼层
tiida2011 发表于 2012-8-7 13:47
著名的建站平台

补充一下,anywlan也是用Discuz做的
回复

使用道具 举报

2675

回帖

8320

积分

546 小时

在线时间

中校

注册时间
2011-11-12
金币
5198 个
威望
75 个
荣誉
0 个
累计签到:174 天
连续签到:0 天
[LV.200]无线新星
发表于 2012-8-9 09:24 |显示全部楼层
看看啦。。。。。
回复

使用道具 举报

124

回帖

958

积分

112 小时

在线时间

中尉

注册时间
2011-3-25
金币
799 个
威望
1 个
荣誉
0 个
累计签到:16 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2012-8-13 01:42 来自手机 |显示全部楼层
tiida2011 发表于 2012-8-8 23:40
补充一下,anywlan也是用Discuz做的

原来如此,学习了,不知有没有Wiwiz和ecShop集成的例子呢
加班签到
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 10:20

返回顶部 返回列表