phpcms v9 如何实现用户登录
因为有时候我们需要自己实现用户登录,比如我们用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 如何实现用户登录的更多相关文章
- phpcms V9如何判断用户是否登录以及登陆后的标签写法问题
首先要获取userid {php$userid=param::get_cookie('_userid');} 然后再判断是否为空 {if $userid}...这里写已经登录之后的代码...{els ...
- phpcms V9静态判断会员登录状态的方法
phpcms v9如何在任意地方判断会员的登录状态呢?在php中是比较好判断的,代码如下 <?php if (!$_userid){ echo"会员没有登录"; }else ...
- phpcms首页如加上用户登录的信息?
请看效果图 我用的是cookie的方法,请先打开discuz的文件 \source\function\function_member.php 找到函数function setloginstatus() ...
- phpcms v9 表单向导里添加图片字段,提示会话过期,请重新登陆
用 phpcms v9 制作前端用户提交信息时,有个图片上传的栏目. 如果注释 /phpcms/modules/attachment/attachment.php 20//判断是否登录 21 if(e ...
- [转]phpcms 判断用户登录代码
<!-- 用户登录开始 --> <?php //读取用户信息 $ypzy_userid = param::get_cookie('_userid'); if(!empty($ypzy ...
- phpcms V9 整合 Discuz! X2 教程
整合原理: UCenter 作服务端:phpsso 与 Discuz! 分别作 UCenter 的客户端应用:phpsso 与 Discuz! 通过 UCenter 发生交互. phpcms 通过 p ...
- PHPCMS V9 环境搭建
PHPCMS V9的学习总结分为以下几点: [1]PHPCMS 简介 PHP原始为Personal Home Page的缩写,(外文名:PHP: Hypertext Preprocessor,中文名: ...
- 怎么安装phpcms?PHPCMS V9安装图文教程
Phpcms是国内领先的网站内容管理系统, 同时也是一个开源的PHP开发框架.PHPCMS V9目前已提供文章.图片.下载等内容模型,在此基础上可非常方便的扩展出信息.房产.交友.点评等功能.已有的模 ...
- PHPCMS V9实现硬件地址MAC绑定访问技术实现
目的:会员登录需要 用户名.密码.身份识别码(新增字段) 效果: 解决方法: 目前数据库中macaddress字段已经添加,修改了phpcms\modules\member\index.php 63 ...
随机推荐
- day4作业之信息表
实在是太low了,终究是自己写的,记录下 #!/usr/bin/env python # coding=utf8 import os, re #这里我把查询这块分为3个函数了,纠结了很久是放一起还是分 ...
- Python socket编程之五:更新分时图
f1.py # -*- coding: utf-8 -*- import socket import struct import sqlalchemy import pandas ########## ...
- bat programming is easy and powerful
用linux的角度来思考windows,习惯了linux的shell后, 再来看windows的bat编程,就简单多了,简直就是理所当然 实际上windows的cmd命令行和linux的shell命令 ...
- 解决SQL SERVER LDF文件过大的问题
我的SQL server数据库仅用作分析用, 不需要考虑数据备份和恢复的问题. 每天都会增长大量的数据, 现在碰到的问题是, ldf 文件增长的非常厉害, 需要压一压. 参考文章: htt ...
- 《PHP程序设计》读书笔记
好久没有更新过我的博客了,主要前一阵子去了实习,现在实习进入尾声,终于有机会看看书了. 在前一阵子的实习中,用到最多就是PHP的CI框架和Jquery,所以现在再看一本有关PHP的书籍来深刻认识一下P ...
- java笔记--异常详解与处理
一.异常概念 Throwable类是Java中所有错误或异常的超类. 1.只有当对象是此类(或其子类)的实例时,才能通过Java虚拟机或着Java throw语句抛出. 2.只有此类或其子类才 ...
- java笔记--超级类Object多线程的应用+哲学家进餐算法内部类与多线程结合
关于Object类中的线程方法: Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notif ...
- lvs之nat技术的学习与实践
lvs nat 服务器搭建 1.配置三个虚拟机.一台用于做lvs 两台用于做web server 进行测试 (lvs服务器要配备两块网卡); lvs 服务器 两块网卡 分别为vmnet1 vm ...
- HDOJ 1856
#include<cstdio> #include<cstdlib> typedef struct ufse *ufset; struct ufse { ]; ]; }UFS; ...
- python - PyQuery
偶尔的机会,知道这么个扩展,手贱翻了下文档,发现似乎挺有意思,遂记录一二. what: 这是一个python版本的jquery,而且是后端执行的,至少官方是这么说的: pyquery allows y ...