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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1214閲覧

後付けで特定のディレクトリをログインユーザー専用にしたい

sc2273

総合スコア12

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/11/28 04:08

###前提
お世話になります。
PHPもMysqlもかじりたての初心者の質問となりますが、ご指導ご鞭撻のほどよろしくお願いいたします。

社内システムとしてSSOを導入している途中でして、IDパスワードを用いてログインしているシステムを一元化する予定です。
その一環として今回、社内専用のデータベースのログインもSSOにて実現する流れとなりました。

◆現在のサイト構造
データベースはphpとsqlベースで作成されており、現状ではBasic認証をかけております。
構造としましては以下のとおりです。
イメージ説明

◆改装後のサイト構造
これを導入するシステムの都合上、Basic認証を無くしてSAML2.0に対応させたフォームにてログインさせるよう、
下記のように作り替える必要がございました。
イメージ説明

現在ここまでは実現した状態となっておりますが、上図右下箇所に赤丸で示したとおり、
URLを知っているユーザーなら誰でも直アクセスすることで、サイトにアクセスできてしまいます。

###実現したいこと
既存のサイトに後付けで会員専用ディレクトリを設定したいです。
また、前述いたしましたとおり、basic認証を使用せずログインフォームでログインしたユーザー以外をアクセスさせない必要がございます。

###試したこと
・htaccessによるアクセス制限

[php]会員制サイトで特定のディレクトリ内をアクセス制限する
[https://iritec.jp/web_service/2990/]

記事を参考にindex.phpに直接アクセスした場合の処理を書こうとしましたが、
.htaccessのphpに対する”Action"の部分が分からなかったこと、認証処理判断が分からなかったことから断念いたしました。

・変数を用いたログイン判定
$id = $_POST['id']で入力されているid情報を取得し、if($id = "hoge")ならばページを表示しようとしました。
しかしながらすべてのページでページ遷移時にPOSTしているわけではないため、実装を断念いたしました。


いくつか方法は試したもののどうにも上手く動かせない状況となっております。

そもそもこの考え方が合っているかどうかや、もっとこうしたほうが良いという意見でも構いませんので、
皆さまのお力をお借りしたく、今回質問させていただきました。

何卒よろしくお願い申し上げます。

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

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

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

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

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

guest

回答2

0

既に回答が出ていますが
ログイン情報は基本的にセッションに格納します。
どのページでもまずはセッションを取り出し、
認証済みかどうかを判断してからページを表示します。

POST(GET)などURLパラメータはいくらでも偽装できるので、
認証には向いていません。

既存サイトは何かフレームワークを使っているでしょうか?(CakePHP、CodeIgniter、Laravelなど)
使っているようであればコントローラー(MVCのC)の親クラスに
認証の処理を書くのも一般的です。

投稿2018/11/28 04:58

take_3306

総合スコア242

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

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

sc2273

2018/12/01 09:33

>take_3306様 ご回答ありがとうございます。 参考にさせていただきます。
guest

0

ベストアンサー

sessionを使うとすべてが解決します。

PHP

1# login.php 2# login 3<?php 4if(!empty($_POST)) { 5 if($_POST['user'] == 'validUser' && $_POST['pass'] == 'validPass') { 6 session_start(); 7 $_SESSION['member'] = ['user' => 'validUser']: 8 header('Location: https://example.com/memberTop.php'); 9 } else { 10 echo '認証に失敗'; 11 } 12} 13?> 14<form action="login.php" method="POST"> 15<input name="user" value="<?php echo @$_POST['user'] ?: ''; ?>"> 16<input name="pass" value="<?php echo @$_POST['pass'] ?: ''; ?>"> 17<input type="submit"> 18</form>

PHP

1# memberTop.php 2# メンバー用ページ 3<?php 4include('memberOnly.php'); 5?> 6ようこそ<?php echo $_SESSION['member']['user']; ?>さん!

PHP

1# memberOnly.php 2# メンバー用ページにアクセス出来るか(認証済みか)確認する処理 3<?php 4session_start(); 5if (!isset($_SESSION['member'])) { 6 header('Location: https://example.com/login.php'); 7 exit(); 8}

投稿2018/11/28 04:45

編集2018/11/28 05:09
kunai

総合スコア5405

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

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

sc2273

2018/12/01 09:34

>kunai様 ご回答ありがとうございます!! 教えていただいたとおりにやったところ、無事意図した通りのものができました・・! どうにもならず困り果てていたのでとても助かりました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問