国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ php教程 php手冊(cè) Apacheサーバーのユーザー認(rèn)証(移管)

Apacheサーバーのユーザー認(rèn)証(移管)

Jun 21, 2016 am 09:14 AM
apache mysql php quot

apache|サーバー

インターネットを頻繁にサーフィンする読者は、このような狀況に遭遇することがあります。一部の Web サイト上の特定のリソースにアクセスすると、リソースにアクセスするためのユーザー名とパスワードを求めるダイアログ ボックスがブラウザーに表示されます。ユーザー認(rèn)証を行う技術(shù)です。ユーザー認(rèn)証は、ネットワーク システム リソースを保護(hù)するための最初の防御線であり、すべてのログインを制御し、アクセス ユーザーの正當(dāng)性をチェックします。その目的は、正當(dāng)な権限を持つ正當(dāng)なユーザーのみがネットワーク システム リソースにアクセスできるようにすることです。基本的なユーザー認(rèn)証技術(shù)は「ユーザー名+パスワード」です。


Apache は現(xiàn)在、Linux、Unix、Windows およびその他のオペレーティング システムで実行できる人気の Web サーバーであり、「ユーザー名 + パスワード」認(rèn)証の問題を十分に解決できます。 Apache ユーザー認(rèn)証に必要なユーザー名とパスワードは 2 つの異なる方法で保存されます。1 つはテキスト ファイルで、もう 1 つは MSQL、Oracle、MySQL などのデータベースです。 LinuxのApacheを例に、これら2つのストレージ方式それぞれのユーザー認(rèn)証機(jī)能の実裝方法を紹介するとともに、WindowsのApacheユーザー認(rèn)証についても簡(jiǎn)単に説明します。

テキスト ファイル ストレージを使用する

この認(rèn)証方法の基本的な考え方は、Apache が認(rèn)証機(jī)能を開始した後、アクセスを制限する必要があるディレクトリに .htaccess という名前のファイルを作成し、認(rèn)証設(shè)定コマンドを指定することができます。 。ユーザーがこのディレクトリ內(nèi)のファイルに初めてアクセスすると、ブラウザーはユーザーの身元を確認(rèn)するためにユーザー名とパスワードの入力を求めるダイアログ ボックスを表示します。正規(guī)のユーザーの場(chǎng)合は、アクセスしたページのコンテンツが表示されます。その後、アクセスしたディレクトリ內(nèi)のすべてのページに対して、ブラウザーがユーザー名とパスワードを自動(dòng)的に送信するため、再入力する必要はありません。ブラウザが閉じられています。実裝の具體的な手順は次のとおりです:

Apache 1.3.12 がコンパイルされ、/usr/local/apache ディレクトリにインストールされていると仮定して、スーパー ユーザー root として Linux に入ります。デフォルトでは、Apache のコンパイル時(shí)に mod_auth モジュールが自動(dòng)的に追加されます。このモジュールを使用すると、テキスト ファイルを保存方法として使用する「ユーザー名 + パスワード」認(rèn)証機(jī)能を?qū)g裝できます。

1. Apacheの設(shè)定ファイル/usr/local/apache/conf/httpd.confを変更し、認(rèn)証リソースが配置されているディレクトリの設(shè)定コマンドを設(shè)定します。次の例は、/usr/local/apache/htdocs/members ディレクトリの構(gòu)成です。



Options Indexes FollowSymLinks

allowoverride authconfig

order allowed,deny

allow from all



このうち、allowoverride authconfig行は、/usr/local/apache/htdocs/ members ディレクトリ內(nèi)のファイルに対してユーザー認(rèn)証が許可されていることを示しています。

2. アクセス制限付きディレクトリ /usr/local/apache/htdocs/members に、次の內(nèi)容のファイル .htaccess を作成します:

AuthName "Member Area"

AuthType Basic

AuthUserFile/usr/local/apache /members.txt

require valid-user

説明: ファイル .htaccess でよく使用される設(shè)定コマンドは次のとおりです:

1) AuthName コマンド: 認(rèn)証ゾーン名を指定します。ゾーン名は、認(rèn)証を求めるダイアログ ボックスに表示され、ユーザーに表示されます (添付の図を參照)。

2) AuthType コマンド: 認(rèn)証タイプを指定します。 HTTP 1.0 では、認(rèn)証タイプは Basic の 1 つだけです。 HTTP1.1 には、MD5 などのいくつかの認(rèn)証タイプがあります。

3) AuthUserFile コマンド: ユーザー名とパスワードを含むテキスト ファイルを 1 行に 1 組指定します。

4) AuthGroupFile コマンド: ユーザーグループのリストとこれらのグループのメンバーのリストを含むテキストファイルを指定します。グループのメンバーは次のようにスペースで區(qū)切られます:

マネージャ:user1 user2

5) require コマンド: どのユーザーまたはグループにアクセスを許可できるかを指定します。例:

require user user1 user2 (user1 と user2 のみがアクセス可能)

requiregroupsmanagers (グループマネージャーのメンバーのみがアクセス可能)

require valid-user (AuthUserFile で指定されたファイル內(nèi)の任意のユーザーがアクセス可能)

3. Apache に付屬のプログラム htpasswd を使用して、ユーザー名とパスワードを含むテキスト ファイル /usr/local/apache/members.txt を生成します。各行の形式は「ユーザー名:パスワード」です。

#cd /usr/local/apache/bin

#htpasswd -bc ../members.txt user1 1234

#htpasswd -b ../members.txt user2 5678

テキストファイル members.txt には次の 2 つが含まれていますユーザー: user1、パスワードは 1234; user2、パスワードは 5678。ユーザーによるダウンロードを避けるため、このテキスト ファイルを Web ドキュメントのディレクトリ ツリーに保存しないでください。

htpasswd プログラムのヘルプについては、htpasswd -h を?qū)g行してください。

ユーザー數(shù)が比較的少ない場(chǎng)合、この方法はユーザー認(rèn)証に便利で手間がかからず、メンテナンス作業(yè)も簡(jiǎn)単です。しかし、ユーザー數(shù)が數(shù)萬人、さらには數(shù)十萬人になると、ユーザーを見つけるのにある程度の時(shí)間がかかり、サーバーの効率が低下します。この場(chǎng)合、データベース方式を使用する必要があります。

データベースストレージの使用

現(xiàn)在、Apache、PHP4、および MySQL は、Linux で Web サイトを構(gòu)築するための最良のパートナーです。これら 3 つのソフトウェアはすべてフリー ソフトウェアです。この 3 つを組み合わせて、PHP4 と MySQL を HTTP プロトコル経由で使用して、Apache のユーザー認(rèn)証機(jī)能を?qū)g裝します。

ユーザー認(rèn)証はPHP4をApacheモジュールとして実行する場(chǎng)合のみ行えます。このため、Apache をコンパイルする場(chǎng)合は、PHP4 モジュールを追加して一緒にコンパイルする必要があります。 Apache のモジュールとして PHP4 を使用することを想定し、Apache を /usr/local/apache ディレクトリにコンパイルしてインストールし、MySQL を /usr/local/mysql ディレクトリにコンパイルしてインストールします。次に、次の手順に進(jìn)みます:

1. MySQL でデータベース メンバーを作成し、その中に正當(dāng)なユーザーのユーザー名とパスワードを保存するテーブル users を作成します。

1) vi コマンドを使用して、/tmp ディレクトリに SQL スクリプト ファイル auth.sql を作成します。內(nèi)容は、

メンバーが存在する場(chǎng)合はデータベースを削除する;

データベース メンバーを作成する;

メンバーを使用する;

テーブルを作成するです。 users (

ユーザー名 char(20) not null,

パスワード char(20) not null,

);

insertsintosusersvalues("user1",password("1234"));

insertsintosusersvalues("user2 ",password( "5678"));

2) MySQLクライアントプログラムmysqlを起動(dòng)し、上記SQLスクリプトファイルauth.sqlのコマンドを?qū)g行し、usersテーブルに2つのユーザーレコードを追加します。

#mysql -u root -pmypwd</tmp/auth.sql

2. PHPスクリプトヘッダーファイルauth.incを書きます プログラム內(nèi)容は、


functionauthenticate() {

Header ( 'WWW-authenticate: Basic realm="メンバーエリア"');

Header('HTTP/1.0 401 Unauthorized');

echo "正しいユーザー名とパスワードを入力する必要があります。 ";

exit;

}

function CheckUser(, ) {

if ( == "" || == "") return 0;

= "SELECT username,password FROM usersswheresusername='' andpassword=password('')";

= mysql_connect('localhost', 'root', 'mypwd');

mysql_select_db('member',);

= mysql_query(, );

= mysql_num_rows();

if (>0) {

return 1; //有効なログイン

} else {

return 0; //無効なログイン

}

}

?>

