discuz 单点登录的另一种方法

discuz 单点登录 其他人做法 还真不清楚
当初我的第一个方案是模拟登录 保存cookie信息,但失败了 具体问题也就没看了
第二方法也就是很简单的方法了 直接隐藏表单提交
如果有自己服务器的朋友 可以使用 memcache 来做 那样会更方便点
比如在memcache保存 用户名和密码
当在java 或 php 等连接到discuz前 先进入到这个php(比如:login)
代码如下:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录中...</title>
</head>
<body>
<div style="display:none">
<form method="post" id="login" name="login" action="logging.php?action=login&">
<input type="hidden" name="formhash" value="ef83ae73" />
<input type="hidden" name="referer" value="index.php" />
<div class="mainbox formbox">
<span class="headactions"><a href="faq.php?action=message&id=3" target="_blank">登录帮助</a></span>
<h1>会员登录</h1>
<table summary="会员登录" cellspacing="0" cellpadding="0">
<tr>
<th onclick="document.login.username.focus();">
<label><input class="radio" type="radio" name="loginfield" value="username" tabindex="2" checked="checked" />用户名</label>
<label><input class="radio" type="radio" name="loginfield" value="uid" tabindex="3" />UID</label>
</th>
<td>
<input type="text" id="username" name="username" size="25" maxlength="40" tabindex="4" />
<a href="register.php">立即注册</a>
</td>
</tr>
<tr>
<th><label for="password">密码</label></th>
<td>
<input type="password" id="password" name="password" size="25" tabindex="5" />
<a href="member.php?action=lostpasswd">忘记密码</a>
</td>
</tr>
<tr>
<th><label for="questionid">安全提问</label></th>
<td>
<select id="questionid" name="questionid" tabindex="6">
<option value="0">无安全提问</option>
<option value="1">母亲的名字</option>
<option value="2">爷爷的名字</option>
<option value="3">父亲出生的城市</option>
<option value="4">您其中一位老师的名字</option>
<option value="5">您个人计算机的型号</option>
<option value="6">您最喜欢的餐馆名称</option>
<option value="7">驾驶执照的最后四位数字</option>
</select>
</td>
</tr>
<tr>
<th><label for="answer">回答</label></th>
<td><input type="text" id="answer" name="answer" size="25" tabindex="7" /> 如果您设置了安全提问,请回答正确的答案</td>
</tr>
<tr>
<th>登录有效期</th>
<td>
<label><input class="radio" type="radio" name="cookietime" value="315360000" tabindex="8" /> 永久</label>
<label><input class="radio" type="radio" name="cookietime" value="2592000" tabindex="9" checked="checked" /> 一个月</label>
<label><input class="radio" type="radio" name="cookietime" value="86400" tabindex="10" /> 一天</label>
<label><input class="radio" type="radio" name="cookietime" value="3600" tabindex="11" /> 一小时</label>
<label><input class="radio" type="radio" name="cookietime" value="0" tabindex="12" /> 浏览器进程</label>
</td>
</tr>
<tr>
<th><label for="loginmode">隐身登录</label></th>
<td>
<select id="loginmode" name="loginmode" tabindex="13">
<option value="">- 使用默认 -</option>
<option value="normal"> 正常模式</option>
<option value="invisible"> 隐身模式</option>
</select>
</td>
</tr>
<tr>
<th><label for="styleid">界面风格</label></th>
<td>
<select id="styleid" name="styleid" tabindex="14">
<option value="">- 使用默认 -</option>
<option value="1">默认风格</option>
<option value="2">喝彩奥运</option>
<option value="3">深邃永恒</option>
<option value="4">粉妆精灵</option>
<option value="5">诗意田园</option>
<option value="6">春意盎然</option>
</select>
</td>
</tr>
<tr>
<th> </th>
<td><button class="submit" type="submit" id="loginsubmit" name="loginsubmit" value="true" tabindex="100">提交</button></td>
</tr>
</table>
</div>
</form>
</div>
<script>
function u_login(v_anme,v_pass) {
document.getElementById("username").value = v_anme;
document.getElementById("password").value = v_pass;
document.getElementById("loginsubmit").click();
}
</script>
</body>
</html>
<?php
require_once './include/common.inc.php';
require_once DISCUZ_ROOT.'./include/misc.func.php';
if($discuz_uid) {
echo "<script>location.href='index.php'</script>";
} else {
$ticket = $_GET['ticket'];
if(isset($ticket) && trim($ticket != "")) {
require_once './plugins/memcached-client.php';
$options = array(
'servers' => array('localhost:11211'),
'debug' =>false,
'compress_threshold' => 10240,
'persistant' => false);
$mc = new memcached($options);
$val = $mc->get($ticket);
if($val == "") {
//跳转到登陆页面
echo "Ticket为空";
//echo "<script>location.href='index.php'</script>";
} else {
$values = explode(",",$val);
echo "<script>u_login('".$values[0]."','".$values[1]."');</script>";
}
} else {
//跳转到登陆页面
echo "需要跳转到登陆页面";
//echo "<script>location.href='index.php'</script>";
}
}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>