【问题标题】:can I add a cookie logout to this script?我可以在此脚本中添加 cookie 注销吗?
【发布时间】:2011-03-30 18:54:25
【问题描述】:

我正在使用此脚本登录用户,我想知道是否可以添加一个简单的 cookie,该 cookie 会在用户闲置 30 分钟后自动注销。

...
if($count){
        session_start();
       session_regenerate_id();
        $_SESSION['SESS_USERNAME'] = $myusername;
        $_SESSION['SESS_PASSWORD'] = $mypassword;
        session_write_close();
       header("location: login_success.php");
        }

连接到:

<?php
 session_start();
 if(!isset($_SESSION['SESS_USERNAME']) || !isset($_SESSION['SESS_PASSWORD']) ||     (trim($_SESSION['SESS_USERNAME']) == '')) {
            //someone's not logged in
    header("location: index.php"); //it's suppose to actually be there
            exit();
  }
 ?>

然后结束会话:

<?php 
session_start();
session_destroy();
?> 

这可能吗?这个脚本是离线的,因为我对PHP了解不多,所以如果很难我不会打扰!

感谢您的宝贵时间!

【问题讨论】:

  • 为什么这么多新用户用感叹号提问?

标签: php session-cookies


【解决方案1】:

您可以在脚本顶部发出以下命令来设置超时:

ini_set('session.gc_maxlifetime', 30*60); // for 30 min timeout

请参阅manual page 了解更多信息。这段时间过后,PHP 会自动对会话进行垃圾收集。

【讨论】:

  • 不会自动注销用户吗?如果他们在做什么呢?
  • 它会杀死已经空闲 30 分钟的会话。
  • 啊好吧,我会把这个放在哪里?在每一页的顶部?
  • 是或共同包含文件。您也可以在 php.ini 文件中设置它来设置服务器范围的超时,就像@Pascal MARTIN 在他的回答中提到的那样。
  • 我不知道该怎么做,我会尝试将它添加到每个页面的顶部,看看效果如何。
【解决方案2】:

会话会在一段时间后自动过期 -- 这将导致您的非活动用户被注销。


有关持续时间,请参阅 session.gc_maxlifetime 指令:您需要将其设置为 1800 秒。

这可以在您的 php.ini 文件中完成,用于服务器范围的配置,或使用以下代码行:

ini_set('session.gc_maxlifetime', 1800);

【讨论】:

    【解决方案3】:
    $_SESSION['expiry'] = time() + 30 * 60;
    
    if ($_SESSION['expiry'] < time()) {
        session_destroy();
    }
    

    【讨论】:

    • 我是否将其添加到此:
    猜你喜欢
    • 2011-04-14
    • 2015-07-09
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多