我希望我的用户能够保持登录我的网站的时间不会在一段时间不活动后自动注销.我正在使用PHP会话跟踪登录状态.
如何设置它,我试图从我的.htaccess文件中控制它.
是否可以让两个用户数据具有不同的超时/到期时间?假设第一个数据"param_1"在1天内到期,"param_2"在一个月内到期.如何使用CI会话库执行此操作.可能是这样的东西
$this->session->set_userdata('param_1', 86400); // seconds in a day
$this->session->set_userdata('param_2', 2592000); // seconds in a month
Run Code Online (Sandbox Code Playgroud) 我们将我们的应用程序移到了一个新的服务器上,现在会话对于登录用户来说过期得太快了(不确定确切的时间)。我们尝试了很多方法来找出会话在生产环境中过期的原因,但直到现在我们都没有成功。我们想把到期时间设置为 20 天。
我们尝试过的东西:
这是当前的配置:
'Session' => [
'defaults' => 'php',
'cookie' => 'MYAPPHO',
'timeout'=> 80320, // in min
'ini' => [
'session.gc_maxlifetime' => 1728000, // in sec
'session.cookie_lifetime' => 1728000
]
]
Run Code Online (Sandbox Code Playgroud)
我们还尝试设置
'defaults' => 'cache'
Run Code Online (Sandbox Code Playgroud)
并在 .htaccess 中设置值
php_value session.cookie_lifetime 1728000
php_value session.gc_maxlifetime 1728000
php_value session.cache_expire 1728000
Run Code Online (Sandbox Code Playgroud)
但行为是一样的。
我们还在 Network\Session::_timedOut() 中进行了一些调试,但没问题,因此永远不会过期。
有没有办法调试更多并找出导致会话过期的原因?
我正在使用以下技术......
从login.php表单帖子到check.php我执行此操作的页面
<?php
$uzer = $_POST['user_name'];
$pass = $_POST['user_pass'];
require ('DB_connection.php');
$result = mysql_query("SELECT * FROM accounts WHERE user_Name='$uzer' AND user_Pass='$pass'");
if( mysql_num_rows( $result ) > 0)
{
$array = mysql_fetch_assoc($result);
session_start();
$_SESSION['user_id'] = $uzer;
header("Location:loggedin.php");
}
else
{
header("Location:login.php");
}
?>
Run Code Online (Sandbox Code Playgroud)
在loggedin.php页面上我做的第一件事就是
<?php
session_start();
if( !isset( $_SESSION['user_id'] ) )
{
header("Location:login.php");
}
else
{
echo ( "this session is ". $_SESSION['user_id'] );
//show rest of the page and all
}
?>
Run Code Online (Sandbox Code Playgroud)
但是当我直接输入网址时登录后localhost\myProject\loggedin.php …
我正在构建一个Web应用程序,用户可以通过Web应用程序界面上传某些文件并对其进行处理.我需要将这些文件存储为用户会话的长度.我正在为每个用户创建一个文件夹,使用session_id 文件夹名称并将文件存储在那里.
问题:没有任何迹象表明用户离开了我的网站,会话就不再使用了.我需要一个清理脚本,它取每个文件夹的名称并检查它session_id是否仍处于活动状态,以便删除未使用的和现在无法访问的文件夹.我怎样才能做到这一点?
我们为客户锁定了一些库存,锁定库存的表包含将其锁定的会话ID以及有关客户端的其他信息.当会话到期时,我们想要解锁该库存,以便其他人可以购买它.因为我们在表中注册了session_id(),知道它,有没有办法检查会话在PHP中是否仍然有效?
如果我们使用数据库来保持会话,我们可以检查行是否到那里以及最后一个活动是什么时候,在memcached中我们可以找出会话的密钥并检查它,就像文件会话一样我们可以这样做,找出会话的文件名并检查文件是否存在.
无论你在哪里举行会议,有什么东西可以在任何地方使用吗?
如何设置PHP会话时间,我正在尝试如下,但我不认为它的工作原理
ini_set("session.gc_maxlifetime", 600);
如何使用ajax(javascript)查明php会话是存在还是过期?
问候
我想知道我们是否可以为一个特定项目而不是整个Web服务器声明session.gc_maxlifetime设置.htaccess?
如果是这样,我们怎么做?像下面的代码?
php_value session.gc_maxlifetime 2000
我已经尝试了它并且它不起作用,我也在php.ini我的项目的同一目录中创建了一个文件,它也没有用.
谢谢.
可能重复:
如何在 30 分钟后使 PHP 会话过期?
如何检测会话ID是死还是活?假设有人登录 - 创建了一个新会话,并且我保存了会话 ID。如果他从其他浏览器登录,我可以确定他登录了两次。但如何检测他是否退出呢?
设置会话 cookie 的语法
session_set_cookie_params($lifetime, $path, $domain, $secure, true);
Run Code Online (Sandbox Code Playgroud)
Q1. 像下面这样设置会话 cookie 是否安全还是还有更多工作要做?
session_set_cookie_params('3600', 'www.example.com', isset($_SERVER["HTTPS"]), true);
Run Code Online (Sandbox Code Playgroud)
Q2。设置会话(从安全角度来看)cookie 的理想生命周期应该是多长?
Q3。如果我决定将我的网络管理文件夹转移到子域,那么上面的代码是否需要更改?
php ×10
session ×8
.htaccess ×1
ajax ×1
cakephp-3.0 ×1
cakephp-3.x ×1
cookies ×1
javascript ×1
laravel-5.3 ×1
security ×1
sessionid ×1
timeout ×1