[英]session setting php.ini in runtime
函數set_cookie_params允許在運行時配置負責cookie會話的指令。 在php.net中,它表示需要在session_start()之前的每個請求中調用此函數。 是否有可能需要在創建新會話的session_start之前調用它(在響應中,我們將創建一個cookie),而不是在腳本中繼續我們現有的會話,這是因為這些指令配置了cookie會話,如果我們不在下一個腳本中創建cookie,則對其進行配置是沒有用的。 另外,我們是否必須在每個腳本中或僅在啟動新會話的腳本中調用ini_set()來配置會話指令(例如指令session.gc_maxlifetime)
如果沒有適用於當前設置配置的會話,則session_start
可以恢復會話或啟動新會話。 換句話說,當您調用session_start
時,您不知道是否已經存在一個會話,並且session start將基於當前的ini設置和/或session_set_cookie_params
設置來設置cookie。 另外, session_name
影響設置的cookie中使用的名稱以及調用session_start
時在cookie中查找的名稱。
因此,每次調用session_start
之前,始終需要配置所有內容。
如果您的邏輯不允許之前設置應用程序並調用選項,則可以設置新的會話啟動功能。 但是正確的方法是引導您的應用程序和(可能包含的beebee)配置文件來設置所有選項。 喜歡
bootstrap.php
<?php
//bootstrap file
session_set_cookie_params(...);
session_start();
index.php
<?php
require_once('bootstrap.php');
//DoStuff
的詛咒,您可以覆蓋php函數,但這不是完成任務的方式
rename_function('session_start', 'new_session_start');
override_function('session_start', '', 'return override_session_start();');
function override_session_start(){
// set settings
session_set_cookie_params(...);
new_session_start();
}
session_start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.