4

次のようなログインページがあります。

<form action="?" method="post" id="frm-useracc-login" name="frm-useracc-login" >

    <div id="login-username-wrap" >

        <div class="login-input-item left">

            <div class="div-search-label left">

                <div id="div-leftheader-wrap">

                    <p class="a-topheader-infotext left"><strong>Username: </strong></p>

                </div>

            </div>

            <div class="login-input-content left div-subrow-style ui-corner-all">

                <input type="text" tabindex="1" name="txt-username" id="txt-username" class="input-txt-med required addr-search-input txt-username left">

            </div>

        </div>

    </div>

    <div id="login-password-wrap" >

        <div class="login-input-item left">

            <div class="div-search-label left">

                <div id="div-leftheader-wrap">

                    <p class="a-topheader-infotext left"><strong>Password: </strong></p>

                </div>

            </div>

            <div class="login-input-content left div-subrow-style ui-corner-all">

                <input type="password" tabindex="1" name="txt-password" id="txt-password" class="input-txt-med required addr-search-input txt-password left">

            </div>

        </div>

    </div>

    <div id="login-btn-bottom" class="centre-div">

        <div id="login-btn-right">

            <button name="btn-login" id="btn-login" class="btn-med ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper left">Login</button>
            <button name="btn-cancel" id="btn-cancel" class="btn-med ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper left">Cancel</button><br /><br />

        </div>

    </div>

</form>

そして、ここで私の session.controller.php ファイル:

ここをクリック

基本的に、私がやりたいことは、自動的に値をセッション コントローラーに渡してログインする 2 番目のログイン ページを作成することです。次に、使用して自動的にログインするjqueryクリックイベントがあります$("#btn-login").trigger('click');

問題は、セッションがタイムアウトした場合、セッション コントローラーが自動的に login.php に戻ることです。どうすればこれを達成できるかわかりません。どんな助けでも大歓迎です!

4

3 に答える 3

2

コメントで述べたように、ユーザーが最初にどのようにログインしたか (login または login-guest) を知る必要があるため、とにかくユーザーごとに何らかの状態を保持する必要があります。

セッション タイムアウトを無限に増やすことができない場合は、ログイン タイプを Cookie などの別の場所に保存するか、URL のクエリ文字列として保存する必要があります。

クッキーの場合は、次のようになります。

あなたのログインセクションでlogin-guest.php

...
$expire = 60 * 60 * 24 * 30 * 24 + time(); // 2 years
setcookie('logintype', 'guest', $expire); 

そして、これはユーザーをログインページに送る場所です:

if(isset($_COOKIE['logintype']) && $_COOKIE['logintype']=='guest'){
    header('Location: login-guest.php');
} else {
    header('Location: login.php');
}

Cookie の寿命が無限になるとは思わないので、有効期限を 2 年に設定しましたが、これは変更できます。ユーザーが Cookie を削除したり、別のブラウザを使用したりすると、明らかに持続しません。

于 2012-11-14T10:58:39.220 に答える
0

ログインタイプ(例:登録済み、ゲスト)の各ログインフォームに追加のフィールドを使用して問題を解決する必要があります。この値を使用して、必要なリダイレクトまたは必要なその他のロジックを実行しますか?

さらに使用するために、このログイン タイプをセッション/Cookie に保持することもできます。

于 2012-11-12T13:20:20.333 に答える
0

各フォームに単純な非表示の入力を追加できます。

<input type="hidden" name="login_type" value="guest" />

次に、実行されるログインのタイプに応じてリダイレクトします。

if($_POST['login_type'] == 'guest') {
    header('Location: login-guest.php');
}
else {
    header('Location: login.php');
}

もちろん、より良い解決策があり、常に入力などをフィルタリングする必要がありますが、簡単にするためにそこに行きます。

于 2012-11-13T16:11:55.320 に答える