PHPはテキストファイルを暗号化し、特定ページのアクセスを制限する効果を実現します。


ファイルの暗号化プログラムはサイトで広く使われています。これはパスワードとユーザ名を格納するためにデータベースを使用することを意味します。具体的には以下の通りです
一、概要
普通の情況の下でにもかかわらず、あなたのウェブサイトはよくとても簡単で、甚だしきに至ってはそれはまったくデータベースを使うことを要求しません。しかし、場合によっては、あなたのサイトはいくつかのページへのアクセスを制限したいかもしれません。一般的に、これはパスワードとユーザ名を格納するためにデータベースを使用することを意味する。しかし、もっと簡単な方法があります。安全性が少し悪いにもかかわらず、ごくわずかなコードしか含まれていません。
自分のWebアプリケーションでデータベースを使用すれば、パスワードとユーザ名をどこかに記憶することができ、訪問者を認証するための方法があります。しかし、あなたのサイトの安全性や複雑さのためにデータベースの使用が保証されない場合、どうすればいいですか?いくつかの特別な人だけがあなたのサイトのいくつかのページまたは一部のエリアにアクセスしたい場合があります。このために、パスワードを格納するテキストファイルを使用して、訪問者にパスワードの入力を促すページを作成するという簡単な方法がある。パスワードがテキストファイルに格納されたコンテンツと一致する場合、制限されたページにアクセスすることができる。そうでなければ、ページの更新を開始する前に、アクセスを禁止する適切なメッセージが表示されます。
さらにセキュリティのために、テキストファイルに格納されているパスワードをハッシュ法で暗号化することもできます。このように、コンテンツがある程度発見されると、それはまだ明らかにされにくいです。これらはすべてPHP法で構築でき、極めて少量の符号化だけが必要です。
正式に始まる前に、PHPをテストして使用する環境を作る必要があります。ですから、まずPHPのためにWebサーバをインストールして配置する必要があります。AppacheとPHPの協同作業が良好で、設置や配置が容易なので、この案をオススメします。
次に、ページを作成する必要があります。(下図のように)訪問者からのパスワードを受信するテキストボックスがあります。submitボタンを押してPHPファイルに送信します。これは新しいページでもいいし、ウェブサイトの既存ページの一部でもいいです。下のような簡単なコードブロックで十分です。

<form name="passwordForm" method="post" action="restricted.php">
<p>Password:
<input type="password" name="password">
<input type="submit" name="Submit" value="Login">
</p>
</form>
二、PHPホームページの作成
次に、実際の作業を完了したPHPホームページを作成する必要があります。テキストエディタで空白のページを開き、標準的にPHPブロックを開きます。
以前述べたように、PHPは標準的な関数と方法を持っています。その中で、最も主要ないくつかはfopen()、fread()とfclose()関数です。ある種のファイル操作を行うためには、まずそれを開く必要があります。これはfopen関数を使って実現されます。また、ファイルの操作方法を指定しなければなりません。ファイルを読んで、ファイルを読むのは最も一般的なタスクですが、他のいくつかの付加的なフラグは、プログラムがファイルポインタを最初に置くか、それともファイルの最後に置くかを教えたり、ファイルが存在しない場合はファイルを作成しますか?しかし、この例では、パスワードを含むテキストファイルを開いて読み込む必要がある。
次に、まず指定されたテキストファイルへのパスの変数を作成します。

$fileloc = "/apachesite/docs/pass.txt"
 
次に、ファイルポインタを保存する変数を作成します。

$filetoread = fopen($fileloc, "r") or die("Could not open password file");
die方法を使ってスクリプトを終了してもいいです。もし操作が何らかの理由で失敗したら、画面に適切なメッセージを印刷します。ファイルを開くと、パスワードで入力した内容と比較するために、その内容を読み取る必要があります。

$storedpass = fread($filetoread, filesize($fileloc)) or die ("Could not read stored password");
ファイル中のデータを保存する変数を設定し、fread()メソッドを呼び出します。あなたのパスワードの長さを知ることができます。将来のプログラムを簡単にするために、ファイル長を得るために、filesize()を使ってもいいです。ファイルが不要になりましたら、すぐに閉じます。

