1

私のページにはいくつかのリンクがあります。ユーザーがログインしていない場合、それらのほとんどはホームページにリダイレクトされます。それを行う代わりに、ユーザーをログインページに誘導してから、最初に行きたかったページに誘導したいと考えています。

たとえば、ユーザーが をオンにしていて、ログインせずにindex.phpをクリックすると、 にリダイレクトされます。ログイン後、ウェブサイトは、ユーザーが最初に にアクセスしたかったことを記憶している必要があります。page10.phplogin.phppage10.php

その記憶の部分はどうすればいいですか?Cookie や php セッションを使用できることは理解していますが、(このシナリオでは) ユーザーが行きたいと思っていたことを記憶する最も適切な方法はありますpage10.phpか?

4

4 に答える 4

2

セッションを使用したり変数を取得したりする必要はありません。ログインページの$_SERVER配列からHTTP_REFERERにアクセスし、フォームの非表示要素に設定して、送信後にそのURIにリダイレクトします。

于 2013-01-24T10:14:48.543 に答える
2

リンクの一部として目的の URL を追加します。したがって、ユーザーがログインしていない場合は、リダイレクトします。

login.php?url=<desired_url>

ログインページで変数を読み取り、成功するとインデックスの代わりに変数をそこに送ります。

サーバー側で URL を取得するには、次を参照してください。$_SERVER['REQUEST_URI']

$_SERVER マニュアル

于 2013-01-24T09:35:49.920 に答える
0

ユーザーのログインは、セッションを使用することを意味します。セッションは通常 Cookie を使用しますが、Cookie を使用したくない場合や使用できない場合は、リクエストでセッション ID を渡すことで実装できます。

これを行う適切な方法は、次のようにセッションを使用することです。

1) 認証チェックはログインページにリダイレクトします

2)ログインページは、ターゲットページがセッションに設定されているかどうかを確認し、設定されていない場合はリファラーに設定します

3) ログインフォームが有効な場合、ターゲットページはセッションから削除され、ユーザーは元のページにリダイレクトされます

4) それ以外の場合、フォームは再表示されます。

于 2013-01-24T09:48:41.373 に答える
0

まず、リダイレクト先login.php?return=ORIGINAL_URL

login.php で設定し$_SESSION['return'] = $_GET['return'];ます。

ログインに成功したら、 があるかどうかを確認し$_SESSION['return']、有効な URL がある場合は、その URL にリダイレクトして の設定を解除し$_SESSION['return']ます。

それでおしまい。

PS: セッションを使用する必要がある理由は、ユーザーが最初の試行で正常にログインできない可能性があるためです。または、アカウントを持っていない可能性があります。彼は最初に登録したいと思うかもしれません。このようにして、アカウントを作成した後でも、適切なページにリダイレクトされます。

于 2013-01-24T09:37:15.763 に答える