php登陸功能
A. 請教用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);
}
B. 使用php實現用戶注冊和登錄功能製作 !急求大神幫助!
1、需要建立一個數據表test
id int(10) primary key not null increment
name char(4) not null
pass char(10) not null
age int(2)
city char(5)
2、html頁面自己寫,用表單post傳參
3、.php頁面,處理接收到的參數,於資料庫裡面的用戶名和密碼比對,若果正確,用Js框,輸出歡迎頁面,如果不多返回到登陸頁面
這里告訴你一個小技巧,很多時候我們都是拿用戶名和密碼一起比對,如果都正確則跳轉。這個地方其實我們需要防止sql注入攻擊,我們可以寫兩條語句,當用戶名正確,我們才執行下一條密碼比對語句,這樣可以有效防止sql的注入攻擊。
C. 詳解PHP如何實現單點登錄
可以配合session和資料庫(或緩存如redis或memcache)實現,具體步驟如下:
在登錄成功後保存一個時間戳+隨機字元的值,這個值暫時叫sign。把這個值存入資料庫(緩存),同時也存入session中。
寫一個函數,功能如下:讀取資料庫(緩存)中的sign,跟session中的sign對比。如不一致,則注銷當前session並提示:當前用戶已在其他地方登錄,你被頂下線。這個函數放到「鉤子」裡面,實現在每一個操作步驟之前都先調用此函數。
這樣,一個簡單的單點登錄功能就實現了。原理其實很簡單,就是每次登錄都把資料庫(緩存)裡面的sign都覆蓋一遍,這樣當之前登錄的人檢測到這個sign不一致以後就強制下線。
D. 如何用php做個登陸界面
你可以做一個簡單的例如你只衫搜有用戶名和密碼即可那麼你先在資料庫(以mysql為例)中建表例如叫做user 欄位為 id name pass分別是編或念歷號、用戶名、密碼長度分別是int(8) a_t(自動編號) 主鍵,varchar(50) ,varchar(50) 你可以添加一個測試數據 例如 1,admin,admin//說明密碼這里不說加密的問題,用明文實現 登錄頁面的代碼:login.php
E. PHP如何實現注冊和登錄
注冊頁面前面加個下拉框或者單選按鈕,然後把值傳過去,登錄的時候也選擇,傳值,然後在相應的分類查找這個人。注冊頁面前面加個下拉框或者單選按鈕,然後把值傳過去,登錄的時候也選擇,傳值,然後在相應的分類查找這個人。