2

ゲームサーバー管理用の小さな php サイトを作成しましたが、ログインしていないユーザーにログインを強制していません。セッションがアクティブでない場合はリダイレクトを追加し、ログアウト時にセッションを破棄しました。サイトはこちらhttp://zelware.co.uk/gameman

初めてログインする必要がありますが、login.php を URL から外すと、再びメイン エリアに入ることができます。どんな助けでも大歓迎です、ありがとう!

4

3 に答える 3

0

ifステートメントが必要です

$_SESSION['loggedin']==TRUE; 

誰かがログインしているかどうかを確認します。また、 session_id() を設定して、これでリダイレクトすることも検討してください。

于 2013-03-31T12:38:34.530 に答える
0

ユーザーがログインしているかどうかを確認するメカニズムを作成する必要があります。ログインすると、システムはセッション Cookie (ランダムで一意のハッシュ) を設定します。ハッシュは、ユーザー名、パスワード、IP、およびログイン時刻とともに、Cookie としてデータベースに保存されます。

ユーザーがページにアクセスすると、次のような関数を呼び出します: (正確ではありません。これは基本的なチェックであり、IP が一致するかどうか、セッションの有効期限が切れているかどうかもチェックする必要があります)

  function verify_login() {
 //
 $hash = $_COOKIE['loginhash'];
    if($hash != ''):
        $hash = mysql_real_escape_string($hash);
        $sql = "SELECT * FROM session WHERE hash = '$hash'";


    else:
        header('Location: login.php');
    endif;



    $res = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($res) !=0):
    while($row = mysql_fetch_assoc($res)) {
                                    echo 'The user is logged in.';


    }
    else:
        header('Location: login.php');
    endif;

      }
于 2013-03-31T15:33:35.250 に答える
0

ユーザーを認証するには、単純なメカニズムが必要です。

  • すべてのページは、何らかのセッション値を探すチェックによって保護され、この値が存在しない場合はログイン ページにリダイレクトされる必要があります。このチェックのコードを別の関数/ファイルに記述し、サイトのすべてのページで呼び出す/含めることができます。

    is_user_logged_in(){
        return $_SESSION['logged_in']; // it is a boolean value, which should be set TRUE by the login function
    }
    
    //in every page of yours you should call this
    if ( !is_user_logged_in() ){
        //redirect to you login page
        header("Location: http://yoursitename.com/login_page.php");
    }
    
  • ログインページはユーザー名/パスワードを検証する必要があり、有効な場合は、他のすべてのページでチェックしているセッション値を作成します。

    if ( valid_user($username, $password) ){
        // this is the value you should check for in other pages
        $_SESSION['logged_in'] = TRUE;
        // you may also need to store other user-related info in the session
        $_SESSION['user'] = array("id" => 1 , "username" => "test_user") // a data array from DB
    }
    
  • ログアウト ページは、他のすべてのページでチェックしているセッション値を破棄する必要があります。

    unset($_SESSION['logged_in']);
    session_destroy();
    
于 2013-03-31T13:04:53.757 に答える