2011-01-27 20 views

答えて

11

単純な解決策は、ログインページにキックする前に、セッション変数に "return" URLを格納することです。ログインページは、セッション変数の有無をチェックしてから、ヘッダーの位置を変更してユーザーを問題のURLに戻す前にセッション変数の設定を解除します。

ログインページたとえば、あなたが使用したい:

header('Location: ' . $_SERVER['HTTP_REFERER']);

+0

私は本当にあなたの答えが好きです。 – Navruk

+0

@Navrukありがとう - うまくいくことを願っています。 :-) –

-1

あなたは、ブラウザのリファラを使用して、どこから来たのページに戻って、ユーザを送信することができますログインページへのリダイレクトでGETパラメータとして返すURL:

/login.php?return_url=%2Fcart%2Fproducts.php 

login.phpでは、return_urlパラメータ(/cart/products.php)をデコードし、ログインに成功したときにそこにユーザを送ります。

+0

信頼できません。ブラウザがこの値を提供しているかどうか、または正しいことを保証するものではありません。 –

+0

つまり、HTTP_REFERERがローカルURLであり、リモートURLではない場合) –

1

送る:

// Successfully logged in... 
$destURL = $_SESSION['kickurl'] ? $_SESSION['kickurl'] : '/index.php'; 
unset($_SESSION['kickurl']); 
header('Location: ' . $destURL); 
exit(); 
1

ログインページにリダイレクトするときは、傍受したURL(しばしばリターンURLと呼ばれる)をセッション変数(または必要に応じて他のストレージ)に入れます。ログインが完了すると、このURLにリダイレクトできます。

ログオン処理中に、ウェブサイトクエリーストリングに返信URLが表示されることがあります。たとえば、Googleアカウントにログインしていない状態でdocs.google.comにアクセスすると、クエリ文字列に「続行」という値が表示されます。

https://www.google.com/accounts ?のWritely/ServiceLoginサービス= &パッシブ= 1209600 &は継続=のhttp://docs.google.com/ &フォロー=のhttp://docs.google.com/ & ltmpl =ホームページ

3

あなたはのURLを追跡する必要があります各ページ: as:<?php $_SESSION['url'] = $_SERVER['REQUEST_URI']; ?>

<?php session_start();
if(isset($_SESSION['url'])) $url = $_SESSION['url']; // url for last page visited. else $url = "index.php"; // page you want to redirect by default header("Location: http://abc.com/$url"); ?.

0

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

をキープして、フォームのポストでredirurl値を取得します。

if(isset($_REQUEST['redirurl'])) 
    $url = $_REQUEST['redirurl']; // holds url for last page visited. 
else 
    $url = "myprofile.php"; // default page 

header("Location:$url"); 

redirurlは、以前のページングを格納する。それらのページURLをコピーしないように、登録ページとログインページのセッションを維持します。

関連する問題