Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] OpenID插件──OpenID4Discuz-2.2.1发布(新用户不再需要注册账号)

[复制链接]
sutrazhou 发表于 2007-11-19 14:42:01 | 显示全部楼层 |阅读模式
2.2.1(2008-01-19)
* Bug修正:修正当OP返回的Nickname是空的时候,产生的用户名是纯数字的问题。
   修正后当OP返回的Nickname是空值时,就从OpenID Identifier中抓取用户昵称。
   目前支持的OP有:       
   xxx.openid.org.cn
   xxx.myopenid.com
   xxx.openid.cn
   xxx.openid.35.com
   xxx.openid.org
   xxx.mysecond.name
   xxx.pip.verisignlabs.com
   www.ican.com.cn/xxx

2.2.0(2008-01-13)
* 新增特性:允许论坛管理员配置使用自动注册(推荐)或是用户选择绑定的方式来处理新OpenID登录的情况。

2.1.0(2008-01-13)
* 新增特性:当用户使用一个尚未和任何论坛账号绑定时,允许用户选择和已有账号绑定或是注册一个新账号来绑定。

2.0.0(2008-01-05)
* 首页增加了OpenID登录框;
* 如果未登录就点击发贴或回帖出现的登录框也增加了OpenID登录选择;
* 更换了OpenID类库,这个类库可以支持https的openid identifier,也支持OpenID Authentication 2.0了,
   而且对PHP module `curl‘的依赖也不是必需的了;
* 之所以版本号从1.0.0跨越到2.0.0是因为一来改变了OpenID类库,二来增加了对OpenID 2.0的支持。

1.0.0(2007-12-14)
* 完善用户绑定和登录功能。

0.1.0(2007-11-20)
* 完成用户绑定和登录功能。

如何从2.2.0升级到2.2.1,上传php文件覆盖一下即可

如果要从旧版本升级到2.2.0过来的话,直接上传文件覆盖,并再次执行openid_install.php(因为新增了一个表),并且需要在后台重新导入一次discuz_plugin_openid4discuz.txt(因为新增了管理员配置)。

OpenID for Discuz!
该插件让你的Discuz!论坛能使用OpenID登录。
让用户更容易登入论坛,让你的论坛更方便、更人性、更容易吸引新用户。

特性

    * 允许论坛已有帐号与OpenID Identifier建立一对一绑定,绑定后用户既可用用户名、UID方式登录,也可用已绑定的OpenID Identifier登录;
    * 允许用户修改或者解除帐号和OpenID Identifier之间的绑定;
    * 用户使用OpenID Identifier登录时,如果该OpenID Identifier没有绑定任何论坛帐号,可以选择两种方案(由论坛管理员配置):
          o 自动为用户选择一个Username注册并绑定(推荐),选择的Username为从OP(OpenID Provider)取得的昵称,如果该Username已存在,则在末尾增加递增数字
          o 让用户自己选择(有二个选择:绑定已有账号、注册新账号绑定)。
    * 用Cookie保存用户选择的登录标识类型(用户名、UID或OpenID Identifier),方便下次登录;
    * 用Cookie保存用户输入的 OpenID Identifier,方便下次登录;
    * 支持OpenID 2.0认证。

兼容版本

    * 支持Discuz! 6.0.0 GBK/UTF-8版;
    * 其它版本可能也支持,但未经过测试。

安装

   1. 备份你的论坛的下列文件(括号中的注释是为什么OpenID4Discuz要修改这些文件):
         1. logging.php(增加了OpenID登录控制逻辑)
         2. register.php(插入了OpenID辅助注册逻辑)
         3. templates/default/discuz.htm(增加了论坛首页的OpenID登录框)
         4. templates/default/login.htm(增加了登录页的OpenID登录输入框)
         5. templates/default/nopermission.htm(未登录点击发帖时,要求登录出现的登录界面上增加了OpenID登录框)
         6. templates/default/register.htm(插入了OpenID辅助注册时默认填写的论坛账号)
   2. 上传下列文件或目录(以斜线结尾的是目录)。如果提示覆盖同名文件的话,就覆盖,因为上一步我们已经备份了将要被覆盖的文件了:
         1. logging.php
         2. register.php
         3. openid.php
         4. openid_install.php
         5. plugins/openid/
         6. templates/default/
   3. 用管理员登录,在论坛的后台的“插件管理”里面导入:discuz_plugin_openid4discuz.txt;
   4. 通过openid_install.php添加三个表(表名是“论坛表前缀_openid”,“论坛表前缀_openid_sessions”,“论坛表前缀_openid_username_cache”)到你的论坛数据库(如果同名表已存在,openid_install.php 脚本则不对数据库做任何修改)。

卸载

   1. 删除下列文件或目录(以斜线结尾的是目录):
         1. openid.php
         2. openid_install.php
         3. plugins/openid/
         4. templates/default/openid*(注意没有前缀openid的是原discuz的文件不要删除)
   2. 从备份中还原你的论坛的原始文件(文件列表参见安装过程);
   3. 用管理员登录,在论坛的后台的“插件管理”里面删除唯一标识符为“openid4discuz”的插件;
   4. 删除三个表(表名是“论坛表前缀_openid”,“论坛表前缀_openid_sessions”,“论坛表前缀 _openid_username_cache”)。注意强烈建议不要删除表“论坛表前缀_openid”,因为里面存了用户帐号和 OpenID 间的映射;表“论坛表前缀_openid_sessions”和“论坛表前缀_openid_username_cache”删掉无所谓。

授权

    * OpenID4Discuz采用New BSD License授权,详见下载包中的LICENSE.txt。


关于压缩包

由于http://discuz.net不能上传扩展名为.tar.gz的包,并且如果我压缩成.zip包的话,又超过了我能上传文件的上限512KB,因此我先采用了高压缩率的.tar.gz,然后在打包成zip。请见谅。

[ 本帖最后由 sutrazhou 于 2008-1-19 14:10 编辑 ]

本帖子中包含更多资源

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

x

评分

2

查看全部评分

LuciferSheng 发表于 2007-11-19 15:30:37 | 显示全部楼层
最好是没有注册的可以用openid直接登录
这是终极目标
回复

使用道具 举报

 楼主| sutrazhou 发表于 2007-11-20 01:47:43 | 显示全部楼层
在这里发布了,希望大家喜欢:下载见主题贴。

[ 本帖最后由 sutrazhou 于 2007-11-25 16:02 编辑 ]
回复

使用道具 举报

wul8 发表于 2007-11-20 02:11:43 | 显示全部楼层
:) :) :)
回复

使用道具 举报

GoSuRF 发表于 2007-11-20 02:17:57 | 显示全部楼层
为什么不发上来?

login.htm需要覆盖?怕怕~
请给出修改方法。
回复

使用道具 举报

GoSuRF 发表于 2007-11-20 02:24:54 | 显示全部楼层
氵干~

Discuz! info: MySQL Query Error

Script: /openid_install.php

SQL: CREATE TABLE IF NOT EXISTS `[Table]openid` (`uid` mediumint(8) unsigned NOT NULL,`openid_url` char(255) NOT NULL,PRIMARY KEY (`openid_url`),UNIQUE KEY `uid` (`uid`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=utf8' at line 1
Errno.: 1064
回复

使用道具 举报

 楼主| sutrazhou 发表于 2007-11-20 09:48:27 | 显示全部楼层

回复 5# 的帖子

嗯,这个文件的修改回头我可以把差异附上。
在这个模板文件里其实就增加了一个切换输入框的radio button和一个输入OpenID的text框框。

[ 本帖最后由 sutrazhou 于 2007-11-20 09:50 编辑 ]
回复

使用道具 举报

 楼主| sutrazhou 发表于 2007-11-20 09:49:28 | 显示全部楼层

回复 6# 的帖子

这个错误,我回去看看,呵呵。能问下,你的MySQL是什么版本的?可能我写得太高了。
回复

使用道具 举报

 楼主| sutrazhou 发表于 2007-11-20 23:42:43 | 显示全部楼层
刚刚更新了一下安装sql,应该好了。
下载见主题贴。

应 GoSuRF 的要求下面的diff是修改的 login.htm 页面的模板(就增加了一个切换输入框的radio box和一个用来输入 OpenID URL 的 text box)。
  1. --- /home/sutra/Desktop/t/upload/templates/default/login.htm        2007-09-07 17:06:40.000000000 +0800
  2. +++ /home/sutra/workspace/openid4discuz/templates/default/login.htm        2007-11-18 05:22:56.000000000 +0800
  3. @@ -1,5 +1,23 @@
  4. {template header}

  5. <div id="nav"><a href="$indexname">$bbname</a> &#187; {lang member_login}</div>

  6. +
  7. +<script type="text/javascript">
  8. +function setOpenIdLogin(isOpenIdLogin) {
  9. +        document.getElementById("username").style.display = (isOpenIdLogin ? "none" : "inline");
  10. +        document.getElementById("openid_url").style.display = (isOpenIdLogin ? "inline" : "none");
  11. +        document.getElementById("password").disabled = isOpenIdLogin;
  12. +        document.getElementById("password").style.backgroundColor = isOpenIdLogin ? '#eee' : '';
  13. +        document.getElementById("questionid").disabled = isOpenIdLogin;
  14. +        document.getElementById("answer").disabled = isOpenIdLogin;
  15. +        document.getElementById("answer").style.backgroundColor = isOpenIdLogin ? '#eee' : '';
  16. +        
  17. +        if (isOpenIdLogin) {
  18. +                document.getElementById("openid_url").focus();
  19. +        } else {
  20. +                document.getElementById("username").focus();
  21. +        }
  22. +}
  23. +</script>


  24. <form method="post" name="login" action="logging.php?action=login&">

  25. <input type="hidden" name="formhash" value="{FORMHASH}" />

  26. @@ -22,11 +40,14 @@
  27.                  <!--{/if}-->

  28.                  <tr>

  29.                          <th onclick="document.login.username.focus();">

  30. -                                <label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" />{lang username}</label>

  31. -                                <label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" />{lang uid}</label>

  32. +                                <label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" onchange="setOpenIdLogin(false)" />{lang username}</label>

  33. +                                <label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" onchange="setOpenIdLogin(false)" />{lang uid}</label>
  34. +                                <label><input class="radio" type="radio" name="loginfield" value="openid" tabindex="3" onchange="setOpenIdLogin(true)" id="loginfield_openid" />OpenID</label>

  35.                          </th>

  36.                          <td>

  37. -                                <input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />

  38. +                                <input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />
  39. +                                <input type="text" id="openid_url" name="openid_url" size="25" tabindex="4"
  40. +                                        style="display:none; background: url(http://www.openid.net/login-bg.gif) no-repeat; background-position: 0 50%; padding-left: 18px;" />
  41.                                  <a href="$regname">{lang register_now}</a>

  42.                          </td>

  43.                  </tr>

  44. @@ -93,8 +114,13 @@
  45. </div>

  46. </form>



  47. -<script type="text/javascript">

  48. -document.login.username.focus();

  49. +<script type="text/javascript">
  50. +setOpenIdLogin(document.getElementById("loginfield_openid").checked);
  51. +if (document.getElementById("loginfield_openid").checked) {
  52. +        document.login.openid_url.focus();
  53. +} else {

  54. +        document.login.username.focus();
  55. +}


  56. var mydate = new Date();

  57. var mytimestamp = parseInt(mydate.valueOf() / 1000);
复制代码

[ 本帖最后由 sutrazhou 于 2007-11-25 16:03 编辑 ]
回复

使用道具 举报

GoSuRF 发表于 2007-11-22 22:19:59 | 显示全部楼层
论坛程序版本 Discuz! 6.0.0 Release 20070904
操作系统及 PHP WINNT / PHP v4.4.4
MySQL 版本 4.0.25-nt

谢谢修正,有时间再测试下~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-18 01:48 , Processed in 0.032221 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表