セッション配列($_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にアクセスして確認して下さい。 と出れば制限されていることが確認できます。