zoukankan      html  css  js  c++  java
  • phpcms首页如加上用户登录的信息?

    请看效果图

    我用的是cookie的方法,请先打开discuz的文件

    sourcefunctionfunction_member.php

    找到函数function setloginstatus()

    把以下的代码

    1. dsetcookie('auth', authcode("{$member['password']} {$member['uid']}", 'ENCODE'), $cookietime, 1, true);  
    2.     dsetcookie('loginuser');  

    变为:

     
    1. dsetcookie('auth', authcode("{$member['password']} {$member['uid']}", 'ENCODE'), $cookietime, 1, true);  
    2.     dsetcookie('loginuser',$_G['username']);  

    在首页我们可以这里做:


     
    {if $_COOKIE['fgiC_2132_auth']}  
            <li  class="header_link" style="margin-left: 10px;"><span style="padding-left: 16px;margin-top: 5px;height:25px; 20px;background: url(statics/images/my2400/user_online.gif) no-repeat;background-position: 0px 2px;"></span><a href="{siteurl()}bbs/home.php?mod=space" target="_blank">欢迎,{$_COOKIE['fgiC_2132_loginuser']}</a>  
            </li>  
              
            <li  class="header_link"><span class="pipe" style="margin-left: 5px;margin-right: 5px;">|</span><a href="{siteurl()}bbs/member.php?mod=logging&action=logoff">退出</a></li>  
            {else}  
             <li class="reg_ico"></li>  
            <li class="header_link"><a href="{siteurl()}bbs/member.php?mod=register">注册</a></li>  
            <li class="login_ico"></li>  
            <li class="header_link"><a href="{siteurl()}bbs/member.php?mod=logging&action=login">登录</a></li>  
            {/if}  
    

      



    注意这里的cookie

     
    1. {if $_COOKIE['fgiC_2132_auth']}  

    就是上面的

    dsetcookie('auth', authcode("{$member['password']} {$member['uid']}", 'ENCODE'), $cookietime, 1, true);

    我们这里判断如果存在这个值就显示出登录的用户名相关的信息,没有的话就显示出登录界面

     
    1. {$_COOKIE['fgiC_2132_loginuser']  

    代表的是用户名,就是上面的

    1. dsetcookie('loginuser',$_G['username']);  

    到这里,我们基本就完成了,但是退出怎么做呢?打开文件sourceclassclass_member.php找到函数function on_logout()系统默认的就是这个用户退出函数,但是请看这个函数中有一个判断语句

     
    1. if($_GET['formhash'] != $_G['formhash']) {  
    2.             showmessage('logout_succeed', dreferer(), array('formhash' => FORMHASH, 'ucsynlogout' => $ucsynlogout));  
    3.         }  

    而我们一会要做的连接中是没有formhash这个值的,所以我们要新写一个退出函数如下:

     
    //add by jiang in order to logut in the home page  
            function on_logoff(){  
                    global $_G;  
      
            $ucsynlogout = $this->setting['allowsynlogin'] ? uc_user_synlogout() : '';  
            clearcookies();  
            $_G['groupid'] = $_G['member']['groupid'] = 7;  
            $_G['uid'] = $_G['member']['uid'] = 0;  
            $_G['username'] = $_G['member']['username'] = $_G['member']['password'] = '';  
            $_G['setting']['styleid'] = $this->setting['styleid'];  
      
            showmessage('logout_succeed', dreferer(), array('formhash' => FORMHASH, 'ucsynlogout' => $ucsynlogout));  
                  
            }  
    

      

    对比一下我们就可以知道,新写的退出函数只是少了上面的判断语句而以我们在phpcms做的首页中加入退出按钮:


     
    1. <a href="{siteurl()}bbs/member.php?mod=logging&action=logoff">退出</a>  

    那么到这里是否完成了呢?我们回到首页来点击一下会发现提示没有定义操作logoff解决的方法是:文件sourcemodulemembermember_logging.php找到

     
    1. if(!in_array($_GET['action'], array('login', 'logout','logoff'))) {  
    2. showmessage('undefined_action');  
    3. }  

    在array那里就新增加的logoff,这时再去点就没有提示了

    so

    done!

    转自:http://blog.csdn.net/tiangsu_php/article/details/7668504

  • 相关阅读:
    4g内存装64位WIN7好还是32位好(遇到问题,百度后解除疑惑)
    Windows Phone 7.5 “Mango”消息泄露 支持HTML5和Silverlight
    Tiobe发布2010年12月开发语言排名
    Adobe:Flash 10.2将全面提升性能
    ADO.NET Entity Framework使用实体数据
    使用GPU.NET针对GPU编程
    ADO.NET Entity Framework入门(实体框架)
    完美程序员的10种品质
    ADO.NET Entity Framework(实体框架)
    不适合当一名开发人员的10种迹象
  • 原文地址:https://www.cnblogs.com/xiaomifeng/p/8011939.html
Copyright © 2011-2022 走看看