discuz判断用户登录

   

在include/common.inc.php 文件。程序开始先判断是否有cookie存到了sid值,然后解密cookie[‘auth‘]这个用户登录状态加密字符串,如果解密出来有uid值表示用户已登录。接下来是想要得到用户的基本信息。如果有uid则直接到members表查,如果没有,则根据是否有sid值要不要到sessions表查找(如果有sid,则到sessions查,因为在页面执行过程中footer.html模板执行 了updatesession函数,这个函数是记录在线用户的,已sid作为关键字,如果已登录则一起把用户信息存入,如果没有则只单存入sid值,还是 以sid作为表搜索主关键字插入一条新的记录。这个就解释了上面讲的为什么当解密出来没有uid值时当有sid值时到session查用户信息,查到还是 没有用户信息时才判定用户没有登录了)。

当这整个执行下来既没有sid值又没有用户信息则表示该用户第一次登录或者cookie值已过期,则random(6)随机给6位数给$sid变量,然后
在common.inc.php程序大概300行左右有判断是否存在sid值并且没有cookie(‘sid‘)值时,用cookie存下sid值。这样
用户再次访问时就肯定存有sid值(除非已过期)。这样的话在sessions里就用这个用户,则记下来当前在线人数。

而同步登录的login函数中,则cookie(‘sid‘,‘‘,-84000*365)掉,其他的正常cookie,这个理解了很久。我的理解是:用
户既然不在discuz登录的,是在别的地方登录,则表明没有在论坛呆过(或者就这样强行的指定没有浏览过,不考虑以前浏览过,还有sid值。因为
updatesession函数会给15分钟未在线的用户的记录给删除了)或者说就强行让sid重新生成。重新插入一条新的记录到sessions表中
去。

时间: 2024-08-05 08:01:26

discuz判断用户登录的相关文章

ASP.NET MVC下判断用户登录和授权的方法

日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在asp.net mvc中,微软虽然已经帮助开发者构建了ASP.NET Identity这样强大的验证授权框架,但是如果想定制更多的逻辑功能的话,还得自己动动手. 根据日常的开发经验,我总结了下面1种方法: 1 学习了很多人的代码后,发现在Controller里有一个OnActionExecuting方法,此

springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置

web.xml设置:(/拦截所有请求) <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name&

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

<!-- 用户登录开始 --> <?php //读取用户信息 $ypzy_userid = param::get_cookie('_userid'); if(!empty($ypzy_userid)){ $ypzy_memberinfo=get_memberinfo($ypzy_userid); } ?> {if $ypzy_userid} <!-- 登陆之后 --> <span onclick="window.location='{APP_PATH}i

python基础之判断用户登录

1.需求: 实现用户名和密码登录验证 1.判断用户名和密码是否正确.正确则打印欢迎信息,错误则输出具体错误原因信息 2.用户可以连续输入三次密码,超过三次则锁定用户. 3.密码位数必须超过六位. 2.流程图 3.代码实现 #!/usr/bin/python #-*- coding:utf-8 -*- #Author:taoyake #date:2018-5-29 #导入隐藏不显示密码的模块 import getpass username = 'taokey' #正确的登录用户名 password

实战3--应用EL表达式判断用户登录信息

1.判断用户名是否为空,空则显示提示信息 (1)编写index.jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w

vue 根据接口返回的状态码判断用户登录状态并跳转登录页

背景:后台接口返回code==501表示用户是未登录状态,需要登录才可访问: main.js中通过http拦截做路由跳转 import Vue from 'vue' import Axios from 'axios' Vue.prototype.$axios = Axios import { Loading, Message, MessageBox } from 'element-ui' // 超时时间 Axios.defaults.timeout = 5000 // http请求拦截器 var

Python判断用户登录状态,并返回结果

username = "Anker" passward = "Abc123" number =2 for i in range(1,4,1): _username = input("username:") _passward = input("passward:") if _username==username and _passward==passward: print("登录成功") break els

asp+mysql__不同类型用户登录

/***这里代码应用场景为多类用户登录,根据用户选择不同的单选按钮判断用户登录的类型,*从而进行不同的数据表进行判断,用户的用户名和密码是否正确.*/ 1 public partial class _Default : System.Web.UI.Page 2 { 3 public string USER = "", PASSWORD = "";//过滤用户的输入 4 public int TYPE = -1;//验证用户选择的类型,初始值-1 5 protecte

Discuz!X 插件开发判断用户是否登录的代码怎么写

转:http://www.bacysoft.cn/thread-71-1-1.html Discuz!X 插件开发判断用户是否登录的代码怎么写? 我们开发插件的时候,经常需要判断访问用户是否为注册用户,如果是则允许访问,否则弹出登录窗口提示用户登录! 实现此功能的代码如下: if(empty($_G['uid'])) { showmessage('to_login', '', array(), array('showmsg' => true, 'login' => 1)); } 复制代码 $_