因为有时候我们需要自己实现用户登录,比如我们用phpcms做一个微信Oauth2.0授权,授权之后直接登录,这过程中不需要用户输入账户和密码。所以我们就要搞清楚,phpcmsv9它是怎么实现用户登录的。换名话说,phpcms的php代码在什么情况下会认定这个用户已经登录了。

首先,我们肯定要去看phpcms它原生的登录程序是怎么写的,然后我们要去看它是怎么判断这个用户已经登录了。

登录程序是怎么写的?

这个程序做了什么呢?

. 它从system.php这个配置文件里面读出了auth_key这个配置,把它和用户的http_user_agent拼接之后计算出一个md5值,再把这个md5值作为下一步生成令牌的密钥。

. 把用户的userid和密码的hash值用\t连接作为明文,用上一步得到的密钥进行加密,得到一个令牌。

. 把这个令牌写入用户的cookie(当然这个令牌真正写入cookie的时候又进行了一次加密, 不过对使用param::get_cookie/param::set_cookie来操作cookie来说,它是透明的。)

. 将一些常用信息写入cookie(不能起到验证的作用,真正起验证作用的是第二步计算出来的令牌)

写入成功后会得到如下的cookie

他是如何验证用户已经登录的?

这个程序又做了什么呢?

. 他读取了cookie中写入的令牌。

. 他用同样的方式计算出了加密的密钥

. 用这个密钥去解密这个令牌,得到令牌中记录的userid以及密码的hash值。

. 去数据库中找到这个userid对应的整条记录

. 比对password

所以如果我们如何做phpcms的登录呢?

以微信为例,

. 我们可以通过微信的Oauth2.0接口取得用户的openid, 去数据库里面找到对应的用户的信息。

. 取出其中的userid和password。

. 计算密钥以及生成令牌

. 将令牌写入用户cookie

这样我们就可以实现一个Oauth2.0的登录方式。

转载请注明出处: http://www.zeroplace.cn/article.asp?id=917&utm_source=tuicool 谢谢合作

phpcms v9 如何实现用户登录的更多相关文章

  1. phpcms V9如何判断用户是否登录以及登陆后的标签写法问题

    首先要获取userid {php$userid=param::get_cookie('_userid');}​ 然后再判断是否为空 {if $userid}...这里写已经登录之后的代码...{els ...

  2. phpcms V9静态判断会员登录状态的方法

    phpcms v9如何在任意地方判断会员的登录状态呢?在php中是比较好判断的,代码如下 <?php if (!$_userid){ echo"会员没有登录"; }else ...

  3. phpcms首页如加上用户登录的信息?

    请看效果图 我用的是cookie的方法,请先打开discuz的文件 \source\function\function_member.php 找到函数function setloginstatus() ...

  4. phpcms v9 表单向导里添加图片字段,提示会话过期,请重新登陆

    用 phpcms v9 制作前端用户提交信息时,有个图片上传的栏目. 如果注释 /phpcms/modules/attachment/attachment.php 20//判断是否登录 21 if(e ...

  5. [转]phpcms 判断用户登录代码

    <!-- 用户登录开始 --> <?php //读取用户信息 $ypzy_userid = param::get_cookie('_userid'); if(!empty($ypzy ...

  6. phpcms V9 整合 Discuz! X2 教程

    整合原理: UCenter 作服务端:phpsso 与 Discuz! 分别作 UCenter 的客户端应用:phpsso 与 Discuz! 通过 UCenter 发生交互. phpcms 通过 p ...

  7. PHPCMS V9 环境搭建

    PHPCMS V9的学习总结分为以下几点: [1]PHPCMS 简介 PHP原始为Personal Home Page的缩写,(外文名:PHP: Hypertext Preprocessor,中文名: ...

  8. 怎么安装phpcms?PHPCMS V9安装图文教程

    Phpcms是国内领先的网站内容管理系统, 同时也是一个开源的PHP开发框架.PHPCMS V9目前已提供文章.图片.下载等内容模型,在此基础上可非常方便的扩展出信息.房产.交友.点评等功能.已有的模 ...

  9. PHPCMS V9实现硬件地址MAC绑定访问技术实现

    目的:会员登录需要 用户名.密码.身份识别码(新增字段) 效果:  解决方法: 目前数据库中macaddress字段已经添加,修改了phpcms\modules\member\index.php 63 ...

随机推荐

  1. js获取页面url的方法

    我们可以用javascript获得其中的各个部分 1, window.location.href 整个URl字符串(在浏览器中就是完整的地址栏) 本例返回值: http://ifisker.com/b ...

  2. mac 下终端访问文件出现“Permission Denied”解决方案

    mac 下终端访问文件出现“Permission Denied”解决方案: 一个文件有3种权限,读.写.可执行,你这个文件没有可执行权限,需要加上可执行权限. 1. 终端下先 cd到该文件的目录下 2 ...

  3. C#实现AES加解密方法

    using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...

  4. Fortran向C传递NULL值

    在很多C或C++的头文件定义中,NULL被指定定义为0,这里不再具体展开 gfortran的手册关于iso c binding的章节,定义NULL如下 Moreover, the following ...

  5. 微信用户量破6.5亿 首超移动QQ

    腾讯控股有限公司昨日公布了微信和WeChat合并月活跃用户量达到6.5亿,同比再涨39%.QQ在移动智能终端月活为6.39亿,同比增长18%,尽管势头也不错,但这是第一次,微信干掉了移动QQ! 201 ...

  6. CentOS 7安装Splunk

    导读 Splunk是探索和搜索数据的最有力工具,从收集和分析应用程序.Web服务器.数据库和服务器平台的实时可视化海量数据流,分析出IT企业产生的海量数据,安全系统或任何商业应用,给你一个总的见解获得 ...

  7. gcc编译C++程序

    gcc动态编译和静态编译方法 一.单个源.cpp文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */ #i ...

  8. Linux netstat详解

    做计算机管理员,我们都必要了解一下netstat这个命令,它是一个查看网络连接状态的工具,在windows下也默认有这个工具.Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WA ...

  9. Resumable uploads over HTTP. Protocol specification

    Valery Kholodkov <valery@grid.net.ru>, 2010 1. Introduction This document describes applicatio ...

  10. Hibernate与 MyBatis的比较

    希望大家指出不对之处. 第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Myb ...