![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
<?php //discuz同服务器下无passport登陆整合方法 //用法事例 error_reporting(E_ALL); $path_bbs="";//请修改为你的论坛的相对路径 $check_username="abcccc";//测试时这个用户名必须在论坛里也存在 $check_password="111111"; define('IN_DISCUZ', TRUE);//为了包含discuz下的文件这个必须定义 require_once "config.inc.php";//获得论坛数据库的配置 require_once "include/db_mysql.class.php"; if(@$_GET[act]=="logout"){ foreach ($_COOKIE as $key => $value) { setcookie($key,'',time() - 3600,$cookiepath,$cookiedomain,0); header("Location:".$_SERVER['PHP_SELF']); } } if(isset($_POST["submit"])){//检查是否点击了提交按钮 $username=trim($_POST['username']); $pwd=trim($_POST['password']); //主站验证登陆,为简单起见,这里只作简单的示范 if($username==$check_username && $pwd==$check_password){//测试时这个用户名必须在论坛里也存在 $db = new dbstuff; $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);//$dbhost,$dbuser,$dbpw,$dbname,$pconnect是在bbs/config.inc.php里定义的变量 $sql="select * from cdb_members where username='$username'"; $rs = $db->query($sql); if($dzmember = $db->fetch_array($rs)){ setcookie('myusername',$username,time()+3600,$cookiepath,$cookiedomain,0);//设置主站自身的cookie setcookie("{$tablepre}sid",'',time() - 3600,$cookiepath,$cookiedomain,0);//让discuz的sid过期是为了让discuz重新分配一个新的sid setcookie("{$tablepre}auth", authcode("$dzmember[password]\t$dzmember[secques]\t$dzmember[uid]", 'ENCODE'),time()+3600,$cookiepath,$cookiedomain,0);//$cookiepath和$cookiedomainbbs/config.inc.php里定义的变量 header("Location:".$_SERVER['REQUEST_URI']); } } } //下面这个函数是discuz的用户cookie编码函数,已修改,原型在$path_bbs/include/global.func.php function authcode($string, $operation) { global $_SERVER, $_DCACHE,$path_bbs; require_once "forumdata/cache/cache_settings.php";//需要获取论坛的authkey $discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']); $coded = ''; $keylength = strlen($discuz_auth_key); $string = $operation == 'DECODE' ? base64_decode($string) : $string; for($i = 0; $i < strlen($string); $i += $keylength) { $coded .= substr($string, $i, $keylength) ^ $discuz_auth_key; } $coded = $operation == 'ENCODE' ? str_replace('=', '', base64_encode($coded)) : $coded; return $coded; } ?> <?php if(@$_COOKIE['myusername']==''){ ?>
<?php } else echo("登陆成功,请到论坛检查登陆退出登陆 "); ?> discuz同服务器下无passport登陆整合方法 这段代码我是从网上拷贝下来的, 登陆提示说,,,"登陆成功" 但是我点"请到论坛检查登陆"" 但是cookie不起作用了, 到登陆以后还是没有登陆成功的, 帮我看看呀, [ 本帖最后由 yhf111 于 2007-4-27 03:29 PM 编辑 ]

