bri*_*ian 24 php session lifetime
如何在PHP中设置会话生存期?只要请求存在,我想将其设置为永久.请求是AJAX.我处理AJAX请求的PHP代码是:
// AJAX.php
<?php
session_start();
$_SESSION['counter'] = $_SESSION['counter'] + 1;
header('Content-type: application/json');
echo json_encode(array('tick' => $_SESSION['counter']));
?>
Run Code Online (Sandbox Code Playgroud)
和JavaScript:
$(document).ready(function() {
function check() {
getJSON('ajax.php');
}
function getJSON(url) {
return $.getJSON(
url,
function(data) {
$("#ticker").html(data.tick);
}
);
}
setInterval(function() {
check();
}, 10000); // Tick every 10 seconds
});
Run Code Online (Sandbox Code Playgroud)
会话总是在300秒后重置.
Exo*_*xos 34
PHP上的会话使用Cookie类型会话,而在服务器端,会话信息会不断删除.
要在php中设置时间生命,可以在session_start之前使用session_set_cookie_params 函数:
session_set_cookie_params(3600,"/");
session_start();
Run Code Online (Sandbox Code Playgroud)
例如,3600秒是1小时,2小时3600*2 = 7200.
但它是会话cookie,浏览器可以自己过期,如果你想节省大量时间会话(比如记住登录),你需要保存服务器中的数据和客户端的标准cookie.
你可以有一个表"会话":
并验证Cookie,在客户端保存"会话ID"和"哈希"(用于安全性),您可以在服务器端保存会话数据,例如:
登录时:
setcookie('sessid', $sessionid, 604800); // One week or seven days
setcookie('sesshash', $sessionhash, 604800); // One week or seven days
// And save the session data:
saveSessionData($sessionid, $sessionhash, serialize($_SESSION)); // saveSessionData is your function
Run Code Online (Sandbox Code Playgroud)
如果用户返回:
if (isset($_COOKIE['sessid'])) {
if (valide_session($_COOKIE['sessid'], $_COOKIE['sesshash'])) {
$_SESSION = unserialize(get_session_data($_COOKIE['sessid']));
} else {
// Dont validate the hash, possible session falsification
}
}
Run Code Online (Sandbox Code Playgroud)
显然,在发送数据之前保存所有会话/ cookie调用.
小智 15
将以下php参数设置为相同的值,以秒为单位:
session.cookie_lifetime
session.gc_maxlifetime
Run Code Online (Sandbox Code Playgroud)
在php.ini,.htaccess或例如
ini_set('session.cookie_lifetime', 86400);
ini_set('session.gc_maxlifetime', 86400);
Run Code Online (Sandbox Code Playgroud)
一天.
链接:
http://www.php.net/manual/en/session.configuration.php
http://www.php.net/manual/en/function.ini-set.php
小智 6
在PHP 7之前,session_start()函数不直接接受任何配置选项。现在你可以这样
<?php
// This sends a persistent cookie that lasts a day.
session_start([
'cookie_lifetime' => 86400,
]);
?>
Run Code Online (Sandbox Code Playgroud)
参考:https : //php.net/manual/zh/function.session-start.php#example-5976
| 归档时间: |
|
| 查看次数: |
90302 次 |
| 最近记录: |