用戶自動登錄一個月後的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/zh-hk/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

發表回復

登錄後才能評論