0

Web サイトでログインを再構築しようとしています。Web サイトを継承しましたが、ログインは現在 ajax で構築されており、ログインに時間がかかります。

ユーザーがログインできるように次のように書きました...

<form name="form1" method="post" action="checklogin.php">
    <input name="myusername" type="text" id="myusername">
    <input name="mypassword" type="text" id="mypassword">
    <input type="submit" name="Submit" value="Login">
</form>

ログインが成功すると、ユーザーはリダイレクトされます...

header("location:earn-credits.php");

私の問題は、ユーザーが「Earn-credits」ページに送信されると、ユーザーがログインしていることを確認するチェックがあり、ログインしていない場合はユーザーをホームページに送り返すことです...

if(!$usersClass->checkLoggedIn()) { 
  header("Location: /index.php");
}

これで、ユーザーがリダイレクトされ、エラー メッセージが表示されないため、上記のフォームでログインしていることがわかりました。

私はPHPとAJAXを初めて使用するので、これはなぜですか? クッキーを設定する必要がありますか?

以下は、ユーザーがログインしていることを確認するための私のクラスです...

/**
 * check if user is logged in
 */ 
public function checkLoggedIn()
{
    if(isset($_SESSION['loggedIn']))
    {
        if(isset($_SESSION['loggedIn']['id']) && 
            isset($_SESSION['loggedIn']['username']) && 
            isset($_SESSION['loggedIn']['password']) && 
            isset($_SESSION['loggedIn']['credits']) && 
            isset($_SESSION['loggedIn']['active'])) {                   
                return true;
        }
    }

    return false;
}
4

3 に答える 3

1

header("location:earn-credits.php");

ユーザー セッション データを設定するには、おそらく $usersClass を使用する必要があります。

于 2012-10-17T08:03:42.980 に答える
0

最初のsession_start()呼び出しは、ユーザー側でPHPSESSID Cookie を作成します。これは、サーバーがどのセッション変数が誰に属しているかを維持するのに役立ちます。セッションは、これらのことを処理するためのものです。

ログイン システムに別の Cookie を明示的に設定する必要はありません。ただし、セッション盗用とそれを防ぐ方法を調べてください。

于 2012-10-17T08:04:32.613 に答える
0

いくつかの指針:

まず、checklogin.php のスクリプトはセッションを開始していますか? (session_start() または php.ini での自動セッション開始)?

次に、checklogin.php SETTING $_SESSION['loggedIn']['id']、$_SESSION['loggedIn']['username'] などですか?

3 番目: リダイレクト先のページ (earn-credits.php) もセッションを開始していますか? 各ページで session_start() を使用する必要があります。そうしないと、セッションが失われます。

4 番目: コードに AJAX が見当たりません。

最後に、ただのスタイルの問題: 最初の if ステートメントは意味がありません。つまり、if(isset($_SESSION['loggedIn'])) を持つものです。あなたはすでにそれをチェックしています。

public function checkLoggedIn()
{
    if(isset($_SESSION['loggedIn']))
    {
        if(isset($_SESSION['loggedIn']['id']) && 
            isset($_SESSION['loggedIn']['username']) && 
            isset($_SESSION['loggedIn']['password']) && 
            isset($_SESSION['loggedIn']['credits']) && 
            isset($_SESSION['loggedIn']['active'])) {                   
                return true;
        }
    }

    return false;
}

次のようにすることもできます。

public function checkLoggedIn() {
 return ((isset($_SESSION['loggedIn']['id']) && 
            isset($_SESSION['loggedIn']['username']) && 
            isset($_SESSION['loggedIn']['password']) && 
            isset($_SESSION['loggedIn']['credits']) && 
            isset($_SESSION['loggedIn']['active'])));
}
于 2012-10-17T08:08:38.970 に答える