php会话超时一页中的所有代码

php会话超时一页中的所有代码,php,session,Php,Session,关于,我从第二个答案中复制了一些代码PHP会话30分钟内到期的简单方法。我想将登录和信息合并到一个页面,另一个页面是logout.PHP 这是我的密码 homepage.php if(isset($_POST["submitform"])){ $v1 = "admin"; $v2 = "admin"; $v3 = $_POST['username']; $v4 = $_POST['password']; if($v1 == $v3 &&

关于,我从第二个答案中复制了一些代码PHP会话30分钟内到期的简单方法。我想将登录和信息合并到一个页面,另一个页面是logout.PHP 这是我的密码

homepage.php

if(isset($_POST["submitform"])){

    $v1 = "admin";
    $v2 = "admin";
    $v3 = $_POST['username'];
    $v4 = $_POST['password'];

    if($v1 == $v3 && $v2 == $v4){
    session_start();
    $_SESSION['username'] = $v1;
    $_SESSION['start'] = time(); // taking now logged in time
    $_SESSION['expire'] = $_SESSION['start'] + (1* 30) ; // ending a session in 30 seconds

    if(!isset($_SESSION['username'])){
      echo "Please Login again <a href='logout.php'>Click Here to Login</a>";
    }else{
       $now = time(); // checking the time now when home page starts
        if($now > $_SESSION['expire']){
         session_destroy();
          echo "Your session has expire !  <a href='logout.php'>Click Here to Login</a>";
        }else{
        echo "This should be expired in 1 min <a href='logout.php'>Click Here to Login</a>";
        }
    }
    }else{
     echo '
    <form  method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <button type="submit" name="submitform">Sign in</button>
    </form>';
    echo  '<font color="red">wrong password</font>"';
    }       
 }else{
    echo '
    <form  method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <button type="submit" name="submitform">Sign in</button>
    </form>';
 }
?>
<?php
session_start();
session_destroy();
header('Location: homepage.php');
?>
if(isset($\u POST[“submitform”])){
$v1=“管理”;
$v2=“admin”;
$v3=$_POST['username'];
$v4=$_POST['password'];
如果($v1=$v3&$v2=$v4){
会话_start();
$\会话['username']=$v1;
$\u SESSION['start']=time();//使用现在已登录的时间
$\u会话['expire']=$\u会话['start']+(1*30);//在30秒内结束会话
如果(!isset($\u会话['username'])){
回显“请再次登录”;
}否则{
$now=time();//检查主页启动的时间
如果($now>$\会话['expire']){
会话_destroy();
echo“您的会话已过期!”;
}否则{
echo“该时间应在1分钟内到期”;
}
}
}否则{
回声'
登录
';
回显“错误密码”;
}       
}否则{
回声'
登录
';
}
?>
Logout.php

if(isset($_POST["submitform"])){

    $v1 = "admin";
    $v2 = "admin";
    $v3 = $_POST['username'];
    $v4 = $_POST['password'];

    if($v1 == $v3 && $v2 == $v4){
    session_start();
    $_SESSION['username'] = $v1;
    $_SESSION['start'] = time(); // taking now logged in time
    $_SESSION['expire'] = $_SESSION['start'] + (1* 30) ; // ending a session in 30 seconds

    if(!isset($_SESSION['username'])){
      echo "Please Login again <a href='logout.php'>Click Here to Login</a>";
    }else{
       $now = time(); // checking the time now when home page starts
        if($now > $_SESSION['expire']){
         session_destroy();
          echo "Your session has expire !  <a href='logout.php'>Click Here to Login</a>";
        }else{
        echo "This should be expired in 1 min <a href='logout.php'>Click Here to Login</a>";
        }
    }
    }else{
     echo '
    <form  method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <button type="submit" name="submitform">Sign in</button>
    </form>';
    echo  '<font color="red">wrong password</font>"';
    }       
 }else{
    echo '
    <form  method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <button type="submit" name="submitform">Sign in</button>
    </form>';
 }
?>
<?php
session_start();
session_destroy();
header('Location: homepage.php');
?>

我将session expire设置为30秒,但是我发现session没有按预期过期。session从未过期。我想知道我是否将
session_start();
放在了正确的位置?谢谢
session_start()
需要作为第一行代码


此外,您可以将cookie设置为过期。

您只是在表单post上检查会话的状态

如果您刷新页面,它将重新发送帖子,让您登录并扩展会话

您的逻辑需要是:

如果是post,请检查密码并扩展会话

检查会话是否已过期(如果post未过期,则必须执行此操作,没有区别。)

根据会话检查的结果显示登录表单或注销消息

if (isset($_POST["submitform"])) {

    $v1 = "admin";
    $v2 = "admin";
    $v3 = $_POST['username'];
    $v4 = $_POST['password'];

    if ($v1 == $v3 && $v2 == $v4) {
        session_start();
        $_SESSION['username'] = $v1;
        $_SESSION['start'] = time();
        // taking now logged in time
        $_SESSION['expire'] = $_SESSION['start'] + (1 * 30);
        // ending a session in 30 seconds

    } else {
        echo '
    <form  method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <button type="submit" name="submitform">Sign in</button>
    </form>';
        echo '<font color="red">wrong password</font>"';
     die();
    }

    if (!isset($_SESSION['username'])) {
        echo "Please Login";
        echo '
            <form  method="post">
            <input type="text" name="username">
            <input type="password" name="password">
            <button type="submit" name="submitform">Sign in</button>
            </form>';
    } else {
        $now = time();
        // checking the time now when home page starts
        if ($now > $_SESSION['expire']) {
            session_destroy();
            echo "Your session has expired !  <a href='logout.php'>Click Here to Login</a>";
        } else {
            echo "This should be expired in 1 min <a href='logout.php'>Click Here to Login</a>";
        }
    }
if(isset($\u POST[“submitform”])){
$v1=“管理”;
$v2=“admin”;
$v3=$_POST['username'];
$v4=$_POST['password'];
如果($v1=$v3&$v2=$v4){
会话_start();
$\会话['username']=$v1;
$\u会话['start']=time();
//现在需要登录时间
$\会话['expire']=$\会话['start']+(1*30);
//在30秒内结束会话
}否则{
回声'
登录
';
回显“错误密码”;
模具();
}
如果(!isset($\u会话['username'])){
回显“请登录”;
回声'
登录
';
}否则{
$now=时间();
//正在检查主页启动的时间
如果($now>$\会话['expire']){
会话_destroy();
echo“您的会话已过期!”;
}否则{
echo“该时间应在1分钟内到期”;
}
}

是否可以在同一页面上有不同的会话

YES
所以使用

一个用户,一个会话

http://us3.php.net/manual/en/ref.session.php

“永不过期”是什么意思?你离开页面30分钟后回来发现自己仍在登录吗?@PhillSparks.30秒而不是30分钟,我缩短了过期时间。是的,我仍在登录。只需检查$\u会话['expire']时间越长,破坏会话,如果时间越长,我个人从未见过时间小于5的cookieminutes@tpow谢谢,我移动了
session\u start()
在页面顶部和代码的第一行。仍然一样,会话不会在30秒后过期。是的,你是对的,可以在同一页面上有不同的会话吗?还是我必须分开页面?我在回答中添加了更多的细节,希望能有所帮助