2

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

我有一个密码,它使用如下形式传递给新的 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");

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

我基本上需要在页面退出时销毁会话,但不是在页面上运行刷新时?

4

2 回答 2

1

首先, session_start 没有参数,如您所见:http ://www.php.net/manual/es/function.session-start.php

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

然后,如果你想关闭你的会话,只需使用 session_destroy 或 unset($_SESSION['pass_s'])

于 2012-08-20T14:49:27.543 回答
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 秒刷新一次

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

于 2012-08-22T09:50:56.000 回答