BCHAT采用DISCUZ论坛的外置验证实例

2008年10月27日

基本思路是:在论坛目录下建一个chat.php来显示聊天室的登录界面,如果用户未处于论坛登陆状态就提示用户先登录,如果用户已经处于登陆状态就提示用户点击链接进入聊天室。当用户点击进入聊天室的时候是去访问chatlogin.php,这个页面提取已登陆用户的用户名进行MD5KEY的运算,生成真正进入聊天室的登陆页面并进行登陆。
chat.php放在论坛目录下,其代码如下:

<?php
require_once './include/common.inc.php';
include template('chat');
?>

再建一个模板文件chat.htm放在template/default目录下,其内容是:

{subtemplate header}
 
<script>
var focusok=false;                              
if (navigator.appName == "Netscape") {                              
	focusok=true;                              
}                              
vers = navigator.appVersion;                              
if (navigator.appName == "Microsoft Internet Explorer") {                              
 pos = vers.lastIndexOf('.');                               
 vers = vers.substring(pos-1,vers.length);                               
}                              
proper_version = parseFloat(vers);                               
 
if(proper_version>=5){                              
	focusok=true;                              
}                              
 
function launchchat() {                              
 
  var chat = window.open
 
("chatlogin.php","chat","top=0,left=0,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=790,height=530");                              
   if(focusok){                              
	chat.focus();                              
   }                              
   return;
}                               
</script>
<center>
 
<!--{if $discuz_uid}-->
你好,$discuz_userss,
<p><a href='javascript:launchchat()'><font color=red size=5>请点这里进入聊天室</font></a>
</p>
<!--{else}-->
请先登陆。
<!--{/if}-->
 
{subtemplate footer}

然后再做一个chatlogin.php放在论坛目录下处理真正的登陆过程:

<?php
 
require_once './include/common.inc.php';
 
echo "<html><body>";
 
if(!$discuz_uid){
	echo "<p>您尚未进行登录,请先登录,或者<a 
 
href='http://chat.xxx.com/index_chat.asp' target=_blank>以游客身份进入聊天室>>></a>";
	echo "</body></html>";
	exit;
}else{
	echo "<p>进入聊天室...";	
}
 
$MD5KEY="md5key"; 
//$USERNAME=$discuz_userss;
$USERNAME=iconv( "UTF-8", "gb2312//IGNORE" , $discuz_userss); 
$PASSWORD=md5($USERNAME.$MD5KEY);
$chatport="2000";
$chatip="chat.xxx.com";
?>
<form name="chatlogin" action="http://<?php echo $chatip; ?>:<?php echo $chatport; ?>/" 
 
method="post">
<input type="hidden" name="USER" value="<?php echo $USERNAME; ?>">
<input type="hidden" name="PASS" value="<?php echo $PASSWORD; ?>">
</form>
<script langauge="javascript">
document.chatlogin.submit();
</script>
</body></html>

由于聊天室使用GB2312而论坛用的是UTF8,所以这里对用户名进行了一个编码转换。

蓝天.收藏与分享

相关日志:

标签: , , , ,
归类: BCHAT

评论暂缺

(Required)
(Required, will not be published)