1

ランダムページでの次のコードの出力は次のとおりです。

            print $_SESSION['uid']; // logged in user
        // Get Data .
        $uid = $_GET['ID']; // part of random page processing
            print $_SESSION['uid'];

は :

1
2

ログインしているユーザーIDが変更されています!:@

ログイン(認証)ページのコードは次のようになります。

        // Authenticate
        $query = "SELECT * FROM User WHERE Email = '".$Email."' AND Password = '".$Password."'";
        $result = mysql_query($query);

        // Authenticated?
        if(mysql_num_rows($result)) {
            // Yes

            // Set session Vars
            $uid = mysql_result($result,0,ID);
            $Access = mysql_result($result,0,Access);

            session_destroy();
            session_start();
            $_SESSION['loggedIN'] = 1;
            $_SESSION['Access'] = $Access;
            $_SESSION['uid'] = $uid;

            // Print a successful login and redirect
4

3 に答える 3

6

あなたが見ているのはの副作用ですregister_globals。基本的に:

$uid

$_SESSION['uid']

同じ変数を参照するので、次のようにします。

$uid = $_GET['ID'];

これは次と同等です:

$SESSION['uid'] = $_GET['ID'];

私のアドバイス?レジスタグローバルをオフにします。PHP 5.3で非推奨になり、PHP 6で削除されます。オフにするには、php.iniファイルを編集して、次のディレクティブに変更します。

register_globals = Off

次に、Apache(またはWebサーバーが何であれ)を再起動します。

于 2010-01-17T02:10:18.077 に答える
2

$_SESSION['uid']++それは奇妙です...あなたはどこでもやっていないのですか?

また、あなたは持っていregister_globalsますか?

于 2010-01-17T02:06:34.340 に答える
1

register_globalsデフォルトではオフになっているはずです。

session_registerどこかに電話はありますか?

于 2010-01-17T02:20:37.007 に答える