http://bbs.csdn.net/topics/390896551#post-398264470
menberinfo.php
require_once './bbs/source/class/class_core.php';//根目录下
C::app()->init();
/*
基础操作
DB::insert(),DB::update(),DB::query(),DB::delete()
*/

解决方案 »

  1.   

    主要两个问题,一个是下面这些的用法,一个是如何将结果存储session 或者全局变量之类。
      

  2.   

    <?
    require '../bbs/source/class/class_core.php';//引入系统核心文件
    $discuz = C::app();
    $discuz->init();
    $name=$_POST['name'];
    $pw=md5(md5($_POST['pw']));
    $count = DB::result(DB::query("select uid from md_common_member where username=$name and password=$pw"), 0);
    if($count){
     global  $_G;
     $arr=array();
     $_G=$arr['uid'];
     
    echo "登录成功";
    }else{
    echo "登录失败";
    }?>像这个  为什么不对?    
      

  3.   

    但是如果按照常规的方法写,又是对的:
    <?
    require '../bbs/source/class/class_core.php';//引入系统核心文件
    $discuz = C::app();
    $discuz->init();
    $name=$_POST['name'];
    $pw=md5(md5($_POST['pw']));
    $connect=mysql_pconnect("localhost","root","1234");
    if(!mysql_select_db('xxx',$connect))
    die("数据库连接失败!");$sql="SELECT count(*) FROM md_common_member WHERE username='$username' and password='$pw'";
    $res = mysql_query($sql);//执行查询语句
    $row=mysql_fetch_assoc($res);
    if($row['uid']){
     global  $_G;
    $_G=$row['uid'];
     
    echo "登录成功";
    }else{echo "登录失败";}?>当然只是语句无误,这里弱弱问一句,discuz是怎么加密的呢?
      

  4.   


    $user='管理员';//邮箱或者昵称
    $pwd=md5(123456);
    if(strlen($user) > 6 && strlen($user) <= 32 && preg_match("/^([A-Za-z0-9\-_.+]+)@([A-Za-z0-9\-]+[.][A-Za-z0-9\-.]+)$/", $user)){
    //邮箱登录
    $uc=DB::fetch_first('SELECT uid,email,username,password,salt FROM %t WHERE '.DB::field("email",$user),array('ucenter_members'));
    }else{
    //昵称登录
    $uc=DB::fetch_first('SELECT uid,email,username,password,salt FROM %t WHERE '.DB::field("username",$user),array('ucenter_members'));
    }
    $pwd=md5($pwd.$uc['salt']);
    if($pwd===$uc['password']){
    //登录成功
    //验证的密码是pre_ucenter_members表中的password字段,它是由用户密码md5后加上salt字段(注册时随机生成的)再md5生成的
    }else{
    //失败
    }//你也可以引入ucenter进行登录
    //调用之前,你需要loaducenter();才可以使用uc_user_login
    //参考http://faq.comsenz.com/library/UCenter/interface/interface_user.htm
      

  5.   

    最后一个问题了,登录后如何赋值给全局变量,更新session。看了参考文档,水平有限,看不明白。
      

  6.   


    $uid=1;//用户uid
    $cookietime = 31536000;
    if(($member = getuserbyuid($uid, 1))) {
    //这个设置后,本网站就是登录状态了,其实下面的setloginstatus()里面也执行了这个操作,可以没有,直接执行setloginstatus
    dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);
    }
    require_once libfile('function/member');
    //设置后,可以用$_G['uid'],$_G['username']...获取用户信息,session和统计也在里面执行了
    setloginstatus($member, $cookietime);
    //若是有其他网站应用,要执行下面的同步登陆
    if($_G['setting']['allowsynlogin']) {
    loaducenter();
    //将$ucsynlogin输出到网页上,执行同步登陆
    $ucsynlogin = uc_user_synlogin($uid);
    }
    //更新用户状态,TIMESTAMP,discuz的时间常量
    C::t('common_member_status')->update($uid, array('lastip' => '', 'lastvisit' =>TIMESTAMP, 'lastactivity' => TIMESTAMP));
      

  7.   

    可以用ucenter实现,前提是需要在Ucenter里面要增加一个应用
    官方有个demo,关于登陆,注销,获取用户信息,收发短消息。
    见:
    http://faq.comsenz.com/library/UCenter/example/example_index.htm
    demo下载:
    http://faq.comsenz.com/library/UCenter/example/examples.zip下载后解压,放到任意可以访问到的网站目录中,把你论坛中的uc_client复制到,demo的根路径中。
    再配置一下demo中的config.inc.php,与ucenter中的一样就可以。下面运行效果:
      

  8.   

    http://bbs.csdn.net/topics/390952723  请到这里接分
      

  9.   


    http://bbs.csdn.net/topics/390952720http://bbs.csdn.net/topics/390952721请到这两个帖接分,谢谢    这个贴使命完成,提前结束。