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

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

新規登録して質問してみよう
ただいま回答率
85.50%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

859閲覧

【php、ログイン認証】リダイレクトする際のトークンのPOSTについて

Zoohomi

総合スコア26

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

1クリップ

投稿2018/01/02 08:09

PHPでのログイン状態の認証について質問です。

https://qiita.com/mpyw/items/8f8989f8575159ce95fc
上記サイトを参考にして、トークンを使用してのログイン状態の判断を行っています。

該当のシステムは、


手順1.【ログインページ】ログインを押下し、メニューへ遷移
手順2.【メニューページ】メニューより、住所登録ページへ遷移
手順3.【住所登録ページ】住所を入力し、確認を押下することにより、登録確認ページに遷移
手順4.【登録確認ページ】内容を確認し、実行を押下することにより、データ登録フラグをPOSTした状態で自ページを再度読み込む。

 データ登録フラグがtrueの場合は、DBへ登録を行い、登録完了後、登録完了ページに遷移する。


上記のような流れです。

そこで質問なのですが、

固定トークンについて

固定トークンとは、手順1でログインと同時にトークンを発行(POST)して、その後全てのページで最初に発行したトークンを以下のようにPOSTしなおす必要があるのでしょうか?
<input type="hidden" name="token" value="<?=$POST_['token']?>">

だとすれば、メニューページのリンクは全て、submitにする必要があるということでしょうか?

<!-- トップページへ --> <form action="index.php" name="link_top" method="post"> <input type="hidden" name="token" value="<?=$_POST['token']?>"> <a href="javascript:link_top.submit()">メニュートップへ</a> </form> <!-- 住所登録入力画面へ --> <form action="jusyo_input.php" name="link_jusyo_input" method="post"> <input type="hidden" name="token" value="<?=$_POST['token']?>"> <a href="javascript:link_jusyo_input.submit()">住所登録入力画面へ</a> </form> ... ... <!-- リンク数分フォームを作成・・?ありえませんよね・・。 -->

リダイレクトについて

登録確認ページで実行が押下されると、実行処理が走り、その後「完了しました」というページにリダイレクトさせているのですが、
この場合リダイレクト先にトークンをポストすることってできませんよね?
こういう場合はどうすれば良いのでしょうか?

上記の様なフォームを作成して、javascriptでリンクがクリックされたことにする・・?違いますよね・・(笑)

通常、ログアウト処理以外ではリダイレクトは使用できないのでしょうか?

わからないーーーー
神様、教えてください・・。

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

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

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

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

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

guest

回答1

0

ベストアンサー

リンク先の仕組みはCSRF対策です。
ログインの状態確認のための仕組みではありません。

投稿2018/01/02 08:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Zoohomi

2018/01/02 09:20

では、ログインユーザーにのみ見せたい情報を、非ログインユーザーに見られないようにする際は ログイン時に $_SESSION['login'] = true; とかしておくと、その後は if ( !isset($_SESSION['login']) ) { // ログイン画面へリダイレクト } とかを各ページ先頭に埋め込むだけで良いのでしょうか?
退会済みユーザー

退会済みユーザー

2018/01/02 09:26

もっとも簡易な方法はそうです。 ただ、統合的な会員管理機能は考慮すべき箇所が多いので、フレームワークやライブラリでの実装を選択すると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問