ユーザーがサイトを設計および保守する場合、多くの場合、特定の重要なファイルまたは情報へのアクセスを制限する必要があります。通常、WEBサーバーに組み込まれたHTTPプロトコルによるユーザー認証機構を利用できます。訪問者が保護されたページを閲覧すると、クライアント ブラウザはダイアログ ウィンドウをポップアップ表示し、ユーザー名とパスワードを入力してユーザーの身元を確認し、ユーザーがページにアクセスする権利があるかどうかを判断するように求めます。その実装原理を説明するために 2 つの方法が使用されます。
1. HTTP ヘッダーを使用して実装する
ヘッダーは、HTTP プロトコルを使用して HTML 情報をブラウザーに送信する前にサーバーによって送信される文字列です。 HTTP は、チャレンジ/レスポンス モデルを使用して、パスワードで保護された領域に入ろうとするユーザーを認証します。具体的には、ユーザーが初めて保護領域にアクセスするリクエストを WEB サーバーに送信すると、チャレンジ プロセスが開始され、サーバーはユーザーの身元が確認されていないことを示す特別な 401 ヘッダーを返します。上記の応答を検出すると、クライアント ブラウザはユーザー名とパスワードの入力を求めるダイアログ ボックスを自動的に表示します。ユーザーが入力を完了して「OK」をクリックすると、ユーザーの識別情報が検証のためにサーバーに送信されます。ユーザーが入力したユーザー名とパスワードが有効な場合、WEB サーバーはユーザーが保護領域に入るのを許可し、アクセス プロセス全体を通じてユーザーの ID の有効性を維持します。逆に、ユーザーが入力したユーザー名またはパスワードが検証できない場合、クライアントのブラウザは入力ウィンドウを継続的にポップアップ表示し、ユーザーに正しい情報を再度入力するよう求めます。ユーザーが正しい情報の場所を入力するまで、プロセス全体が続行されます。これを超えると、ユーザーのアクセス要求は自動的に拒否されます。
PHP スクリプトでは、関数 header() を使用して HTTP ヘッダーをクライアントのブラウザーに直接送信します。これにより、ユーザー名とパスワードの入力ウィンドウがクライアント上に自動的にポップアップ表示され、ID 認証機能が実装されます。 PHP では、クライアント ユーザーが入力した情報は、サーバーに送信された後、3 つのグローバル変数 $PHP_AUTH_USER、$PHP_AUTH_PW、および $PHP_AUTH_TYPE に自動的に保存されます。これら 3 つの変数を使用すると、データ ファイルまたはデータベースに保存されているユーザー アカウント情報に基づいてユーザーの身元を確認できます
ただし、$PHP_AUTH_USER はモジュールとしてインストールされた PHP でのみ使用できることに注意してください。 、$PHP_AUTH_TYPE が 3 つの変数です。ユーザーが PHP を CGI モードで使用している場合、検証機能は実装できません。 PHP のモジュールのインストール方法はこのセクションの最後に添付されています。
以下では、Mysql データベースを使用してユーザーの ID を保存します。各アカウントのユーザー名とパスワードをデータベースから抽出し、$PHP_AUTH_USER 変数と $PHP_AUTH_PW 変数と比較してユーザーの信頼性を判断する必要があります。
まず、MySql にユーザー情報を保存するデータベースを作成します
データベース名は XinXiKu、テーブル名は user; テーブル定義は次のとおりです:
create table user(
ID INT(4) NOT NULL AUTO_INCREMENT,
name VARCHAR( 8) NOT NULL、
password CHAR(8) NOT NULL、
PRIMARY KEY(ID)
)
説明:
1 は、ゼロではなく自動的に増加するシリアル番号です。プライマリキー;
2、name はユーザー名であり、空にすることはできません。
以下はユーザー検証ファイルです。
//ユーザー名が設定されています
if(!isset($PHP_AUTH_USER ))
{
header("WWW-Authenticate:Basic realm="認証関数"")
header("HTTP/1.0 401 Unauthorized");失敗しました。ネットワーク リソースを共有する権限がありません!" ;
exit();
}
/*データベースに接続*/
$db=mysql_connect("localhost","root","");
//Selectデータベース
mysql_select_db("XinXiKu",$db);
//ユーザーが存在するかどうかをクエリします
$result=mysql_query("SELECT * FROM user where name='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'",$db) ;
if ($myrow = mysql_fetch_row($result))
{
//以下は認証成功後の関連操作です
...
}
else
{
//認証が失敗した場合、ユーザーは再認証を求められます-enter
header("WWW-Authenticate:Basic realm="認証関数 "");
header("HTTP/1.0 401 Unauthorized");
echo "認証に失敗しました。ネットワーク リソースを共有する権限がありません!"; exit();
}
?>
プログラムの説明:
プログラムでは、まず変数 $PHP_AUTH_USER が設定されているかどうかを確認します。設定されていない場合、スクリプトは HTTP 401 エラー番号ヘッダーを送信して、クライアントのブラウザに認証ウィンドウが表示され、ユーザー名と入力を求められます。入力が完了したら、接続データベースでユーザー名とパスワードが正しいかどうかを確認し、正しい場合は、ログインによる関連操作の実行を許可します。
関数の説明:
1. isset(): 変数に値が割り当てられているかどうかを判断するために使用されます。変数値が存在するかどうかに応じて、true または false を返します
2. header(): 特定の HTTP ヘッダーを送信するために使用されます。 header() 関数を使用する場合は、実際の出力を生成する HTML または PHP コードの前に必ずこの関数を呼び出してください。
3. mysql_connect(): MySQL サーバー接続を開きます。
4. mysql_db_query(): クエリ文字列 (クエリ) を MySQL データベースに送信します。
5. mysql_fetch_row(): 単一の列の各フィールドを返します。
2. セッションを使用してサーバー検証を実装する
認証が必要なページの場合は、Apache サーバー検証を使用するのが最適です。ただし、Apache サーバー検証のインターフェイスは十分に使いやすいものではありません。また、CGI モードの PHP および IIS 下の PHP は、Apache サーバーを使用して検証できません。このようにして、セッションを使用して異なるページ間でユーザーの ID を保存し、ID 検証を行うことができます。
バックエンドでは、上記の Mysql データベースを使用してユーザー情報を保存します。
最初にユーザー ログイン インターフェイスを作成します。ファイル名はlogin.phpで、コードは次のとおりです。
______________________________________________________________
__________________________________________________________________
login1.php は送信されたフォームを処理します。コードは次のとおりです:
$db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu" ,$db);
$result=mysql_query("SELECT * FROM user where name='$name' and password='$pass'",$db); result))
{
//ユーザーの登録
session_start();
$user=$myrow["user"];
$user=$myrow["user"]; }
else
{
echo "認証に失敗しました。ネットワーク リソースを共有する権限がありません!";
}
?> ここで、ユーザーは **http://domainname/next.php? を使用できることに注意してください。 user=username** を使用して認証をバイパスします。したがって、以降の操作では、まず変数が登録されているかどうかを確認する必要があります。登録されている場合は、対応する操作を実行します。登録されていない場合は、不正ログインとみなされます。関連するコードは次のとおりです:
session_start();
if (!session_is_registered("user"))
{
echo "認証に失敗しました。不正なログインです!"
}
else
{
// ログインに成功しました。関連操作
...
}
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
