在自动刷新期间保留会话名称,但不是永远

时间:2012-08-20 14:39:39

标签: php session refresh destroy

我知道这已经讨论了很多,但我似乎无法找到解决问题的方法:

我有一个密码,传递给新的php文件,其格式如下:

<form method="POST" action="test.php">
Password: <input type="password" name="password" size="15" />
</form>

在test.php文件中,我创建一个会话,然后使用POST获取密码,如下所示:

session_name('first'); 
session_start('first');

if (isset($_SESSION['pass_s'])) 
{
   $_SESSION['pass_s'] = $_SESSION['pass_s'];
} else 
{
   $_SESSION['pass_s'] = $_POST['password'];
}  
$pass = $_SESSION['pass_s'];

但我也用以下内容刷新此页面:

 $page = "test.php";
 $sec = 60;
 header("Refresh: $sec; url=$page");

问题是,无论如何都会保持会话设置,因此在新登录时会启动旧会话。我在命名我的会话和刷新我的页面之间陷入困境。 我因为刷新而无法销毁会话,但我也无法保持会话。我相信我被保存在饼干中。

我基本上需要在页面退出时销毁一个会话,但是当刷新在页面上运行时却没有?

2 个答案:

答案 0 :(得分:1)

首先,session_start没有args,你可以在http://www.php.net/manual/es/function.session-start.php

中看到

其次,php会话有生命周期。 session.gc_maxlifetime指令的php.ini默认值(“gc”用于垃圾收集)是1440秒或24分钟。请参阅手册中的“会话运行时配置”页面。

然后,如果你想关闭你的会话,只需使用session_destroy或取消设置($ _ SESSION ['pass_s'])

答案 1 :(得分:0)

好吧我明白了。不需要任何会议。这是你做的:

if ($_POST["password"] != "")
{
    $passb = $_POST["password"];
    $userb = $_POST["username"];

}
else
{
    $userb = $_GET["userb"];
    $passb = $_GET["passb"];

}

$urllink = "60;url=thisPage.php?userb=".$userb."&passb=".$passb;

然后插入

<META HTTP-EQUIV="refresh" CONTENT=<?php echo $urllink?>>

这将每60秒刷新一次

基本上你检查是否发布了变量。然后你把它放在链接中并在刷新时发送给自己。这仍然需要更好的安全性,但就像一个魅力