dedecms 与 discuz 用户集成登录解决思路

本人接了个项目,织梦的dedecms与DISCUZ集成在一起。

用户打通以后,我把用户激活功能去掉了。

接着,发现在织梦中登录后,在DISCUZ中还要再登录一次,真是恼火。

 

解决办法有三种:

1、第一种办法:找到两个系统的cookie,修改相关代码,使得两者保持同步。(难度系数,高,我还没搞清楚)

2、第二种办法:织梦登录以后,调用member/index_do.php。

 

将代码

ShowMsg("成功登录,5秒钟后转向系统主页...","../index.php",0,2000);

修改成:


setcookie("lhuserid", $userid);
setcookie("lhpwd", $pwd);
ShowMsg("成功登录,5秒钟后转向系统主页...","autopost.php",0,2000);

 

代码的意思是在跳转到../index.php之前,取得用户用户和密码,存入cookie。

然后跳转到一个另外的php文件autopost.php,autopost.php代码如下:

 

<?php


echo "<html>";
echo "<head>";
echo "<title>hello post test</title>";

echo "<script>";
echo "function winurl(){";
echo "document.getElementById('loginsubmit').click();";


echo "}";
echo "setTimeout('winurl()',1);";
echo "</script>";

echo "<SCRIPT language='JavaScript'>   ";
echo "javascript:window.history.forward(1);   ";
echo "</script>";

echo "</head>";
echo "<body>";

echo "登录成功!";

echo " <div style='visibility:hidden'>";
echo "  <form method='post' autocomplete='off' name='login' id='loginform_L9xrs' class='cl'  action='http://bbs.xxxx.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=L9xrs'>";
echo "<div class='c cl'>";

echo "  <input type='text' name='username' id='username_L9xrs' value='";
//echo  $_COOKIE['lhuserid'];
//echo  $lhuserid;

//取得用户cookie值
if(isset($_COOKIE["lhuserid"]))
{
echo  $_COOKIE["lhuserid"];
}

//echo  $_POST["username"];
//echo "szliszt";
echo "' autocomplete='off' size='36' class='txt' tabindex='1' value='' /><input type='password' id='password3_L9xrs' name='password' value='";
//echo $_COOKIE["pwd"] ;
//echo  $_POST["password"];
if(isset($_COOKIE["lhpwd"]))
{
echo  $_COOKIE["lhpwd"];
}
//echo "123456";
echo "' size='36' class='txt' tabindex='1' /><button class='pn pnc' type='submit' name='loginsubmit' value='true'";
echo " tabindex='1'><span>怬</span></button>";
echo "  </div></form>";
echo "  </div>";

echo "</body>";
echo "</html> ";


?>

autopost.php调用后会自动执行,把首页传过来的帐号密码立即提交,实现在disuz中登录成功。

此方法的缺陷是,在登录成功后,discuz总是试图返回,老刷新。怎么解决还没想到好办法。

注意,如果文件不在同一个目录下,会取不到cookie值的。

(此方法难度系数,中)

 

3、第三种方法:

修改织梦首页的模板文件index.html,

在<div class="loglink"> 之前加上隐藏的登录信息(其实写在别的位置也可以),代码如下

 

<div style="visibility:hidden">
  <form method="post" autocomplete="off" name="login" id="loginform_L9xrs" class="cl" οnsubmit="pwdclear = 1;return false;" action="http://bbs.xxxx.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=L9xrs">
<div class="c cl">

  <input type="text" name="username" id="username_L9xrs" autocomplete="off" size="36" class="txt" tabindex="1" value="" /><input type="password" id="password3_L9xrs" name="password" οnfοcus="clearpwd()" οnkeypress="detectCapsLock(event, this)" size="36" class="txt" tabindex="1" /><button class="pn pnc" type="submit" name="loginsubmit" value="true" tabindex="1"><span>µÇ¼</span></button>
  </div></form>
  </div>

然后修改前面的提交按钮,实现自动同步填充帐号密码,自动提交的效果

 

<input type="text" name="userid" size="20" class="ipt-txt" />

修改成

<input type="text" name="userid" size="20"  οnblur="document.getElementById('username_L9xrs').value=document.getElementById('userid').value" οnchange="document.getElementById('username_L9xrs').value=document.getElementById('userid').value"  class="ipt-txt" />

 

 

<input type="password" name="pwd"   size="20" class="ipt-txt" />

修改成

<input type="password" name="pwd" οnchange="document.getElementById('password3_L9xrs').value=document.getElementById('pwd').value"  size="20" class="ipt-txt" />

 

 

 <button type="submit" class="btn-1"    >

修改成

 <button type="submit" class="btn-1"  οnclick="document.getElementById('loginsubmit').click();"  >

 

当在首页输入帐号密码的时候,隐藏的用户名和密码框会自动输入相同数据,提交的时候,也会自动提交一份到discuz中。

 

(此方法难度系数,低)

 

 

网上资料实在太少了,痛苦摸索了好几天,终于解决了,与大家共享。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值