php實現登陸
⑴ 請教用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登陸頁面完整代碼
PHP登陸後跳轉到登陸前頁面,利用$_SERVER全局變數可以實現這個功能,下面有個不錯的示例,希望對大家有所幫助
最近手上一個小項目讓我接觸到PHP編程,簡單的登陸功能已經OK。可是在實際使用的時候發現一個問題:用戶A發送一個鏈接給用戶B,B打開時頁面提示登陸,可是登陸成功後,卻跳轉到了首頁,而並不是A發送的鏈接。為了有更好的用戶體驗,B登陸成功後應該自動跳轉到登陸前的鏈接。查了PHP幫助手冊,利用$_SERVER全局變數可以實現這個功能。 $_SERVER是PHP的一個超全局變數,關於$_SERVER變數的詳細解釋可以參考:http://www.php.net/manual/zh/reserved.variables.server.php 具體實現方法為:在提示用戶登錄的同時,在session或者cookie中記錄下請求頁面的URL;登錄驗證成功後在跳轉回該URL。 checklogin.php 代碼如下: session_start(); if (!isset ($_SESSION['login_ok'])) { echo "<script language=javascript>alert ('要訪問的頁面需要先登錄。');</script>"; $_SESSION['userurl'] = $_SERVER['REQUEST_URI']; echo '<script language=javascript>window.location.href="login.php"</script>'; } login.php 代碼如下: session_start(); //此處省略了賬號密碼驗證代碼,驗證OK再執行下面代碼 if (isset ($_SESSION['userurl'])) { //會話中有要跳轉的頁面 $url = $_SESSION['userurl']; } else { //沒有要跳轉的頁面,則轉到首頁 $url = "home.php"; } //0.5s後跳轉 echo "<meta http-equiv="refresh" content="0.5;url=$url">";
⑶ php如何實現登陸後返回原頁面
在跳轉到登錄頁面前要將訪客訪問的頁面的url作為參數傳遞過去,登錄驗證後,授予訪問許可權之後跳轉到該url指定的頁面。
比如登錄前的url為:openphp.html 當訪客訪問時,點擊無許可權,跳轉到登錄頁面的地址就為login.php?url=openphp.html,這樣在登錄時就可以用GET方式獲取該參數 openphp.html,登錄驗證成功後跳轉到openphp.html 這個頁面就可以了。
⑷ php登錄系統怎麼做
簡單地說,登錄系統,就是用php程序獲取等表單數據,並記錄相關數據進入資料庫,設置相關數據寫入session,記錄登錄狀態後,進入登陸後界面就可以了
當然還需要很多細節的知識,需要仔細了解了,可以從網上下載一個簡單登錄系統,研究研究吧!
⑸ PHP來實現網站的注冊和登錄
說明: 對於小白學習php還是先下一個phpstudy吧 比較便捷許多且自帶mysql
1、打開phpstudy並啟動
2、打開mysql管理器並啟動MYSQL-front 如圖所示
1、建立一個名為register的html文件
2、建立一個名為registApi的php文件並剛建立的html相連
-拿到用戶的欄位和密碼
-查詢是否有重名現象(註:可以在php中嵌入html語句但一般寫在外面如該圖末尾所示)
-根據返回值判斷是否成功
1、返回登錄頁面
2、創建一個名為loginApi的php文件並與剛剛的html相連接
3、若用戶登錄成功返回一個成功的界面所以創建一個success的html
⑹ 怎麼用php模擬登陸
php 模擬登陸,可以使用 curl,以下是示例代碼:
$post="name=2&userType=1&passwd=asdf&loginType=1&rand=6836&imageField.x=25&imageField.y=7";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://網址/login.action");
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_jar);
$result=curl_exec($ch);
curl_close($ch);
