请看效果图

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

\source\function\function_member.php

找到函数function setloginstatus()

把以下的代码

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

变为:

  1. dsetcookie('auth', authcode("{$member['password']}\t{$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;width: 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']}\t{$member['uid']}", 'ENCODE'), $cookietime, 1, true);

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

  1. {$_COOKIE['fgiC_2132_loginuser']

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

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

到这里,我们基本就完成了,但是退出怎么做呢?打开文件source\class\class_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解决的方法是:文件source\module\member\member_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

phpcms首页如加上用户登录的信息?的更多相关文章

  1. 使用触发器实现记录oracle用户登录失败信息到alert.log日志文件

    前面我们说了用oracle自带的审计功能可以实现记录用户登录失败日志到数据表中(链接:http://www.54ok.cn/6778.html).今天我们来分享一下如何把用户登录失败信息记录到aler ...

  2. phpcms v9 如何实现用户登录

    因为有时候我们需要自己实现用户登录,比如我们用phpcms做一个微信Oauth2.0授权,授权之后直接登录,这过程中不需要用户输入账户和密码.所以我们就要搞清楚,phpcmsv9它是怎么实现用户登录的 ...

  3. Servlet案例5:用户登录失败信息回显

    登录失败信息回显不会的新的一个页面,而是显示在登录页面 一种方法是: 登录页面表单中每个字段后添加<span>标签写入失败信息,利用ajax技术 通过改变<span>标签的di ...

  4. Linux用户登录信息

    1.用户登录日志信息 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间: /var/log/wtmp:记录当前正在登录和 ...

  5. 实现Web上的用户登录功能

    关于如何实现web上的自动登录功能 文章来源http://coolshell.cn/articles/5353.html Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能 ...

  6. MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  7. jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)

    JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...

  8. 你会做Web上的用户登录功能吗?

    Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关 ...

  9. MVC过滤器实现用户登录验证

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

随机推荐

  1. mongo批量更新、导入导出脚本

    批量更新,一定要加上最后的条件: db.getCollection('cuishou_user').update( {,,,,,]}}, //query {$set:{)}},// update {m ...

  2. [Python Essential Reference, Fourth Edition (2009)]读书笔记

    Python programs are executed by an interpreter. When you use Python interactively, the special varia ...

  3. TCP粘包, UDP丢包, nagle算法

    一.TCP粘包 1. 什么时候考虑粘包 如果利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题(因为只有一种包结构,类似于http协议,UDP不会出 ...

  4. kinect2的标定

    我用的是ubuntu14.04LTS,ROS 版本是indigo,kinect v2,我是用双系统装的ubuntu,关于怎么使用安装kinect2的安装以及使用的都在github上有着详细的说明 Ki ...

  5. Matlab函数——std,std2与mean,mean2区别

    最近看代码,经常看到std,std2的用法,由于刚刚学习,网上搜索了下,没有找到解答,看了help,s = std(X,flag)s = std(X,flag,dim)  ,只告诉我们 flag,di ...

  6. Java设计模式(9)适配器模式(Adapter模式)

    适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 为何使用适配器模式 我们经常碰到要将两个没有关系的类组合在一起使用 ...

  7. jQuery笔记-插件开发小技巧

    jQuery官方文档上推荐开发插件时要按下面格式来写,我第一次看源代码时看到这样的写法,被郁闷了好半天. (function($) {// Code goes here})(jQuery); 下面将记 ...

  8. USB2.0学习笔记连载(九):USB设备驱动的安装

    在第一次插入USB设备时(笔者用的是自己做的USB最小系统来测试),插入电脑后,在设备管理器中会显示 未知设备,如下图所示: 点击右键,选择属性,在详细信息中可以看到硬件ID以及PID等,如下图所示. ...

  9. 利用altium怎么生成PDF及怎么1:1打印文档

    画完板子之后,还要生成原理图PDF文档,供其他设计人员参考和指正. 上图红框标注的两个地方,分别用于打印预览设置和生成原理图PDF.那么若是生成原理图PDF文档,则选择smart PDF即可. 点击s ...

  10. Ubuntu 安装软件方法

    Ubuntu软件安装有几种方式,常用的是deb包的安装方式,deb是debian系列的Linux包管理方式,Ubuntu软件安装属于debian的派生,也默认支持这种软件安装方式,当下载到一个deb格 ...