溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在PHP中存儲session的方式有哪些

發布時間:2021-03-04 17:18:29 來源:億速云 閱讀:387 作者:Leah 欄目:開發技術

本篇文章為大家展示了在PHP中存儲session的方式有哪些,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創新的語法,主要用來做網站開發,許多小型網站都用php開發,因為php是開源的,從而使得php經久不衰。

首先要進行的配置如下:
1>php.ini中將session.save_handler = files 中的files改為User,其他默認即可,重啟Apache(好像沒改也行啊)
2>本實例創建的數據庫名叫php,    username: root        password:root
本實例設計的數據庫的表結構如下所示:

復制代碼 代碼如下:


create table mysession(
session_key char(32) not null,    
session_data text,
session_expiry int(11),
primary key(session_key)
);


第一列表示存儲session ID,第二列存儲session中的數據,第三列存儲有效期,呵呵(表結構就這么簡單)
下面就是關鍵的那份自定義函數的實現session_set_save_handler(......)

復制代碼 代碼如下:


<?php
function mysession_open($save_path, $session_name)
{
@mysql_connect("localhost", "root", "root")     //選擇數據庫之前需要先連接數據庫服務器
or die("數據庫服務器連接失敗");
@mysql_select_db("php")      //選擇數據庫mydb
or die("數據庫不存在或不可用");
return true;
}
function mysession_close()
{
return true;
}
function mysession_read($key)
{
@mysql_connect("localhost", "root", "root")     //選擇數據庫之前需要先連接數據庫服務器
or die("數據庫服務器連接失敗");
@mysql_select_db("php")      //選擇數據庫mydb
or die("數據庫不存在或不可用");
$expiry_time = time();       //獲取Session失效時間
//執行SQL語句獲得Session的值
$query = @mysql_query("select session_data from mysession "
."where session_key = '$key' and session_expiry > $expiry_time")
or die("SQL語句執行失敗");
if($row = mysql_fetch_array($query))
return $row['session_data'];
else
return false;
}
function mysession_write($key, $data)
{
@mysql_connect("localhost", "root", "root")     //選擇數據庫之前需要先連接數據庫服務器
or die("數據庫服務器連接失敗");
@mysql_select_db("php")      //選擇數據庫mydb
or die("數據庫不存在或不可用");
$expiry_time = time() + 1200;       //獲取Session失效時間
//查詢Session的鍵值是否已經存在
$query = @mysql_query("select session_data from mysession "
."where session_key = '$key'")
or die("SQL語句執行失敗");
//如果不存在,則執行插入操作,否則執行更新操作
if(mysql_numrows($query) == 0)
{
//執行SQL語句插入Session的值
$query = @mysql_query("insert into mysession values('$key', '$data', $expiry_time)")
or die("SQL語句執行失敗");
}
else
{
//執行SQL語句更新Session的值
$query = @mysql_query("update mysession set "
."session_data = '$data', session_expiry = $expiry_time "
."where session_key = '$key'")
or die("SQL語句執行失敗");
}
return $query;
}
function mysession_destroy($key)
{
@mysql_connect("localhost", "root", "root")     //選擇數據庫之前需要先連接數據庫服務器
or die("數據庫服務器連接失敗");
@mysql_select_db("php")      //選擇數據庫mydb
or die("數據庫不存在或不可用");
//執行SQL語句刪除Session
$query = @mysql_query("delete from mysession where session_key = '$key'")
or die("SQL語句執行失敗");
return $query;
}
function mysession_gc($expiry_time)
{
@mysql_connect("localhost", "root", "root")     //選擇數據庫之前需要先連接數據庫服務器
or die("數據庫服務器連接失敗");
@mysql_select_db("php")      //選擇數據庫mydb
or die("數據庫不存在或不可用");
$expiry_time = time();
//執行SQL語句刪除Session
$query = @mysql_query("delete from mysession where session_expiry < $expiry_time")
or die("SQL語句執行失敗");
return $query;
}
//設置用戶自定義Session存儲
session_set_save_handler('mysession_open',
'mysession_close',
'mysession_read',
'mysession_write',
'mysession_destroy',
'mysession_gc');
?>


最后面就是測試代碼
1>存儲頁面 save.php

復制代碼 代碼如下:


<?php
include('user-define-session-inc.php');   //包含session_set_save_handler定義的文件
session_start();
$_SESSION['username'] = "Simon";
$_SESSION['password'] = "123456";
?>


2. 顯示頁面 show.php

復制代碼 代碼如下:


<?php
include('user-define-session-inc.php');   //包含session_set_save_handler定義的文件
session_start();
echo "UserName:".$_SESSION['username']."<BR>";
echo "PassWord:".$_SESSION['password']."<BR>";
?>

上述內容就是在PHP中存儲session的方式有哪些,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女