Session [php]
<p class="sycode"> 启动会话 ? 注册会话 ? 使用会话 ? 删除会话 </p>
1.启动会话
session_start()
通过session_register()函数创建会话
session_register()函数用来为会话登录一个变量来隐含地启动会话,但要求php.ini文件的选项,将register_globals指令设置on,
然后重新启动Apache服务器。
注意:调用session_register()时,不需要调用session_start()函数,PHP会在注册变量后隐含的调用session_start()函数。
2.注册会话
会话启动后,全部保存在$_SESSION中。通过数组$_SESSION创建一个会话变量很容易,只要直接该数组添加元素即可。
<p class="sycode"> <? php session_start (); // 启动session $_SESSION [ " admin " ] = null ; // 生命一个admin的变量,并赋空值 ?> </p>
3.使用会话
首先判断会话变量是否有一个会话ID存在,不存在就创建一个,并且使其能通过全局数组$_SESSION 进行访问。如存在,则讲这个会话变量载入以供用户使用。
例如,判断用户名Session会话变量是否为空,不为空则复制给$myvalue,
<p class="sycode"> <? php if ( ! empty ( $_SESSION [ ' session_name ' ])) $myvalue = $_SESSION [ ' session_name ' ]; ?> </p>
4.删除会话
(1)删除单个会话
使用unset(),但是不能使用unset($_SESSION) 函数会将全局变量$_SESSION销毁,无法恢复,用户也不能再注册$_SESSION 变量。
<p class="sycode"> unset ( $_SESSION [ ' user ' ]); </p>
(2)删除多个会话
<p class="sycode"> $_SESSION = array (); </p>
(3)结束会话
<p class="sycode"> session_destroy (); </p>
session设置时间
1.客户端没禁止cookie
(1) session_set_cookie_params() 必须在 session_start() 之前调用
<p class="sycode"> <? php $time = 1 * 60 ; // 设置Session失效时间 session_set_cookie_params ( $time ); // 使用函数 session_start (); // 初始化Session $_SESSION [username] = ' mr ' ; ?> </p>
说明:不推荐使用此函数,一些浏览器有问题。
(2) 使用Setcookie()
<p class="sycode"> <? php session_start (); $time = 1 * 60 ; // 给出Session失效时间,1分钟 setcookie ( session_name () , session_id () , time () + $time , " / " ); // 使用setcookie()手动设置Session失效时间 $_SESSION [ ' user ' ] = ' mr ' ; ?> </p>
2.客户端禁止Cookie
(1)登录之前打开Cookie,很多论坛这么做
(2)通过GET方法,隐藏表单传递session_id (常用)
(3)使用文件或数据库存储session_id,页面传递中手动调用
======================分===========割============线================
Session高级应用
1.Session临时文件
session_save_path()存储session临时文件,可缓解因临时文件的存储导致服务器效率降低和站点打开缓慢的问题
示例:
<p class="sycode"> <? php $path = ' ./tmp/ ' ; // 设置session存储路径 session_save_path ( $path ); session_start (); // 初始化session $_SESSION [username] = true ; echo " Session文件名称为:sess_ " , session_id (); ?> </p>
注意:session_save_path()在session_start()函数之间
2.Session缓存
session缓存是将内容存储在IE客户端的Temporary Internet Files 文件夹下,可设置缓存时间,下次读取缓存内容,从而提速。
Session 缓存使用 session_cache_limiter() 函数
<p class="sycode"> string session_cache_limiter ([ string cache_limiter]) </p>
参数cache_limiter为public 或private。同时session缓存不在服务器端而是在客户端缓存,在服务器没显示。
缓存时间,使用 session_cache_expire() 函数
<p class="sycode"> int session_cache_expire ([int new_cache_expire]) </p>
示例:
<p class="sycode"> <? php session_cache_limiter ( ' private ' ); $cache_limit = session_cache_limiter (); session_cache_expire ( 30 ); $cache_expire = session_cache_expire (); session_start (); ?> </p>
3.session数据库存储
session_set_save_handler()函数
<p class="sycode"> bool session_set_save_handler ( string open , string close , string read , string write , string destroy , string gc) </p>
参数 | 说明 |
open(save_path,session_name) | 找到session存储地址,去除变量 |
close() | 不需要参数,关闭数据库 |
read(key) | 读取session键值,key对应session_id |
write(key,data) | 其中data对应设置的session变量 |
destroy(key) | 注销session对应session键值 |
gc(expiry_time) | 清除过期session记录 |
示例:
<?phpfunction _session_open($save_path,$session_name){ global $handle; $handle = mysql_connect('localhost','root','root') or die('数据库连接失败'); // 连接MYSQL数据库 mysql_select_db('db_database11',$handle) or die('数据库中没有此库名'); // 找到数据库 return(true);}function _session_close(){ global $handle; mysql_close($handle); return(true);}function _session_read($key){ global $handle; // 全局变量$handle 连接数据库 $time = time(); // 设定当前时间 $sql = "select session_data from tb_session where session_key = '$key' and session_time > $time"; $result = mysql_query($sql,$handle); $row = mysql_fetch_array($result); if ($row) { return($row['session_data']); // 返回Session名称及内容 }else { return(false); }}function _session_write($key,$data){ global $handle; $time = 60*60; // 设置失效时间 $lapse_time = time() + $time; // 得到Unix时间戳 $sql = "select session_data from tb_session where session_key = '$key' and session_time > $lapse_time"; $result = mysql_query($sql,$handle); if (mysql_num_rows($result) == 0 ) // 没有结果 { $sql = "insert into tb_session values('$key','$data',$lapse_time)"; // 插入数据库sql语句 $result = mysql_query($sql,$handle); }else { $sql = "update tb_session set session_key = '$key',session_data = '$data',session_time = $lapse_time where session_key = '$key'"; // 修改数据库sql语句 $result = mysql_query($sql,$handle); } return($result);}function _session_destroy($key){ global $handle; $sql = "delete from tb_session where session_key = '$key'"; // 删除数据库sql语句 $result = mysql_query($sql,$handle); return($result);}function _session_gc($expiry_time){ global $handle; $lapse_time = time(); // 将参数$expiry_time赋值为当前时间戳 $sql = "delete from tb_session where expiry_time < $lapse_time"; // 删除数据库sql语句 $result = mysql_query($sql,$handle); return($result);}session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','_session_gc');session_start();$_SESSION['user'] = 'mr';$_SESSION['pwd'] = 'mrsoft';?>
======================分===========割============线================

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

在PHPOOP中,self::引用當前類,parent::引用父類,static::用於晚靜態綁定。 1.self::用於靜態方法和常量調用,但不支持晚靜態綁定。 2.parent::用於子類調用父類方法,無法訪問私有方法。 3.static::支持晚靜態綁定,適用於繼承和多態,但可能影響代碼可讀性。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。
