`
bask
  • 浏览: 144009 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

discuz 单点登录的另一种方法

    博客分类:
  • php
阅读更多
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&amp;">
<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&amp;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>&nbsp;</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>";
	}
}
?>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics