- 締切済み
phpで作成したページにアクセス制限
PHPで作成した画像のアップロードするファイルにアクセス制限をしたいのですが、CGIでもいいのですが、アクセス制限をかけられるソフトを知りませんか? KENTWEBさんにあるCGIも試したのですが、html、GIF、PDF、TXTなどには有効なのですが、PHPファイルはうまくいきません。ファイルが開いてもファイルのプログラムがすごい状態で開くだけなのです。 たぶん、アクセス制限をかけかたが違うのだろうと思うのですが、PHPファイルにアクセス制限できるソフトを紹介ください。 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hogehoge78
- ベストアンサー率80% (433/539)
少し探してみましたが、既存のPHPファイルに対して、別のプログラムでアクセスを制御するようなものはなかなか無いようですね。 COSMO GATEでやっているようなことをかなり簡易的にPHPに起こしてみました(50行程度のもの)。 ログインフォームが出てきて入力して認証して、認証が通ったら、該当するPHPスクリプトを表示し、ダメだったらまたログインフォームが出てくる、ってだけの実装です。 -----index.php-------(名前は任意) <?php define('AUTH_FILE', '../private/data.txt'); //public_htmlの外のどっかにパスを指定 define('AUTH_PHP_DATA', '../private/top.php'); //public_htmlの外のどっかにパスを指定 define('AUTH_PHP_LOGIN', '../private/login.php'); //public_htmlの外のどっかにパスを指定 /* AUTH_FILEの書式は、 userid1,userpass1[改行] userid2,userpass2[改行] ・・・・ です */ session_start(); $__auth_id = isset($_SESSION['AUTH']) ? $_SESSION['AUTH'] : null; $__auth_ok = true; if($__auth_id === null){ if(strtoupper($_SERVER['REQUEST_METHOD']) == 'POST'){ $__id = isset($_POST['id']) ? $_POST['id'] : null; $__pw = isset($_POST['pw']) ? $_POST['pw'] : null; $__user = $__id.",".$__pw; if(!file_exists(AUTH_FILE)) exit('パスワード管理ファイルが無い'); $___users = file(AUTH_FILE); foreach($___users as $__line){ $__auth_ok = false; if($__user === rtrim($__line)){ $__auth_ok = true; $_SESSION['AUTH'] = $__id; break; } } }else{ $__auth_ok = false; } if($__auth_ok === false){ //ログイン用のHTMLを表示 if(!file_exists(AUTH_PHP_LOGIN)) exit('login用ファイルが無い'); require_once AUTH_PHP_LOGIN; exit(); } } if($__auth_ok === true){ if(!file_exists(AUTH_PHP_DATA)) exit('ページが存在しない'); require_once AUTH_PHP_DATA; } ?> ----login.php--------(名前は任意) 最低限、下記のタグが存在していること。 <form action="index.php" method="POST"> id:<input type="text" name="id" value="" /><br /> pw:<input type="text" name="pw" value="" /><br /> <input type="submit" value="ログイン" /> </form> こんな感じでどうでしょう。 最低限のことしかしていないので、とりあえずすぐに必要であれば設置してみて、今後自前でログイン画面や登録画面を作成するなり、継続的に便利なログインフォームプログラムを探す感じで。
- hogehoge78
- ベストアンサー率80% (433/539)
KENTWEBさんのスクリプトは、ディレクトリの中にあるファイルをただファイルとして出力しているだけなので、PHPスクリプトとして動作しないようですね。 PHPでフォームを使った認証を考えると結構面倒がありますので、後々考えるとして、BASIC認証というものをご利用されてはいかがですか? http://allabout.co.jp/internet/hpcreate/closeup/CU20020910A/ こちらに判りやすい作業方法が記載されています。
- hogehoge78
- ベストアンサー率80% (433/539)
>PHPで作成した画像のアップロードするファイル PHPスクリプトで作成した、画像アップローダーということですか? >アクセス制限 これは、パスワードなどで認証を行って、パスワードを知っている人だけが入れるようにしたいということですか? 出来ればKENTWEBさんのWebサイトにあるCGIの名前か、URLを教えてもらえますか? >ファイルが開いてもファイルのプログラムがすごい状態で開く もう少し詳しく教えてもらっても良いでしょうか。 ブラウザ上にPHPスクリプトのソースコードが表示されてしまうということでしょうか。 ご利用のレンタルサーバ(もしくは自宅のサーバ?)はどのようなものでしょうか。PHPに対応しているサーバですか?
補足
ありがとうございます。 phpでアルバムのような感じにファイルを表示させたものです。 PHPだけであれば普通に表示できています。 COSMO GATE です。ほかのアクセス制限をかける設定をしてみましたがやはりおっしゃるようにブラウザ上にソースコードが出てしまいます。 サーバーはPHPに対応しています。 宜しくお願いします。
お礼
ありがとうございます。 PHPでフォームを使った認証に関してかなり探したのですが見つかりませんでした。 BASIC認証はウィンドウがカスタマイズできないので、最後にとっておきました。やはり、これしかないのでしょうね。