Question2Answer 用户整合实现单点登录
Question2Answer 被设计来可以整合一个现有的用户的网站系统,如果你运行的是 WordPress 3.X 以上版本,你可以看看这篇文章中的整合教程,Question2Answer 也可以整合其他的用户系统,实现单点登录,只需要编写少量的 PHP 代码,请看下面的参考教程。
整合教程
1、下载 Question2Answer
你可以在这里:http://www.question2answer.org/question2answer-latest.zip 下载到最先版本的 Question2Answer,也可以在 GitHub 上找到,然后解压到你的网站空间的任意位置。
2、建立 Question2Answer 的数据库
Question2Answer 需要一个数据库储存数据,你可以用过数据库管理工具创建一个名为 Question2Answer 的数据库,以供 Question2Answer 使用。
- 如果你已经有一个 MySQL 数据库了了,那么 Question2Answer 可以共享这个数据库,只要确保你使用的 MySQL 用户拥有这些权限:CREATE, ALTER, DELETE, INSERT, SELECT, UPDATE, LOCK TABLES。
- 如果你没有一个 MySQL 数据库,需要创建一个新的数据库和一个 MySQL 用户,这个用户至少需要这些权限:CREATE, ALTER, DELETE, INSERT, SELECT, UPDATE, LOCK TABLES。
3、配置 qa-config.php
在解压出来的文件夹里面找到 qa-config-example.php
文件,重命名文件名字为 qa-config.php
。
通过文本编辑器打开 qa-config.php
,在顶部设置 MySQL 的连接信息,然后将 QA_EXTERNAL_USERS
设置为 true
,保存文件。
4、修改 qa-external
找到 Question2Answer 根目录下面的 qa-external-example
文件夹,重命名为 qa-external。
5、修改 qa-external-users.php
在 qa-external
文件夹中打开 qa-external-users.php
文件,找到 qa_get_mysql_user_column_type()
方法,这个函数是返回你的用户表中的字段类型,For example, if you use textual identifiers, return VARCHAR(x)
, where x
is the maximum length. If you use numerical identifiers, return the appropriate numeric type, such as INT UNSIGNED
or BIGINT
。
6、添加登录的链接
查找 function qa_get_login_links($relative_url_prefix, $redirect_back_to_url)
在这个函数中添加如下代码:
return array(
'login' => $relative_url_prefix.'../user?destination=qa',
'register' => $relative_url_prefix.'../user/register',
'logout' => $relative_url_prefix.'../user/logout',
);
7、获取登录用户
查找 function qa_get_logged_in_user()
。 在这个函数中添加如何代码:
if ($_COOKIE) {
// $uid = $GLOBALS['user']->uid;
foreach ($_COOKIE as $key => $value) {
if(substr_compare($key, 'SESS', 0)>0){
$qa_db_connection=qa_db_connection();
$result=mysql_fetch_assoc(
mysql_query(
"SELECT uid, name, mail FROM users WHERE uid=". //, admin_flag
"(SELECT uid FROM sessions WHERE sid='".mysql_real_escape_string($_COOKIE[$key], $qa_db_connection)."')",
$qa_db_connection
)
);
if (is_array($result))
return array(
'userid' => $result['uid'],
'publicusername' => $result['name'],
'email' => $result['mail'],
'level' => $result['uid']==1 ? QA_USER_LEVEL_ADMIN : QA_USER_LEVEL_BASIC
);
}
}
}
return null;
8、获取用户的Email地址
查找 function qa_get_user_email($userid)
。 在这个函数中添加如何代码:
$qa_db_connection=qa_db_connection();
$result=mysql_fetch_assoc(
mysql_query(
"SELECT mail FROM users WHERE uid='".mysql_real_escape_string($userid, $qa_db_connection)."'",
$qa_db_connection
)
);
if (is_array($result))
return $result['mail'];
return null;
大家可以根据自己的网站系统的需求,然后添加想对应的代码。
相关阅读
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论