web-dev-qa-db-ja.com

ログイン後に同じページに移動する方法PHP

例えば、

ステップ1:

ログインせずにページを閲覧していますが、ログイン前の最後のページはbeforeLogin.phpです。

ステップ2:

今私の問題は、ログインしたときにindex.phpページにリダイレクトしています。代わりに、私が閲覧した最後のページにリダイレクトされます。

上記の例からですが、beforeLogin.phpにリダイレクトする必要があります

これをどのように行うことができますか。

どんな助けにも感謝します。

前もって感謝します

20
Fero

ユーザーが閲覧した最後のページに逆参照できるように、アクセスしたWebページを追跡する方法が必要になります。

複数ページにわたるユーザーのセッションを追跡することを考えるとき、私は他のすべてのPHPプログラマーと同様に、 セッション

可能な方法は、アクセスしたリンクをセッション変数に格納し、ユーザーがlogin.phpページに到達したとき(ログインするページです。 )) header セッション変数によって与えられた$urlへのリダイレクトを提供します。

注:以下のコードスニペットは、テスト済みまたはコンパイル済みではありません。

このコードをWebサイトのすべてのページに貼り付けることができます。

<?php
session_start(); // starts the session
$_SESSION['url'] = $_SERVER['REQUEST_URI']; // i.e. "about.php"

これは $_SERVER 変数を利用して、$_SERVER['REQUEST_URI']を使用して現在アクセスしているページのURIを返します

そして、ログインページがさらに実証するのを助けるために:

<?php
session_start();  // needed for sessions.
if(isset($_SESSION['url'])) 
   $url = $_SESSION['url']; // holds url for last page visited.
else 
   $url = "index.php"; // default page for 

header("Location: http://example.com/$url"); // perform correct redirect.
36

これまでで最も簡単な解決策は、単に次のようにすることです。

<hidden name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />

ログインしたら、そのアドレスにリダイレクトします。

ただし、これはすべてのページにログインボックスがある場合にのみ有効です。私は個人的にやっていて、それはかなりうまくいくと思います。

6
Lotus Notes

ログインフォームアクションを現在のページに導くことができます。それは単純明快です

たとえば、ページは次のようになります

<?
include "auth.php"; // you need it anyway, as you want to control user's auth
//the rest of the page;
?>
<form method="POST">
login form
</form>
<?
//the rest of the page;
if (!empty($_SESSION['user_id'])) echo "Welcome registered user!";
?>

そしてauth.phpはログインチェックを処理し、現在のページにリダイレクトすることは大したことではありません

<?
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_POST['auth_name'])) {
  //password checking
  if (pass ok) {
    session_start();
    $_SESSION['user_id'] = $row['id'];
  }
  header("Location: http://".$_SERVER['HTTP_Host'].$_SERVER['REQUEST_URI']);
  exit;
}

このような何か追加のセッションは必要ありません。

2
<?php
session_start(); // starts the session
$_SESSION['url'] = $_SERVER['REQUEST_URI']; // i.e. "about.php"

これは $_SERVER 変数を利用して、$_SERVER['REQUEST_URI']を使用して現在アクセスしているページのURIを返します

そして、ログインページがさらに実証するのを助けるために:

<?php
session_start();  // needed for sessions.
if(isset($_SESSION['url'])) 
   $url = $_SESSION['url']; // holds url for last page visited.
else 
   $url = "index.php"; // default page for 

header("Location: http://example.com$url"); // perform correct redirect.
2