日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP用Session實現用戶登陸功能

瀏覽:292日期:2022-06-06 10:09:46
目錄
  • 一、啟動 Session 會話,并創建一個 $admin 變量:
  • 二、驗證提交數據
  • 三、判斷是否登陸:
  • 四、如果要登出系統怎么辦?銷毀 Session 即可。
  • 五、設置生存周期

對比起Cookie,Session 是存儲在服務器端的會話,相對安全,并且不像 Cookie 那樣有存儲長度限制。由于 Session 是以文本文件形式存儲在服務器端的,所以不怕遠程用戶修改 Session 內容。實際上在服務器端的 Session 文件,PHP 自動修改 Session 文件的權限,只保留了系統讀和寫權限,而且不能通過 ftp 修改,所以安全得多。

因為客戶端 Cookie 中的信息是有可能被修改的。假如你存儲 $admin 變量來表示用戶是否登陸,$admin 為 true 的時候表示登陸,為 false 的時候表示未登錄,在第一次通過驗證后將 $admin 等于 true 存儲在 Cookie,下次就不用驗證了,這樣對么?錯了,假如有人偽造一個值為 true 的 $admin 變量那不是就立即取的了管理權限么?非常的不安全。

而 Session 就不同了,我們可以單純存儲一個 $admin 變量來判斷是否登陸,首次驗證通過后設置 $admin 值為 true,以后判斷該值是否為 true,假如不是,轉入登陸界面,這樣就可以減少很多數據庫操作了。

一、啟動 Session 會話,并創建一個 $admin 變量:

<?php
//  啟動 Session
session_start();
//  聲明一個名為 admin 的變量,并賦空值。
$_SESSION["admin"] = null;
?>

二、驗證提交數據

假設數據庫存儲的是用戶名和 md5 加密后的密碼:

login.php:

<?php
//  表單提交后...
$posts = $_POST;
//  清除一些空白符號
foreach ($posts as $key => $value) {
    $posts[$key] = trim($value);
}
$password = md5($posts["password"]);
$username = $posts["username"]; 

$query = "SELECT `username` FROM `user` WHERE `password` = "$password" AND `username` = "$username"";
//  取得查詢結果
$userInfo = $DB->getRow($query); 

if (!empty($userInfo)) {
    //  當驗證通過后,啟動 Session
    session_start();
    //  注冊登陸成功的 admin 變量,并賦值 true
    $_SESSION["admin"] = true;
} else {
    die("用戶名密碼錯誤");
}
?>

三、判斷是否登陸:

<?php
//  防止全局變量造成安全隱患
$admin = false;
//  啟動會話,這步必不可少
session_start();
//  判斷是否登陸
if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {
    echo "您已經成功登陸";
} else {
    //  驗證失敗,將 $_SESSION["admin"] 置為 false
    $_SESSION["admin"] = false;
    die("您無權訪問");
}
?>

四、如果要登出系統怎么辦?銷毀 Session 即可。

<?php
session_start();
//  這種方法是將原來注冊的某個變量銷毀
unset($_SESSION["admin"]);
//  這種方法是銷毀整個 Session 文件
session_destroy();
?>

注釋:session_destroy() 將重置 session,您將失去所有已存儲的 session 數據。

五、設置生存周期

Session 能否像 Cookie 那樣設置生存周期呢?有了 Session 是否就完全拋棄 Cookie 呢?我想說,結合 Cookie 來使用 Session 才是最方便的。

Session 是如何來判斷客戶端用戶的呢?它是通過 Session ID 來判斷的,什么是 Session ID,就是那個 Session 文件的文件名,Session ID 是隨機生成的,因此能保證唯一性和隨機性,確保 Session 的安全。一般如果沒有設置 Session 的生存周期,則 Session ID 存儲在內存中,關閉瀏覽器后該 ID 自動注銷,重新請求該頁面后,重新注冊一個 Session ID。

