我想获取第一次加载页面时的当前时间,然后将该时间与当前时间进行比较,只有当页面加载时第一次差异超过30分钟时,才应打开一个新窗口.我想问这一切我应该使用session或cookies?我累了使用以下内容:
<input type="hidden" name="time_last_loaded" value="<?php echo strtotime(date("Y-m-d H:i:s")); ?>">
<?
if(isset($_POST['time_last_loaded']))
{
$current_time = strtotime(date("Y-m-d H:i:s"));
$time_last_loaded_plus_30_mins = strtotime('+30 minutes', $_POST['time_last_loaded']));
if($time_last_loaded_plus_30_mins < $current_time)
{
echo "code works";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
但它没有用,有人试图找到我编码的问题吗?谢谢!
我也尝试过这个
$time=time();
$timeend= $time + (1*60);
for($i=1;$i<100;$i++)
{
while($time > $timeend)
{
echo "it works";
$time=time();
}
}
Run Code Online (Sandbox Code Playgroud)
这个简单的代码不起作用?可以告诉吗?
有没有办法将 php 会话变量 ( $_SESSION['example') 设置为在给定时间后过期。为了澄清,我想保持用户的会话完整并保留所有其他变量及其值,我只想将单个会话变量设置为在短时间内(1 分钟左右)后过期。有什么方法可以将变量设置为自行过期,或者当我确定时间已过期时,我是否必须跟踪时间并删除变量?我在 ubuntu 上使用 php 5 和 apache2。谢谢。
我有一个Web应用程序每分钟左右ping一次数据库以检查新条目.该页面设计为与...没有任何交互.您只需将其保持打开状态即可显示内容.该页面受密码保护,该网站可以在没有任何人点击网络浏览器或其他任何东西的情况下进行.我发现它在大约一天之后停止检查数据库(通过Ajax请求),然后如果你手动刷新页面,它会再次进入登录页面.我假设那是因为具有登录信息的会话到期.我从未设置过期时间,但PHP会在一定时间后自动销毁会话吗?我该怎么做才能解决这个问题?
谢谢
感谢所有回复...有没有办法将会话设置为永不过期而不仅仅是更改PHP设置本身?
可以在 php 中由用户设置会话超时吗?
示例:2 个用户在我的站点中注册。我希望每个用户都可以设置自己的会话超时。
如果他/她已关闭选项卡(他/她已登录帐户的选项卡),我将如何自动将用户自动登录.我知道有可能使用cookies,但我们如何通过Sessions实现这一目标?
如果他们闲置5分钟,我想让我的PHP网站破坏用户会话.如果发生这种情况,我想向用户显示一条消息,说明他们为何被注销并将其重定向到登录页面.
处理这个问题的最佳方法是什么?
我在php和myadmin上运行.
谢谢
阿维纳什
所以我遇到了这个问题,当我在页面上一段时间没有执行任何操作时,重新加载页面后$_SESSION就会被清除。我检查了代码,它没有任何unset()函数或任何其他可以清除$_SESSION变量的东西。有什么想法为什么会发生吗?
编辑:如果我想让会话一直持续到浏览器关闭,我该怎么办?我不明白它是gc检查会话是否过期session_start,但我无法在调用之前修改会话数据session_start,因此在调用后修改会话数据session_start无论如何都会导致会话过期?
我session.cookie_lifetime默认设置为 0,session.gc_maxlifetime, session.gc_divisor,session.gc_probability也设置为其默认值。
我有以下代码可以在设定的时间后使会话过期。然而它无法正常工作。如果我将其设置为例如 1 分钟甚至 5 分钟,它会立即过期。你能帮我吗?
// duration in minutes * seconds
$duration = (DURATION * 60);
if(isset($_SESSION['started']))
{
// show banner and hide form
echo $msg;
$showform = 0;
if((time() - $_SESSION['started'] - $duration) > 0)
{
unset($_SESSION['count']);
unset($_SESSION['offender']);
$showform = 1;
}
}
else
{
$_SESSION['started'] = time();
}
Run Code Online (Sandbox Code Playgroud) 如果用户不更改页面10分钟,我会使用此代码记录用户.
$inactive = 600;
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['timeout'];
if($session_life > $inactive) {
header("Location: logout.php");
}
}
$_SESSION['timeout'] = time();
Run Code Online (Sandbox Code Playgroud)
你可以看到它很简单.我在所有受保护页面的顶部包含此功能,如果脚本未运行10分钟,则下次刷新页面时,用户将被发送到我的注销脚本.
不过那就是问题所在.在$ session_life> $ inactive变为true之后,需要再次运行脚本以便用户注销.一旦成为现实,我需要立即退出该人.
如果事情变得太复杂,有没有办法做到这一点?(即不使用AJAX)
我目前正在表单页面中保存一个会话:
$ testingvalue ="SESSION TEST";
$ _SESSION ['testing'] = $ testingvalue;
在另一个页面上,我调用会话来使用该值:
<?php
session_start(); // make sure there is a session
echo $_SESSION['testing']; //prints SESSION TEST???
?>
Run Code Online (Sandbox Code Playgroud)
现在我想用
session_destroy();
摧毁会议.但我想做的是在2小时后通过会议.
关于如何做到的任何想法以及我应该把它放在哪里?
我有这样的事情:
<?php
session_start();
// 2 hours in seconds
$inactive = 7200;
$session_life = time() - $_session['testing'];
if($session_life > $inactive)
{
session_destroy();
}
$_session['testing']=time();
echo $_SESSION['testing']; //prints NOTHING?
?>
Run Code Online (Sandbox Code Playgroud)
那会有用吗?
如果我不活动超过2小时,这应该是空白的?:
echo $ _SESSION ['testing'];
我对PHP会话和会话cookie有点困惑.
让我通过举一个www.example.com的例子来问我的问题.
当我登录www.example.com时,它会启动一个会话.所以我在这个网站上以用户身份登录.
现在,当我在浏览器中清除cookie时,它会删除所有浏览器cookie.
我的问题是 - 即使我没有点击退出按钮来破坏会话,我清除浏览器cookie时,www.example.com上的会话是否被破坏了?
这就解释了我想问的问题.
清除浏览器cookie是否会自动破坏PHP会话,即使你没有在网站上做任何事情来调用该函数来销毁会话?
我想将会话超时限制设置为3分钟,
我在页面中使用过这个
ini_set("session.gc_maxlifetime","50"); 不工作
解决方案
if(isset($ _ SESSION ['LAST_ACTIVITY'])&&(time() - $ _SESSION ['LAST_ACTIVITY']> 1800)){//最后一次请求超过30分钟前session_destroy(); //销毁session_unset()中的会话数据; //为运行时取消设置$ _SESSION变量} $ _SESSION ['LAST_ACTIVITY'] = time(); //更新上次活动时间戳
我正在用PHP,JavaScript和HTML编写一个项目.当用户闲置1分钟时,我已成功完成自动注销.但问题在于我必须刷新页面才能执行它并将我注销.
有人可以帮助我,以便立即1分钟结束,用户空闲,代码将被执行,它将带我到登录页面,而我没有刷新它?
这是我的代码:
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['timeout'];
if($session_life > $inactive)
{
echo"<script type='text/javascript'>
window.alert('Your Session got Expired');
</script>";
header("Location: logout.php");
}
}
$_SESSION['timeout'] = time();
//Continuation of other codes
Run Code Online (Sandbox Code Playgroud)