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

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

PHP用Session實現用戶登陸功能

瀏覽:295日期: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久久,三上悠亚国产精品一区二区三区
日韩制服丝袜av| 免费在线观看精品| 国产精品尤物| 亚洲精品成人图区| 免费欧美一区| 欧美国产中文高清| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 老牛影视一区二区三区| 日韩av网站在线观看| 人在线成免费视频| 99视频+国产日韩欧美| 国产乱人伦丫前精品视频| 久久久亚洲一区| 欧美日韩亚洲一区二区三区在线| 国产伦精品一区二区三区在线播放 | 电影91久久久| 久久国产福利| 久久精品国产久精国产| 爽好多水快深点欧美视频| 欧美一级二区| 亚洲精品2区| 蜜桃av在线播放| 蜜臀精品一区二区三区在线观看| 久久国产免费| 国产成人久久精品一区二区三区| 亚洲欧洲专区| 在线视频亚洲| 国产劲爆久久| 91综合久久爱com| 亚洲欧美日韩精品一区二区| 久久久国产精品网站| 日韩不卡在线观看日韩不卡视频| 国产传媒在线| 国产日韩精品视频一区二区三区| 亚洲四虎影院| 国产精品福利在线观看播放| 亚洲aa在线| 欧美一级鲁丝片| 蜜臀av一区二区三区| 亚洲激情五月| 欧美特黄a级高清免费大片a级| 国产情侣一区| 日韩精品中文字幕一区二区| 亚洲色图综合| 欧美一级精品| 久久久久99| 裤袜国产欧美精品一区| 欧美日韩1区2区3区| 青青青免费在线视频| 精品一区二区三区免费看| 国产极品一区| 日本在线不卡视频| 国产精品久久久久av电视剧| 国产一区二区三区四区五区传媒| 精品中文在线| 日本亚洲最大的色成网站www | 少妇高潮一区二区三区99| 国产不卡人人| 亚洲精品系列| 欧美网站在线| 一区二区亚洲精品| 国产女优一区| 欧美日韩免费看片| 99精品在线| 午夜国产精品视频| 久久激情婷婷| 老色鬼精品视频在线观看播放| 国产精品亚洲欧美| 免费一级欧美片在线观看网站 | 国产精品分类| 精品亚洲a∨| 天堂√8在线中文| 久久av影视| 久久精品色播| 日韩精品诱惑一区?区三区| 久久精品在线| av资源新版天堂在线| 91精品婷婷色在线观看| 影视先锋久久| 四虎影视精品| 天堂va蜜桃一区二区三区| 四虎精品一区二区免费| 日韩中出av| 午夜在线视频观看日韩17c| 视频一区在线视频| 欧美天堂一区| 日韩黄色在线观看| 日本一区二区免费高清| 久久一区欧美| 美女网站一区| 国产国产精品| 日本aⅴ精品一区二区三区| 成人国产精品一区二区免费麻豆| 国产精品免费大片| 日韩在线短视频| 亚洲专区视频| 国产视频网站一区二区三区| 日韩成人精品一区二区三区| 黄色网一区二区| 久久www成人_看片免费不卡| 亚洲精品va| 日韩中文字幕无砖| yellow在线观看网址| 精品视频国产| 久久精品天堂| 亚洲一区免费| 首页国产精品| 99成人在线视频| 五月亚洲婷婷| 群体交乱之放荡娇妻一区二区| 免费在线观看成人| 色乱码一区二区三区网站| 欧洲激情综合| 精品中文字幕一区二区三区四区| 久久精品网址| 视频一区欧美精品| 精品一区二区三区中文字幕| 色综合狠狠操| 狠狠操综合网| 欧美xxxx性| www在线观看黄色| 欧美另类中文字幕| 亚洲午夜一级| 国产精品久久久久久久久妇女| 蜜臀av性久久久久蜜臀aⅴ四虎| 首页国产精品| 久久精品99国产精品日本| 国产高清一区| 日韩精品欧美精品| 欧美不卡在线| 国产精品99一区二区三区| 极品日韩av| 国产在视频一区二区三区吞精| 亚洲一区日本| 国产三级精品三级在线观看国产| 国语精品一区| 日韩在线观看中文字幕| 国产高清一区| 97久久亚洲| 视频在线观看91| 九九综合九九| 国产精品第一| 日韩综合小视频| 亚洲欧洲一区| 在线一区二区三区视频| 国产精品欧美日韩一区| 日韩在线一区二区| 性欧美69xoxoxoxo| 亚洲精品一二| 国产日韩专区| 欧美1级日本1级| 久久免费精品| 久久午夜精品一区二区| 欧美精品一线| 久久久一二三| 99久久精品网站| 亚洲精品.com| 国产欧美一区二区三区国产幕精品| 亚洲精品亚洲人成在线观看| 久久国产精品久久w女人spa| 亚洲网址在线观看| 99国产精品| 99久久久国产精品美女| 日韩一级精品| 欧美xxxx中国| 999久久久91| 久久99免费视频| 美女在线视频一区| 色婷婷色综合| 欧美日韩在线精品一区二区三区激情综合 | 欧美日韩精品一区二区三区视频| 福利在线一区| 国产精品99久久久久久董美香| 国产亚洲精品精品国产亚洲综合| 91精品一区国产高清在线gif| 福利在线免费视频| 秋霞影视一区二区三区| 欧美一区精品| 麻豆亚洲精品| 日韩一区二区三免费高清在线观看| 日韩欧美在线精品| 午夜国产欧美理论在线播放 | 午夜久久美女| 国产精品亚洲产品| 性欧美69xoxoxoxo| 麻豆久久精品| 欧美亚洲tv| 中文字幕亚洲影视| 日本成人精品| 精品国产aⅴ| 欧美天堂一区| 精品中文字幕一区二区三区四区| 成人污污视频| 少妇精品导航| 久久国产高清| 欧美在线91| 精品一区二区三区免费看 | 亚洲美洲欧洲综合国产一区| 欧美激情一区| 欧洲av不卡|