如果客戶端沒有禁用 Cookie,則 Cookie 在啟動 Session 會話的時候扮演的是存儲 Session ID 和 Session 生存期的角色。

  • 通過Cookie設置 Session 的生存期:
<?php
session_start();
//  保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
  • 通過函數 session_set_cookie_params(); 來設置 Session 的生存期的,該函數必須在 session_start() 函數調用之前調用:
<?php
//  保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
  • 假設客戶端禁用 Cookie 怎么辦?沒辦法,所有生存周期都是瀏覽器進程了,只要關閉瀏覽器,再次請求頁面又得重新注冊 Session。那么怎么傳遞 Session ID 呢?通過 URL 或者通過隱藏表單來傳遞,PHP 會自動將 Session ID 發送到 URL 上,URL 形如:http://www.test.cn/index.php?PHPSESSID= bba5b2a240a77e5b44cfa01d49cf9669,其中 URL 中的參數 PHPSESSID 就是 Session ID了,我們可以使用 $_GET 來獲取該值,從而實現 Session ID 頁面間傳遞。
<?php
//  保存一天
$lifeTime = 24 * 3600;
//  取得當前 Session 名,默認為 PHPSESSID
$sessionName = session_name();
//  取得 Session ID
$sessionID = $_GET[$sessionName];
//  使用 session_id() 設置獲得的 Session ID
session_id($sessionID); 

session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>

手動設置 Session 文件的保存路徑,session_save_path() 就提供了這樣一個功能。我們可以將 Session 存放目錄指向一個不能通過 Web 方式訪問的文件夾,當然,該文件夾必須具備可讀寫屬性。

<?php
//  設置一個存放目錄
$savePath = "./session_save_dir/";
//  保存一天
$lifeTime = 24 * 3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>

