Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Cookie问题/会话过期_Php_Session_Cookies - Fatal编程技术网

Php Cookie问题/会话过期

Php Cookie问题/会话过期,php,session,cookies,Php,Session,Cookies,我有写文章的用户,当他们离开电脑一段时间后回来提交文章时,作者/用户的id被记录为空值。我假设会话即将到期。我有: ob_start(); session_start(); if(isset($_SESSION['user_id'])) { $ext = time() + 31560000; setcookie('name', $_SESSION['user_id'], $ext); } 在索引页面的顶部,用户登录时将被重定向。 此外,他们实际登录时会发生以下情况: $use

我有写文章的用户,当他们离开电脑一段时间后回来提交文章时,作者/用户的id被记录为空值。我假设会话即将到期。我有:

ob_start();
session_start();

if(isset($_SESSION['user_id'])) {
    $ext = time() + 31560000;
    setcookie('name', $_SESSION['user_id'], $ext);
}
在索引页面的顶部,用户登录时将被重定向。

此外,他们实际登录时会发生以下情况:

$user_id = get_user_id($some_variable); // get's the user_id
$username = get_username($some_variable); // get's username

$_SESSION['user_id'] = $user_id;

?>
<script type="text/javascript">
    window.location = 'http://site.com/<?php echo $username; ?>';
</script>
<?php
exit();
$user\u id=get\u user\u id($some\u变量);//获取用户的\u id
$username=get_username($some_变量);//获取用户的用户名
$\u会话['user\u id']=$user\u id;
?>
window.location=http://site.com/';

我不知道你想用什么来达到目的

if(isset($_SESSION['user_id'])) {
    $ext = time() + 31560000;
    setcookie('name', $_SESSION['user_id'], $ext);
    }
但这不会增加php会话的生存期,只会创建一个名为name的cookie,该cookie的值为$\u session['user\u id'],并在创建后31560000秒过期


如果要更改会话生存期,请参见检查
php.ini
设置的设置。默认值为1440秒或24分钟。在这段时间之后,旧的会话数据可能会被清除。session.gc_maxlife=1000000(随机数)是将其写入php.ini的正确方法吗?是的,这将在全局范围内完成。也可以从脚本中使用,但如果使用,则必须确保与会话交互的所有脚本都使用相同的值。确保其足够大以满足您的需要,但不要太大,否则服务器上会有大量的旧会话数据。因此,在24分钟不活动后,它是否仍会过期,但最大值为86400(如果我提供该值)?或者,即使没有活动,86400也不会过期?不活动显然是这里的问题。只要他们不关闭浏览器,它就会有效地将可能的清理之前的最长不活动时间设置为86400。根据
session.gc\u概率
session.gc\u除数
,清理可以在之后的一段时间内进行。您还可以在关闭浏览器后将会话cookie修改为live。我正在查看它。我想使用什么特定的函数以及如何编写它?我想把它设为86400秒。您可以使用ini_set函数或直接修改php.ini。ex
init_set('session.gc_maxlifest',86400)