関數(shù)Authenticate('WWW)を使用する-authenticate: Basic realm="Member Area"') は、ブラウザに認(rèn)証要求メッセージを送信し、ブラウザにユーザー名/パスワードのダイアログ ボックスをポップアップさせます。ユーザーがユーザー名とパスワードを入力すると、この PHP スクリプトを含む URL が自動(dòng)的に再度呼び出され、ユーザー名、パスワード、認(rèn)証タイプが PHP プログラムの 3 つの特殊変數(shù)に保存されます。これら 3 つの変數(shù)値を使用して、ユーザーが正當(dāng)であるかどうかを判斷します。 Header() 関數(shù)では、basic は基本認(rèn)証タイプを表し、realm の値は認(rèn)証ゾーン名を表します。

Function Header('HTTP/1.0 401 Unauthorized') により、ブラウザ ユーザーは間違ったユーザー名またはパスワードを連続して複數(shù)回入力すると、HTTP 401 エラーが発生します。

関數(shù)CheckUser()は、ブラウザユーザーが送信したユーザー名とパスワードがMySQLデータベースのものと同じかどうかを判定するために使用され、同じであれば1を返し、そうでなければ0を返します。 mysql_connect('localhost', 'root', 'mypwd') のデータベース ユーザー名 root とパスワード mypwd は、獨(dú)自の MySQL 設(shè)定に従って変更する必要があります。

3. アクセスを制限する必要がある各 PHP スクリプトの先頭に、次のプログラム セグメントを追加します:


require('auth.inc');

if (CheckUser(,)==0) {

authenticate();

} else {

echo "これは正規(guī)のユーザーがアクセスしたいWebページです。" //この行を正規(guī)のユーザーへのWebページ出力に変更します

}

?>

;正規(guī)のユーザーによって表示される Web ページのコンテンツは、上記のプログラム セグメントの 1 行を置き換えて else 句に配置されます。たとえば、ユーザーが PHP スクリプト プログラムにアクセスするときは、ユーザーの身元を確認(rèn)するためにユーザー名とパスワードを入力する必要があります。

Windows版Apacheユーザー認(rèn)証

1. テキストファイルを使用してユーザー名とパスワードを保存する場(chǎng)合、方法は以前と同じですが、パスを表すディレクトリ名の間、およびディレクトリ名の間にスラッシュを使用する必要があることに注意してくださいファイル名はバックスラッシュ "" ではなく /" になります。

2. MySQLデータベースを使用してユーザー名とパスワードを保存する場(chǎng)合は、まず以下の方法に従ってPHP 4.0.3をApacheモジュールとして実行し、その後上記の「ユーザーを保存するデータベースを使用したユーザー認(rèn)証」の方法に従って完了させます。名前とパスワード」。

1) Windows バージョンの Apache 1.3.12、PHP 4.0.3、MySQL 3.2.32 をダウンロードし、3 つのソフトウェアをそれぞれ C: pache、C: PHP4、および C: mysql ディレクトリにインストールします。

2) C:PHP4SAPI ディレクトリには、一般的に使用される Web サーバー用のいくつかの PHP モジュール ファイルが含まれています。php4apache.dll を Apache の modules サブディレクトリ (C: pachemodules) にコピーします。

3) Apache の設(shè)定ファイル C:pache nfhttpd.conf を変更し、次の行を追加します:

LoadModule php4_module modules/ php4apache.dll

AddType application/x-httpd-php .php3

AddType application/x-httpd -php- source .phps

AddType application/x-httpd-php .php

最初の行は、ユーザー認(rèn)証ができるようにPHP4をApacheモジュールとして実行するもので、最後の3行はPHPスクリプトプログラムの拡張子を定義しています。

4) autoexec.batファイルのPATHコマンドにPHP4があるパス「C:PHP4」を追加し、コンピュータを再起動(dòng)します。


私のテストの後、Apache のバージョン 2.0 は動(dòng)作しません



このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

c c Jul 15, 2025 am 01:30 AM

STD :: Chronoは、現(xiàn)在の時(shí)間の取得、実行時(shí)間の測(cè)定、操作時(shí)點(diǎn)と期間の測(cè)定、分析時(shí)間のフォーマットなど、時(shí)間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時(shí)間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時(shí)間を測(cè)定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時(shí)點(diǎn)(Time_Point)と期間(期間)は相互運(yùn)用可能ですが、ユニットの互換性と時(shí)計(jì)エポック(エポック)に注意を払う必要があります

PHPは環(huán)境変數(shù)をどのように処理しますか? PHPは環(huán)境変數(shù)をどのように処理しますか? Jul 14, 2025 am 03:01 AM

toaccessenvironmentvariablesinphp、usegetenv()または$ _envsuperglobal.1.getenv( 'var_name')retievessaspecificvariable.2。$ _ en v ['var_name'] AccessESSESESSVARIABLESIFVARIABLES_ORDERINPHP.INIINCLUDES "E" .SETVARIABLESVIACLIWITHVAR = ValuePhpscript.php、inapach