到此這篇關于PHP用Session實現用戶登陸功能的文章就介紹到這了,更多相關PHP用Session登陸內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩国产欧美在线视频| 国产va在线视频| 亚洲高清二区| 免费高潮视频95在线观看网站| 美女尤物国产一区| 国产精品v亚洲精品v日韩精品| 97久久亚洲| 色8久久久久| 欧美一区二区三区免费看| 国产日韩一区二区三区在线 | 一区三区视频| 亚洲一级在线| 一区二区日韩免费看| 免费国产亚洲视频| 亚洲精品美女| 国产日韩视频| 精品国产乱码久久久久久樱花| 福利片在线一区二区| 黑森林国产精品av| 久久中文字幕二区| 国精品一区二区| 午夜在线精品| 日韩av三区| 精品美女在线视频| 日韩精品水蜜桃| 亚洲欧美日韩视频二区| 日本va欧美va瓶| 国产精品99精品一区二区三区∴| 久久97久久97精品免视看秋霞| 日韩成人免费| 欧美~级网站不卡| 一区二区三区国产盗摄| 国产精品网址| 日韩毛片视频| 亚洲一区欧美二区| 天堂va在线高清一区| 国产精品啊v在线| 成人av三级| 亚洲欧美日本日韩| 国产精品久av福利在线观看| 日韩免费福利视频| 伊人久久婷婷| 欧美私人啪啪vps| 日韩精品1区| 中文无码日韩欧| 欧美精品二区| 91精品高清| 国产色99精品9i| 久久久久国产一区二区| 亚洲人成精品久久久| 国产日韩免费| 日本欧美不卡| 日本a口亚洲| 久久久9色精品国产一区二区三区| 蜜臀va亚洲va欧美va天堂| 国产精品视频一区二区三区综合| 欧洲在线一区| 日韩av电影一区| 99久久夜色精品国产亚洲1000部| 日韩综合小视频| 日韩精品免费一区二区在线观看 | 国产精品巨作av| 国产成人精品一区二区免费看京 | 久久亚洲国产| 国产精品成人国产| 蜜臀久久99精品久久一区二区 | 日本a口亚洲| 欧美三级精品| 欧美一区=区三区| av一区二区高清| 欧美亚洲网站| 亚洲激情另类| 精品久久美女| 亚久久调教视频| 久久久久久久久99精品大| 日本免费新一区视频| 1024精品久久久久久久久| 免费一区二区三区在线视频| re久久精品视频| 视频在线不卡免费观看| 亚洲另类av| 亚洲成人二区| 久久久久亚洲精品中文字幕| 综合国产精品| 久久精品国产亚洲夜色av网站| 日韩av一区二区三区四区| 91精品啪在线观看国产18| 欧美日韩一区二区三区四区在线观看 | 国产精品一区免费在线| 日韩在线观看不卡| 国产精品一区二区精品| 午夜av一区| а√天堂中文在线资源8| 国产亚洲高清一区| 久久午夜精品一区二区| 欧美日韩水蜜桃| 福利在线一区| 国产亚洲久久| 亚洲资源网站| 亚洲经典在线| 91精品国产乱码久久久久久久| 免费视频一区二区三区在线观看| 蜜臀a∨国产成人精品| 日韩天堂在线| 久久精品国产99国产精品| 免费在线观看视频一区| 国产白浆在线免费观看| 精品中国亚洲| 国产极品一区| 亚洲精品进入| 99久久www免费| 国产成人精品一区二区免费看京 | 一区二区日韩免费看| av不卡在线看| 2023国产精品久久久精品双| 91欧美国产| 大香伊人久久精品一区二区| 欧美国产另类| 国产激情久久| 国产精品一区二区三区四区在线观看| 亚洲欧美久久久| 日韩中文字幕1| 香蕉视频成人在线观看| 狠狠色综合网| 羞羞答答国产精品www一本| 91久久中文| 午夜精品一区二区三区国产| 亚洲国产不卡| 国产亚洲毛片| 国产精品腿扒开做爽爽爽挤奶网站| 午夜影院欧美| 好吊日精品视频| 亚洲女人av| 在线观看一区| 亚洲精品九九| 亚洲综合三区| 最新国产精品视频| 欧美一区二区三区久久| 国产调教精品| 精品一区二区三区中文字幕视频 | 欧美日韩视频网站| 亚洲最新无码中文字幕久久| av亚洲一区二区三区| 蜜臀久久精品| 久久亚洲国产| 蜜桃视频欧美| 激情综合自拍| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲欧美视频| 亚洲美女久久| 国产精品s色| 超碰成人av| 欧美~级网站不卡| 蜜臀精品一区二区三区在线观看 | 精品国产91| 日韩久久精品网| 日韩亚洲在线| 香蕉久久久久久| 久久国内精品自在自线400部| 国产精品hd| 日韩电影免费在线观看| 红桃视频国产精品| 视频一区日韩精品| 国产精品久久国产愉拍| 国产精品99视频| 欧美特黄a级高清免费大片a级| 亚洲综合图色| 久久精品国产网站| 久久精品高清| 亚洲精品麻豆| 国产一区调教| 99精品99| 国产精品麻豆成人av电影艾秋| 国产精品原创| 国产精品腿扒开做爽爽爽挤奶网站| 日韩不卡手机在线v区| 欧美国产美女| 国产精品腿扒开做爽爽爽挤奶网站| 欧美日韩a区| 久久蜜桃精品| 日韩激情av在线| 黑人精品一区| 午夜亚洲福利| 日韩欧美国产精品综合嫩v| 亚洲欧美日韩专区| 麻豆国产欧美一区二区三区 | 国产成人精品一区二区三区免费 | 亚洲国产专区| 91麻豆精品| 天堂资源在线亚洲| 欧美日一区二区在线观看| 日韩高清不卡| 欧美在线黄色| 欧美午夜精品一区二区三区电影| 日韩在线观看一区二区三区| zzzwww在线看片免费| 色8久久久久| 麻豆视频在线看| 日韩精品三区四区| 99精品美女|