0

30分後にPHPセッションを期限切れにするにはどうすればよいですか? 、2番目の回答からいくつかのコードをコピーしましたPHPセッションの有効期限が30分で切れる簡単な方法。ログインと情報を 1 つのページにまとめ、別のページは logout.php にしたいと思います。ここに私のコードを示します。

ホームページ.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>';
 }
?>

Logout.php

<?php
session_start();
session_destroy();
header('Location: homepage.php');
?>

セッションの有効期限を 30 秒に設定しましたが、セッションが期待どおりに期限切れにならないことがわかりました。セッションが期限切れになることはありません。session_start();正しい場所に置くかどうか疑問に思っていますか?ありがとう

4

3 に答える 3

1

フォーム投稿でセッションのステータスを確認しているだけです。

ページを更新すると、投稿が再送信され、ログインしてセッションが延長されます。

ロジックは次のようにする必要があります。

投稿する場合は、パスワードを確認してセッションを延長してください。

セッションの有効期限が切れているかどうかを確認します (これは、そこに投稿するかどうかに関係なく発生する必要があります)。

セッション チェックの結果に基づいて、ログイン フォームまたはログアウト メッセージが表示されます。

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>";
        }
    }
于 2013-04-27T20:03:57.660 に答える
0

session_start()コードの最初の行にする必要があります。

さらに、Cookie の有効期限が切れるように設定することもできます。

于 2013-04-27T19:45:33.897 に答える
0

同じページで異なるセッションを持つことは可能ですか?

YES

だから使う

1 ユーザー、1 セッション。限目。

http://us3.php.net/manual/en/ref.session.php
于 2013-04-27T20:10:56.867 に答える