MySQL Common Table Expression(CTE)の例 MySQL Common Table Expression(CTE)の例 Jul 14, 2025 am 02:28 AM

CTEは、複雑なクエリを簡(jiǎn)素化するために使用されるMySQLの一時(shí)的な結(jié)果です。現(xiàn)在のクエリで複數(shù)回參照して、コードの読みやすさとメンテナンスを改善することができます。たとえば、注文テーブルで各ユーザーの最新の注文を探している場(chǎng)合、最初に各ユーザーの最新の注文日をCTEから取得し、元のテーブルに関連付けて完全なレコードを取得できます。サブQueriesと比較して、CTE構(gòu)造はより明確で、ロジックはデバッグしやすくなります。使用のヒントには、明示的なエイリアス、複數(shù)のCTEの連結(jié)、再帰CTEを使用したツリーデータの処理が含まれます。 CTEをマスターすると、SQLがよりエレガントで効率的になります。

コメントする理由:PHPガイド コメントする理由:PHPガイド Jul 15, 2025 am 02:48 AM

phphastthreecommentStyles://,#forsingle-lineand/.../formulti-line.usecommentstoexplainwhycodeexists、whatittodo/fixmeitemsanddisablecodecodemcodecodecodecodemprianydedebugging.avoidoversingingsingingsingingsingingsingingsingingsingingsimmentingsimmentingsimplelatic.decratecentecentic.

PHPは、句で作成されました PHPは、句で作成されました Jul 14, 2025 am 02:56 AM

PHP前処理ステートメントを使用して句でクエリを?qū)g行する場(chǎng)合、1。配列の長さに応じてプレースホルダーを動(dòng)的に生成します。 2。PDOを使用する場(chǎng)合、配列を直接渡し、Array_Valuesを使用して連続インデックスを確保することができます。 3. mysqliを使用する場(chǎng)合、タイプの文字列を構(gòu)築し、パラメーターを結(jié)合する必要があります。配列とバージョンの互換性を拡大する方法に注意してください。 4. SQLのスプライシング、空の配列の処理、およびデータ型が一致するようにします。特定の方法は次のとおりです。最初にinprodeとarray_fillを使用してプレースホルダーを生成し、次に拡張された特性に従ってパラメーターをバインドしてクエリで安全に実行します。

PHPの未定義のインデックスエラーを回避する方法 PHPの未定義のインデックスエラーを回避する方法 Jul 14, 2025 am 02:51 AM

「未定義のインデックス」エラーを回避するための3つの重要な方法があります。まず、ISSET()を使用して、配列キーが存在するかどうかを確認(rèn)し、ほとんどの一般的なシナリオに適した値がnullでないことを確認(rèn)します。第二に、array_key_exists()を使用して、キーが存在するかどうかのみを決定します。キーが存在するかどうかは、キーが存在せず、値がnullになる狀況に適しています。最後に、空のマージオペレーターを使用しますか? (PHP7)最新のPHPプロジェクトに推奨されるデフォルト値を簡(jiǎn)潔に設(shè)定し、フォームフィールド名の綴りに注意を払って、Extract()を慎重に使用し、リスクをさらに回避するために通過する前に配列が空にないことを確認(rèn)します。

MySQLテーブルの列の適切なデータ型を選択します MySQLテーブルの列の適切なデータ型を選択します Jul 15, 2025 am 02:25 AM

settingupmysqltablesの場(chǎng)合、therightdatatypesiscialforefficanity andscalabilityを選択します

PHP準(zhǔn)備されたステートメントが結(jié)果を得ます PHP準(zhǔn)備されたステートメントが結(jié)果を得ます Jul 14, 2025 am 02:12 AM

PHPのデータベースクエリを取得するために前処理ステートメントを使用してPHPの結(jié)果は拡張から変化します。 1。mysqliを使用する場(chǎng)合、get_result()およびfetch_assoc()を介して連想配列を取得できます。これは、最新の環(huán)境に適しています。 2. bind_result()を使用して変數(shù)をバインドすることもできます。これは、フィールドや固定構(gòu)造が少ない狀況に適しています。これは適切な互換性ですが、多くのフィールドがある場(chǎng)合は多くのフィールドがあります。 3. PDOを使用する場(chǎng)合、Fetch(PDO :: FETCH_ASSOC)を介して連想配列を取得するか、Fetchall()を使用してすべてのデータを一度に取得できます。さらに、パラメータータイプマッチング、execute()の実行、リソースのタイムリーなリリース、およびエラーレポートを有効にすることに注意を払う必要があります。

See all articles