質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

7690閲覧

【 js 】ログイン後、元いたページにリダイレクトしたい

suzufumi

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/11/01 07:43

###ログイン後、元いたページにリダイレクトしたい
JavaScriptのみで実装したいです。
PHPで記述することも情報をみることもできない環境ですが、
ログイン後に元いたページにリダイレクトすることは可能でしょうか?

###工程
ページ閲覧(未ログイン)

ログインページに遷移

ログインチェックNG → ログインチェックやり直し
ログインチェックOK

閲覧していたページに戻る(ログイン済)

###補足情報
ログインチェックOK、NGの情報を得ることはできません。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2017/11/01 07:48

今現在ログイン後に遷移する先のページはどこですか?例えばログインユーザのマイページとかですか?
masaya_ohashi

2017/11/01 07:49

また、ログイン前に見ようとしたページは「表示されたあとログインページへ遷移」ですか?それとも「表示されず、いきなりログインページが出る」ですか?
suzufumi

2017/11/01 08:07

今現在ログイン後に遷移する先 → ログインユーザのマイページです。
suzufumi

2017/11/01 08:10

ログイン前に見ているページ → 「表示されたあとボタンを押してログインページ」へ遷移です。
guest

回答2

0

なにかと制限が多いようですが、ログインページ自体が書き換えられないなら
なにもできないのでは?

書き換えられるなら飛んできたときにdocument.referrerをクッキーなどに
保持しておいて承認後、そちらに戻ればよいのでは?

投稿2017/11/01 07:50

yambejp

総合スコア114583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

考えうる方法

① 全てのページでcookieに「いま表示されているURL(Aとする)を保存する処理」を書く(ログインページは除く)

javascript

1document.cookie= 'lastpage=' + window.location; //最終訪問ページを保存

② ログインページでcookieに「今からログインするフラグ(Bとする)を保存する処理」を書く

javascript

1document.cookie= 'login=1';// ログインフラグを立てる

③ ログイン後に遷移するマイページで、「B」状態であった場合、「A」にリダイレクトする処理を書く

javascript

1var cookies = document.cookie.split(";"); 2document.cookie = 'login=0'; // ログインフラグを下ろす 3var map = {}; 4for(var index in cookies) { 5 var cookie = cookies[index].trim(); 6 var pair = cookie.split("="); 7 map[pair[0]] = pair[1]; 8} 9if('login' in map && map['login'] === '1') { 10 // マイページにログイン後に来たので、保存されているURLへリダイレクトする 11 window.location = map['lastpage']; 12}

ただし、これはPOSTで遷移したページではリダイレクトで戻ることは出来ないので、GETでのページ移動のみに限ります。

投稿2017/11/01 08:19

編集2017/11/01 08:21
masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suzufumi

2017/11/02 00:58

ご回答いただきありがとうございます。 全ページ、POSTでの遷移をしているため難しいと判断しました。
masaya_ohashi

2017/11/02 01:00

POSTで遷移しているページへ戻るのはPHPを使っても難しいですし、本来やるべきではありません。POSTとは「何かを書き換える通信」で使っているので、例えばログイン後に「掲示板に書き込むPOST」するページへ戻るような処理を強引に実装すると、二重に投稿されたりします。そのへんを防ぐためにはGETでの遷移とPOSTでの遷移をしっかり切り分けて管理していることが前提となるので、いまの状態での実装はjsでもPHPでも難しいという判断になるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問