0

私のアプリケーションでは、主にphpであるかどうかを知りたいのですが、これは、ユーザーがログオフするまでサイトにログインし続けるための最良の方法です。トークン、セッションライフ、クッキーなどでしょうか?

現時点では、これが私のログインおよびログオフシステムの仕組みです。

ユーザーがログインすると、詳細が$_SESSIONに保存されます。

if (isset($_SESSION['teacherid'])) {

      $userid = $_SESSION['teacherid'];

  }

if (isset($_SESSION['teacherusername'])) {

      $username = $_SESSION['teacherusername'];

  }

次に、すべてのスクリプトに、セッションライフが12時間続く以下のコードが含まれています。

<?php

ini_set('session.gc_maxlifetime',12*60*60);
ini_set('session.gc_divisor', '1');
ini_set('session.gc_probability', '1');
ini_set('session.cookie_lifetime', '0');
require_once 'init.php'; 

session_start();

?>

init.phpは以下のとおりです。

 <?php
 session_save_path('Session'); 
 ?>

12時間後、次にユーザーがページを更新すると、セッションが破棄されるため、ログオフページに移動します。

    if ((isset($username)) && (isset($userid))){
        session_destroy();
        echo "You have been Logged Out | <a href='./home.php'>Home</a>";
    }

    else {

        echo "You are Not Logged In";

    }

明らかに、ユーザーがログアウトページをクリックすると、上記のスクリプトに移動します。

しかし、これはそれを行うための良い方法ですか?適切なWebアプリケーションを見ると、ユーザーを数日間ログインさせ続けることができるので、はるかに便利な方法はありますが、これをどのように行うのでしょうか。

ありがとう

4

1 に答える 1

7

セッションはピンチで実行され、十分に安全です(ただし、それについては引用しません)が、サーバーの使用状況と構成によっては、セッションが12時間前にクリアされる場合があります。

ログインすると、セッションを開始し Cookieをコンピューターに保存します。このCookieには、一意に生成された文字列とそのアカウントIDが含まれています。

ページを更新すると、以下が実行されます(擬似コード)。

if (session_exists) continue();
else if (!session_exists AND cookie_exists AND validate_cookie()) {
    login_user_via_cookie();
    continue();
else show_login_page();
于 2012-11-07T13:53:51.120 に答える