大家好,发个 OpenID 小插件:
我最近开发了一个小插件 OpenID4Discuz!。有需要的自取。目前还没实现无需注册就可登录发帖的功能,如果反应强烈就来实现,否则不浪费时间了。也没开讨论 maillist,大家有什么事就在这先说吧,说的人多了扰民的话我再新开。
之前在
discuz.net 上发布时有朋友担心修改了原来的 login.htm 说怕怕。我把 diff 贴出来(其实就增加了一个 OpenID URL 的输入框,并增加了一个切换 Radio box)
--- /home/sutra/Desktop/t/upload/templates/default/login.htm 2007-09-07 17:06:40.000000000 +0800
+++ /home/sutra/workspace/openid4discuz/templates/default/login.htm 2007-11-18 05:22:56.000000000 +0800
@@ -1,5 +1,23 @@
{template header}
<div id="nav"><a href="$indexname">$bbname</a> » {lang member_login}</div>
+
+<script type="text/javascript">
+function setOpenIdLogin(isOpenIdLogin) {
+ document.getElementById("username").style.display = (isOpenIdLogin ? "none" : "inline");
+ document.getElementById("openid_url").style.display = (isOpenIdLogin ? "inline" : "none");
+ document.getElementById("password").disabled = isOpenIdLogin;
+ document.getElementById
("password").style.backgroundColor = isOpenIdLogin ? '#eee' : '';
+ document.getElementById("questionid").disabled = isOpenIdLogin;
+ document.getElementById("answer").disabled = isOpenIdLogin;
+ document.getElementById("answer").style.backgroundColor = isOpenIdLogin ? '#eee' : '';
+
+ if (isOpenIdLogin) {
+ document.getElementById("openid_url").focus();
+ } else {
+ document.getElementById("username").focus();
+ }
+}
+</script>
<form method="post" name="login" action="logging.php?action=login&">
<input type="hidden" name="formhash" value="{FORMHASH}" />
@@ -22,11 +40,14 @@
<!--{/if}-->
<tr>
<th onclick="document.login.username.focus();">
- <label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" />{lang username}</label>
- <label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" />{lang uid}</label>
+ <label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" onchange="setOpenIdLogin(false)" />{lang username}</label>
+ <label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" onchange="setOpenIdLogin(false)" />{lang uid}</label>
+ <label><input class="radio" type="radio" name="loginfield" value="openid" tabindex="3" onchange="setOpenIdLogin(true)" id="loginfield_openid" />OpenID</label>
</th>
<td>
- <input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />
+ <input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />
+ <input type="text" id="openid_url" name="openid_url" size="25" tabindex="4"
+ style="display:none; background: url(
http://www.openid.net/login-bg.gif) no-repeat; background-position: 0 50%; padding-left: 18px;" />
<a href="$regname">{lang register_now}</a>
</td>
</tr>
@@ -93,8 +114,13 @@
</div>
</form>
-<script type="text/javascript">
-document.login.username.focus();
+<script type="text/javascript">
+setOpenIdLogin(document.getElementById("loginfield_openid").checked);
+if (document.getElementById("loginfield_openid").checked) {
+ document.login.openid_url.focus
();
+} else {
+ document.login.username.focus();
+}
var mydate = new Date();
var mytimestamp = parseInt(mydate.valueOf() / 1000);
OpenID4Discuz! 主页:
http://openid4discuz.redv.com/
OpenID for Discuz!
该插件让你的 Discuz! 论坛能使用 OpenID 登录。
特性
- 允许论坛已有帐号与 OpenID URL 建立一对一绑定,绑定后用户既可以用原有的用户名或者UID方式登录,也可以通过已绑定的 OpenID 来登录;
- 允许修改或者解除帐号和 OpenID URL 之间的绑定;
- 无需注册论坛帐号,即可通过
OpenID 直接登录论坛(计划中,如果本插件有人欢迎~~)。
兼容版本
- 支持 Discuz! 6.0.0 GBK/UTF-8 版;
- 其它版本可能也支持,但未经过测试。
安装
- 备份你的论坛的原始文件: templates/default/login.htm;
- 上传 openid.php,openid-install.php, plugins/openid/*, templates/default/*;
- 用管理员登录,在论坛的后台的"插件管理"里面导入: discuz_plugin_openid4discuz.txt;
- 通过 openid_install.php 添加表(表名是论坛表前缀_openid)到你的论坛数据库。
卸载
- 从备份中还原你的论坛的原始文件: templates/default/login.htm;
- 删除 openid.php,openid-install.php, plugins/openid/*, templates/default/*;
- 用管理员登录,在论坛的后台的"插件管理"里面删除唯一标识符为 openid4discuz 的插件;
- 删除表(表名是论坛表前缀_openid),不建议。
Copyright © 2001-2007
Redv.com. All rights reserved.