セッション配列($_SESSION)の値をチェックしてログイン済みかどうかを判断する処理はtop_page.php, learning.phpでも同一です。従ってこれは一つのPHPファンクションlogin_check
にまとめて共通化しましょう。ついでに,MySQLサーバに接続する処理(dbconnect.php
)の機能も,common/common.php
にまとめてしまいます。
まず,現在のchallenge
フォルダ(ディレクトリ)の下にcommon
フォルダを作り,dbconnect.php
の内容をコピペし,その下にログインチェック関数を作ります。
common/common.php
次に,dbconnect.php
を呼び出しているPHPスクリプトを,全てcommon/common.php
を呼び出すように書き換えます。
下記のPHPスクリプトを上記のように変更して下さい。
top_page.php
とlearning.php
はログインチェック部分もlogin_check関数を使って共通化できるので,次のように書き換えます
これ以降は,共通する機能や変数の操作は全てcommon/commo.php
に記述し,なるべくPHPスクリプトの行数を少なく抑えるようにしていきます。逆に,重要かつセキュリティ上保護すべき機能も書きこまれることになりますので,これを放置してはいけません。以下,Webアプリケーションのセキュリティを確保する手続きを説明します。
今まで使ってきたdbconnect.php
を放置していてはセキュリティ上問題がありますのでこれを削除します。保存したければブラウザからアクセスできないフォルダにコピーしておいて下さい。
common/common.php
もWebブラウザからダイレクトにアクセスできないようにしましょう。そのためには
Apacheの設定にもよりますが,ユーザー側で追加のアクセス制限をかける時には,同じフォルダに.htaccess
というテキストファイルを作成し,指定したファイル・フォルダのアクセスを制限することができます。例えばcommon/common.php
を外部からアクセスできないようにするためには.htaccess
を
とします。実際これでアクセスできなくなったかどうかをhttp://localhost/challenge/common/common.phpにアクセスして確認して下さい。 と出れば制限されていることが確認できます。