1

ユーザーがログインボタン(index.php)をクリックすると、ログインIDとパスワードをチェックしているchechlogin.phpを呼び出しています-

if($count==1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
$_SESSION['UserId'] = $myusername;
$_session['SessionId'] = session_id();
header("location:LoggedUser.php");
}

LiggedUser.php

<?php session_start();  //starting session

if (!isset($_SESSION['SessionId']) || $_SESSION['SessionId'] == '') { header("location:index.php"); } ?>

問題:正しいユーザー ID とパスワードを入力しているにもかかわらず、常に index.php ページに戻ってしまいます。

4

2 に答える 2

5

$_session を $_SESSION に変更します。

ところで、 session_register は非推奨であり、使用しないでください。詳細については、セッション登録マニュアルを参照してください。

ところで#2。$_SESSION に sessionId を格納する必要はありません。UserId で十分です。したがって、コードは次のようになります。

login.php

if ($count == 1) {
    $_SESSION['UserId'] = $myusername;
    header ("location: LoggedUser.php");
    exit;
}

記録されたuser.php

if (empty ($_SESSION['UserId'])) {
    header ("location:login.php");
    exit;
}

// user is logged 

編集: Emilが提案したように終了が追加されました。

于 2010-05-15T11:17:51.887 に答える
1

exit;各呼び出しの後に呼び出すことを検討してくださいheader('Location: ...')。そうしないと、PHPは残りのコードの解析を続行し、予期しないエラーが発生する可能性があります。

header("Location: LoggedUser.php");
exit;
于 2010-05-15T11:27:09.730 に答える