簡體   English   中英

會話在運行時設置php.ini

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM