用户自动登录一个月后的php,一个用户只能登录一次

本文目录一览:

php 下次自动登录

判断用户登没登陆一般是靠cookie来判断,所以这一个实现一般靠的是设定cookie的时间,先判断是否保持登录状态,如果保持就在设定cookie的时候把时间设的长一些。具体想多长都可以设,可以是一天,一个月,一年都可以。

setcookie(“TestCookie”, $value,time()+3600);

其中time()+3600就是时间,指的是从现在开始保持登录状态一个小时。

请教用PHP实现自动登录问题

1、在登录页面中添加一个复选框,让用户选择是否愿意在一定时间内实现自动登陆,例如两周。

代码:

input type=”checkbox” name=”autologin”两周内自动登录

2、在负责处理登录过程的Servlet中,判断用户是否选择了该复选框。如果是,则执行这两个操作:向用户发送两个Cookie,以及向数据库写入一条相应的记录。

代码:

Cookie ckUsername, ckSessionid;

if (autologin.equals(“on”)) {

 // 如果用户选择了“两周内自动登录”,则向用户发送两个cookie。

 // 一个cookie记录用户名,另一个记录唯一的验证码,

 // 并将此验证码写入数据库,以备用户返回时查询。(防止伪造cookie)

 ckUsername = new Cookie(“autoLoginUser”, user.getUsername()); // user是代表用户的bean

 ckUsername.setMaxAge(60 * 60 * 24 * 14);    //设置Cookie有效期为14天

 res.addCookie(ckUsername);

 sessionid = session.getId();   // 取得当前的session id

 ckSessionid = new Cookie(“sessionid”, sessionid);

 ckSessionid.setMaxAge(60 * 60 * 24 * 14);

 res.addCookie(ckSessionid);

 // 在数据库中插入相应记录

 userSessionDAO.insertUserSession(user, sessionid);

}

3、实现自动登录。因为用户下次访问的时候,可能直接访问网站的任何页面(例如通过收藏夹),而不一定是首页或者登录页面,所以我们需要用Filter拦截到达该网站的所有请求,并执行自动登录。

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {

 HttpServletRequest request = (HttpServletRequest) req;

 HttpSession session = request.getSession(true);

 String username;

 String sessionid;    // 此sessionid是上次用户登录时保存于用户端的识别码,用于用户后续访问的自动登录。不是本次访问的session id。

 Cookie[] cookies;

 CookieManager cm = new CookieManager(); // CookieManager是一个自定义的类,用于从Cookie数组中查找并返回指定名称的Cookie值。

 boolean isAutoLogin;

 // 如果session中没有user对象,则创建一个。

 User user = (User) session.getAttribute(“user”);

 if (user == null) {

  user = new User();   // 此时user中的username属性为””,表示用户未登录。

 }

 // 如果user对象的username为””,表示用户未登录。则执行自动登录过程。

 // 否则不自动登录。

 if (user.getUsername().equals(“”)) {

  // 检查用户浏览器是否发送了上次登录的用户名和sessionid,

  // 如果是,则为用户自动登陆。

  cookies = request.getCookies();

  username = cm.getCookieValue(cookies, “autoLoginUser”);

  sessionid = cm.getCookieValue(cookies, “sessionid”);

  isAutoLogin = userSessionDAO.getAutoLoginState(username, sessionid);   // 如果在数据库中找到了相应记录,则说明可以自动登录。

  if (isAutoLogin) {

   user.setUsername(username);

   user.setNickname(DBUtil.getNickName(username));

   session.setAttribute(“user”, user);   // 将user bean添加到session中。

  }

 }

 chain.doFilter(req, resp);

}

PHP如何实现自动记录上次登陆用户名??

客户端,因为这是用COOKIE来记录

setcookie(“user”, $_POST[‘user’], time()+86400*30);

$_COOKIE[‘user’]就是你想要的,失效时间为一个月

原创文章,作者:IUYZ,如若转载,请注明出处:https://www.506064.com/n/148101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
IUYZ的头像IUYZ
上一篇 2024-11-02 13:14
下一篇 2024-11-02 13:14

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • Python中接收用户的输入

    Python中接收用户的输入是一个常见的任务,可以通过多种方式来实现。本文将从以下几个方面对Python中接收用户的输入做详细阐述。 一、使用input函数接收用户输入 Pytho…

    编程 2025-04-29
  • Python弹框让用户输入

    本文将从多个方面对Python弹框让用户输入进行阐述,并给出相应的代码示例。 一、Tkinter弹窗 Tkinter是Python自带的图形用户界面(GUI)库,通过它可以创建各种…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • Zookeeper ACL 用户 anyone 全面解析

    本文将从以下几个方面对Zookeeper ACL中的用户anyone进行全面的解析,并为读者提供相关的示例代码。 一、anyone 的作用是什么? 在Zookeeper中,anyo…

    编程 2025-04-28
  • Python中获取用户输入命令的方法解析

    本文将从多个角度,分别介绍Python中获取用户输入命令的方法,希望能够对初学者有所帮助。 一、使用input()函数获取用户输入命令 input()是Python中用于获取用户输…

    编程 2025-04-27
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • Python接收用户键盘输入用法介绍

    本文将从多个方面对Python接收用户键盘输入进行详细阐述,给出相关的代码示例,让大家更好的了解和应用Python的输入功能。 一、输入函数 在Python中,我们可以使用两种函数…

    编程 2025-04-27
  • 如何在Linux中添加用户并修改配置文件

    本文将从多个方面详细介绍在Linux系统下如何添加新用户并修改配置文件 一、添加新用户 在Linux系统下创建新用户非常简单,只需使用adduser命令即可。使用以下命令添加新用户…

    编程 2025-04-27

发表回复

登录后才能评论