fclose($filetoread);
三、パスワードを使う
HTMLフォームに入力されたパスワードを使うためには、それを取得して変数に格納する必要があります。POSTメソッドを使って、ユーザーが入力した内容をPHPスクリプトに送る時、私達は$uを使うことができます。POSTは入力のパスワードを取得します。

$password = $_POST["password"];
そして、入力されたパスワードとパスワードを簡単に比較し、対応する措置を取ることができます。

if (empty ($password)){
die ("No password entered");
}
elseif ($password != $storedpass){
die ("Password Incorrect");
}
else{
Header("Location: securepage.htm")
}
最初のif文では、入力ボックスが空であるときにsubmitボタンがクリックされないように、空白の$password変数を処理します。ユーザが入力したパスワードが記憶されているものと一致しない場合、括弧内のコードを実行し、メッセージ表示パスワードを出力するのはエラーです。最後に、前の2つの条件が満たされていない場合、このスクリプトはパスワードが正しいと判断し、例中のHTMLページを開いてブラウザに再設定ヘッダを送信する。
仕事ができる前にテキストファイルを作成し、PHPファイルと同じディレクトリに置く必要があります。現在使用したい普通のテキスト形式で保存されているパスワードを含めてPHPファイル名を参照する必要があります。これらのファイルをすべて保存して、HTMLページをブラウザで開き、そのフォームでテストします。このページは思った通りに働くべきです。
正しいパスワードを入力すると、エラーメッセージがあったら、その内容は以下の通りです。
「Warning:Canot modify header information-headers already sent by(thepathtoyour phpfile)」
これは、Windowsディレクトリの下にあるphp.iniファイルのOutput-bufferingを「on」に設定する必要があります。
四、暗号化
今から先に述べた暗号化問題を分析し始めます。PHPには内蔵のMD 5方法があります。このようにして、訪問者が入力したパスワードを格納したパスワードと比較する前に、これらの関数を簡単に使用して変換することができます。
MD 5は一方向のハッシュアルゴリズムであり、パスワードは一方向だけで暗号化され得ることを意味し、通常のテキストから暗号化されたテキストに至るが、別の方向では不可能である。しかし、それが解読できないというわけではない。この暗号化は暴力的または辞書攻撃によって解読されやすいが、それでも比較的安全である。次の行を$password変数のステートメントに追加できます。

$md5password = (md5($password));
このようにして、テキストボックスに入力された内容の暗号化バージョンを変数md 5 passwordに保存することができます。ここでは、保存されているパスワードと新しい暗号化のパスワードを比較するために、if文を修正する必要があります。

if (empty ($password))
{
 die ("No password entered");
}
elseif ($md5password != $storedpass)
{
 die ("Password Incorrect");
}
else
{
 header("Location: securepage.htm");
}
あなたが見ているように、私たちは文のelseif部分の変数だけを変えました。これは、たとえ空の入力変数でも32ビットの値にハッシュ化されるので、いつまでも空であることは不可能です。-入力ドメインにテキストを入力する前にsubmitボタンをクリックしても。
今、あなたが必要なのは、テキストファイルのpass.txtに格納したいパスワードのハッシュ値を見つけることです。このためには、if文全体を注釈して、echo文を追加して、暗号化されたパスワードを画面に表示することができます。その後、暗号化された列をコピーしてパスワードファイルに保存することもできます。しかし、スクリプトを使用する前に、コメントif文をキャンセルし、echo呼び出しを削除することを覚えておく必要があります。
ここで論じた方法については、上のスクリプトフレームが提供するものは十分である。また、本明細書で説明したテストファイルは、非常に基本的であるにもかかわらず、このHTMLページを既存のページに簡単に追加することができる。これをウィンドウに貼り付けて、そのスタイルを整理して、あなたのホームページの残りの部分に合わせることができます。タイミング関数が含まれています。これは訪問者を安全なページにリダイレクトする前に一定の時間を待って、パスワードが正しいことを示すメッセージを表示します。同様の関数セットを含んで、初期ページをリロードしてもいいです。
つまり、本明細書で提供されるスクリプトを使用して、あなたのサイト構造の特定ページへのアクセスを制限することができます。この方法は、データベースによって提供される安全なユーザ名/パスワード認証方法を提供していませんが、セキュリティページにアクセスしたい誰にもパスワードを送信しなければならないという意味です。
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。