php怎么写关闭当前页_关于php:关闭浏览器标签页时取消会话设置

当用户进入网站时,它会发送默认语言,同时会强制用户从列表中选择一种语言...

当用户选择一种语言时,它会设置$ _SESSION ['language'] = $ _POST ['lg'];

同时设置另一个$ _SESSION ['sestime'] = time(); 通过本次会议,我可以做到这一点:

if(isset($_SESSION['sestime']) && (time() - $_SESSION['sestime'] > 600)) {

session_unset(); session_destroy();

header("Location: $sred");

exit;

}

$_SESSION['sestime'] = time();

如果在10分钟内没有任何活动,它会破坏/删除/取消任何会话的设置,其想法是再次询问lanaguage ...现在,这是"有效的",但是我想要的是"检测" 当用户将要关闭浏览器选项卡时,网站选项卡...如果用户关闭该选项卡,则"破坏/删除/取消设置"该网站的任何会话...

那可能吗?

您可能会收到具有较低超时的定期AJAX请求,但是这样会使关闭Javascript或残障并使用其他技术来浏览Web的人无法使用您的网站。 HTTP协议中没有任何内容可以让您知道用户何时停止查看您的网站,因此最好的选择是合理的超时。

会话Cookie通常在没有到期时间的情况下发送,这意味着在关闭浏览器时会删除会话Cookie,因此无论如何会话都会丢失。

1)当用户关闭浏览器而不单击注销时销毁或取消设置会话

您可以为会话数据设置过期时间,在每个session_start调用中对其进行测试,并在会话过期时销毁该会话:

session_start();

if (!isset($_SESSION['EXPIRES']) || $_SESSION['EXPIRES'] < time()+3600) {

session_destroy();

$_SESSION = array();

}

$_SESSION['EXPIRES'] = time() + 3600;

2)当浏览器选项卡关闭时销毁会话

用自己的方法实现会话超时。使用一个简单的时间戳来表示最后一个请求的时间,并根据每个请求进行更新:

您需要编写与此类似的代码

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {

// request 30 minates ago

session_destroy();

session_unset();

}

$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time

3)如何在PHP中更改会话超时?

session_start(); // ready to go!

$now = time();

if (isset($_SESSION['discard_after']) && $now > $_SESSION['discard_after']) {

// this session has worn out its welcome; kill it and start a brand new one

session_unset();

session_destroy();

session_start();

}

// either new or old, it should live at most for another hour

$_SESSION['discard_after'] = $now + 3600;

4)当用户离开页面时,将unload事件发送到window元素。这可能意味着很多事情之一。用户可能已经单击了链接以离开页面,或在地址栏中输入了新的URL。前进和后退按钮将触发事件。关闭浏览器窗口将导致事件被触发。即使页面重新加载也会首先创建一个卸载事件。

$( window ).unload(function() {

//use ajax to call another page to session_destroy();

});

问题是:如果用户在您的网站上打开了两个或多个标签,该怎么办?如果他们关闭一个标签,则另一个标签将被有效注销。

您对案例的精彩解释获得了+1。 一般来说,我对现代浏览器没有这样的机制感到吃惊:当我关闭此类网站的标签时,每次会话都必须销毁,就像我关闭浏览器一样。 我看到这方面的不良行为,例如 贝宝(Paypal),实际上,如果您关闭选项卡并再次打开贝宝(Paypal),则您仍在登录,与在google / gmail中一样,在gmail上甚至更糟,如果您不注销,则永远登录,如果您不询问 为了那个原因。 几天后,请尝试使用第三台计算机。 记得注销! :-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值