亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Rumah php教程 php手冊 Apache服務(wù)器的用戶認(rèn)證 (轉(zhuǎn))

Apache服務(wù)器的用戶認(rèn)證 (轉(zhuǎn))

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

apache|服務(wù)器

經(jīng)常上網(wǎng)的讀者會遇到這種情況:訪問一些網(wǎng)站的某些資源時,瀏覽器彈出一個對話框,要求輸入用戶名和密碼來獲取對資源的訪問。這就是用戶認(rèn)證的一種技術(shù)。用戶認(rèn)證是保護(hù)網(wǎng)絡(luò)系統(tǒng)資源的第一道防線,它控制著所有登錄并檢查訪問用戶的合法性,其目標(biāo)是僅讓合法用戶以合法的權(quán)限訪問網(wǎng)絡(luò)系統(tǒng)的資源。基本的用戶認(rèn)證技術(shù)是“用戶名+密碼”。


  Apache是目前流行的Web服務(wù)器,可運(yùn)行在Linux、Unix、Windows等操作系統(tǒng)下,它可以很好地解決“用戶名+密碼”的認(rèn)證問題。Apache用戶認(rèn)證所需要的用戶名和密碼有兩種不同的存貯方式:一種是文本文件;另一種是MSQL、Oracle、MySQL等數(shù)據(jù)庫。下面以Linux的Apache為例,就這兩種存貯方式,分別介紹如何實(shí)現(xiàn)用戶認(rèn)證功能,同時對Windows的Apache用戶認(rèn)證作簡要的說明。

  采用文本文件存儲

  這種認(rèn)證方式的基本思想是:Apache啟動認(rèn)證功能后,就可以在需要限制訪問的目錄下建立一個名為.htaccess的文件,指定認(rèn)證的配置命令。當(dāng)用戶第一次訪問該目錄的文件時,瀏覽器會顯示一個對話框,要求輸入用戶名和密碼,進(jìn)行用戶身份的確認(rèn)。若是合法用戶,則顯示所訪問的頁面內(nèi)容,此后訪問該目錄的每個頁面,瀏覽器自動送出用戶名和密碼,不用再輸入了,直到關(guān)閉瀏覽器為止。以下是實(shí)現(xiàn)的具體步驟:

  以超級用戶root進(jìn)入Linux,假設(shè)Apache 1.3.12已經(jīng)編譯、安裝到了/usr/local/apache目錄中。缺省情況下,編譯Apache時自動加入mod_auth模塊,利用此模塊可以實(shí)現(xiàn)“用戶名+密碼”以文本文件為存儲方式的認(rèn)證功能。

  1.修改Apache的配置文件/usr/local/apache/conf/httpd.conf,對認(rèn)證資源所在的目錄設(shè)定配置命令。下例是對/usr/local/apache/htdocs/members目錄的配置:

  <Directory /usr/local/apache/htdocs /members>

  Options Indexes FollowSymLinks

  allowoverride authconfig

  order allow,deny

  allow from all

 ?。?Directory>

  其中,allowoverride authconfig一行表示允許對/usr/local/apache/htdocs/ members目錄下的文件進(jìn)行用戶認(rèn)證。

  2.在限制訪問的目錄/usr/local/apache/htdocs/members下建立一個文件.htaccess,其內(nèi)容如下:

  AuthName "會員區(qū)"

  AuthType basic

  AuthUserFile/usr/local/apache/members.txt

  require valid-user

  說明:文件.htaccess中常用的配置命令有以下幾個:

  1) AuthName命令:指定認(rèn)證區(qū)域名稱。區(qū)域名稱是在提示要求認(rèn)證的對話框中顯示給用戶的(見附圖)。

  2)AuthType命令:指定認(rèn)證類型。在HTTP1.0中,只有一種認(rèn)證類型:basic。在HTTP1.1中有幾種認(rèn)證類型,如:MD5。

  3) AuthUserFile命令:指定一個包含用戶名和密碼的文本文件,每行一對。

  4) AuthGroupFile命令:指定包含用戶組清單和這些組的成員清單的文本文件。組的成員之間用空格分開,如:

  managers:user1 user2

  5) require命令:指定哪些用戶或組才能被授權(quán)訪問。如:

  require user user1 user2(只有用戶user1和user2可以訪問)

  requiresgroupsmanagers (只有組managers中成員可以訪問)

  require valid-user (在AuthUserFile指定的文件中任何用戶都可以訪問)

  3.利用Apache附帶的程序htpasswd,生成包含用戶名和密碼的文本文件:/usr/local/apache/members.txt,每行內(nèi)容格式為“用戶名:密碼”。

  #cd /usr/local/apache/bin

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

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

  文本文件members.txt含有兩個用戶:user1,口令為1234;user2,口令為5678。注意,不要將此文本文件存放在Web文檔的目錄樹中,以免被用戶下載。

  欲了解htpasswd程序的幫助,請執(zhí)行htpasswd -h。

  當(dāng)用戶數(shù)量比較少時,這種方法對用戶的認(rèn)證是方便、省事的,維護(hù)工作也簡單。但是在用戶數(shù)量有數(shù)萬人,甚至數(shù)十萬人時,會在查找用戶上花掉一定時間,從而降低服務(wù)器的效率。這種情形,應(yīng)采用數(shù)據(jù)庫方式。

  采用數(shù)據(jù)庫存儲

  目前,Apache、PHP4、MySQL三者是Linux下構(gòu)建Web網(wǎng)站的最佳搭檔,這三個軟件都是免費(fèi)軟件。將三者結(jié)合起來,通過HTTP協(xié)議,利用PHP4和MySQL,實(shí)現(xiàn)Apache的用戶認(rèn)證功能。

  只有在PHP4以Apache的模塊方式來運(yùn)行的時候才能進(jìn)行用戶認(rèn)證。為此,在編譯Apache時需要加入PHP4模塊一起編譯。假設(shè)PHP4作為Apache的模塊,編譯、安裝Apache到/usr/local/apache目錄,編譯、安裝MySQL到/usr/local/mysql目錄。然后進(jìn)行下面的步驟:

  1.在MySQL中建立一個數(shù)據(jù)庫member,在其中建立一個表users,用來存放合法用戶的用戶名和密碼。

  1)用vi命令在/tmp目錄建立一個SQL腳本文件auth.sql,內(nèi)容為:

  drop database if exists member;

  create database member;

  use member;

  create table users (

  username char(20) not null,

  password char(20) not null,

  );

  insertsintosusers values("user1",password("1234"));

  insertsintosusers values("user2",password("5678"));

  2)啟動MySQL客戶程序mysql,執(zhí)行上述SQL腳本文件auth.sql的命令,在表users中增加兩個用戶的記錄。

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

  2.編寫一個PHP腳本頭文件auth.inc,程序內(nèi)容為:

 ?。?php

  function authenticate() {

  Header('WWW-authenticate: basic realm="會員區(qū)"');

  Header('HTTP/1.0 401 Unauthorized');

  echo "你必須輸入正確的用戶名和口令。 ";

  exit;

  }

  function CheckUser(, ) {

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

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

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

  mysql_select_db('member',);

   = mysql_query(, );

  =mysql_num_rows();

  mysql_close();

  if (>0) {

  return 1; //有效登錄

  } else {

  return 0; //無效登錄

  }

  }

  ?>

  函數(shù)Authenticate()的作用是利用函數(shù)Header('WWW-authenticate: basic realm="會員區(qū)"'),向?yàn)g覽器發(fā)送一個認(rèn)證請求消息,使瀏覽器彈出一個用戶名/密碼的對話框。當(dāng)用戶輸入用戶名和密碼后,包含此PHP腳本的URL將自動地被再次調(diào)用,將用戶名、密碼、認(rèn)證類型分別存放到PHP4的三個特殊變量:、、,在PHP程序中可根據(jù)這三個變量值來判斷是否合法用戶。Header()函數(shù)中,basic表示基本認(rèn)證類型,realm的值表示認(rèn)證區(qū)域名稱。

  函數(shù)Header('HTTP/1.0 401 Unauthorized')使瀏覽器用戶在連續(xù)多次輸入錯誤的用戶名或密碼時接收到HTTP 401錯誤。

  函數(shù)CheckUser()用來判斷瀏覽器用戶發(fā)送來的用戶名、密碼是否與MySQL數(shù)據(jù)庫的相同,若相同則返回1,否則返回0。其中mysql_connect('localhost', 'root', 'mypwd')的數(shù)據(jù)庫用戶名root和密碼mypwd,應(yīng)根據(jù)自己的MySQL設(shè)置而改變。

  3.在需要限制訪問的每個PHP腳本程序開頭增加下列程序段:

 ?。?php

  require('auth.inc');

  if (CheckUser(,)==0) {

  authenticate();

  } else {

  echo "這是合法用戶要訪問的網(wǎng)頁。"; //將此行改為向合法用戶輸出的網(wǎng)頁

  }

  ?>

  把需要向合法用戶顯示的網(wǎng)頁內(nèi)容放到else子句中,取代上述程序段的一行:

  echo "這是合法用戶要訪問的網(wǎng)頁。";

  這樣,當(dāng)用戶訪問該P(yáng)HP腳本程序時,需要輸入用戶名和密碼來確認(rèn)用戶的身份。

  Windows的Apache用戶認(rèn)證

  1.采用文本文件存放用戶名和密碼時,其方法同前,但需要注意的是表示路徑的目錄名之間、目錄名與文件名之間一律用斜線“/”分開,而不是反斜線“”。

  2.采用MySQL數(shù)據(jù)庫存放用戶名和密碼時,首先按下列方法將PHP 4.0.3作為Apache的模塊來運(yùn)行,然后按上述“采用數(shù)據(jù)庫存儲用戶名和密碼的用戶認(rèn)證”的方法完成。

  1)下載Windows版的Apache 1.3.12、PHP 4.0.3、MySQL 3.2.32,將三個軟件分別解壓、安裝到C:pache、C:PHP4、C:mysql目錄。

  2) C:PHP4SAPI目錄有幾個常用Web服務(wù)器的PHP模塊文件,將其中php4apache.dll拷貝到Apache的modules子目錄(C:pachemodules)。

  3)修改Apache的配置文件C:pachenfhttpd.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

  第一行使PHP4以Apache的模塊方式運(yùn)行,這樣才能進(jìn)行用戶認(rèn)證,后三行定義PHP腳本程序的擴(kuò)展名。

  4)在autoexec.bat文件的PATH命令中增加PHP4所在路徑“C:PHP4”,重新啟動電腦。


經(jīng)我測試,2.0版本的apache不成



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Beyond the Lamp Stack: Peranan PHP dalam Senibina Enterprise Moden Beyond the Lamp Stack: Peranan PHP dalam Senibina Enterprise Moden Jul 27, 2025 am 04:31 AM

Phpisstillrelevantinmodernenterpriseenvironments.1.modernphp (7.xand8.x) Menawarkan Perpaduan Perlengkapan, ketegangan, jitcompilation, danmodernsyntax, makeitsuatableforlarge-scaleapplications.2.phpintegratefective

Penalaan Prestasi Pemetaan Objek (ORM) di PHP Penalaan Prestasi Pemetaan Objek (ORM) di PHP Jul 29, 2025 am 05:00 AM

Elakkan masalah pertanyaan n 1, mengurangkan bilangan pertanyaan pangkalan data dengan memuatkan data yang berkaitan terlebih dahulu; 2. Pilih hanya medan yang diperlukan untuk mengelakkan memuat entiti lengkap untuk menjimatkan memori dan jalur lebar; 3. Gunakan strategi cache yang munasabah, seperti cache sekunder doktrin atau hasil pertanyaan frekuensi tinggi Cache; 4. Mengoptimumkan kitaran hayat entiti dan panggilan jelas () secara teratur untuk membebaskan memori untuk mengelakkan limpahan memori; 5. Memastikan indeks pangkalan data wujud dan menganalisis penyata SQL yang dihasilkan untuk mengelakkan pertanyaan yang tidak cekap; 6. Lumpuhkan penjejakan perubahan automatik dalam senario di mana perubahan tidak diperlukan, dan gunakan array atau mod ringan untuk meningkatkan prestasi. Penggunaan ORM yang betul memerlukan menggabungkan pemantauan SQL, caching, pemprosesan batch dan pengoptimuman yang sesuai untuk memastikan prestasi aplikasi sambil mengekalkan kecekapan pembangunan.

Membina microservices yang berdaya tahan dengan PHP dan Rabbitmq Membina microservices yang berdaya tahan dengan PHP dan Rabbitmq Jul 27, 2025 am 04:32 AM

Untuk membina microservice PHP yang fleksibel, anda perlu menggunakan RabbitMQ untuk mencapai komunikasi asynchronous, 1. Decouple perkhidmatan melalui beratur mesej untuk mengelakkan kegagalan cascade; 2. Konfigurasi beratur berterusan, mesej berterusan, pengesahan pelepasan dan ACK manual untuk memastikan kebolehpercayaan; 3. Menggunakan Backoff Exponential Backoff, TTL dan Kegagalan Pemprosesan Keselamatan Gilir Surat Dead; 4. Gunakan alat seperti penyelia untuk melindungi proses pengguna dan membolehkan mekanisme degupan jantung untuk memastikan kesihatan perkhidmatan; dan akhirnya menyedari keupayaan sistem untuk terus beroperasi dalam kegagalan.

Mewujudkan persekitaran docker siap pengeluaran untuk php Mewujudkan persekitaran docker siap pengeluaran untuk php Jul 27, 2025 am 04:32 AM

Menggunakan imej asas PHP yang betul dan mengkonfigurasi persekitaran docker yang dioptimumkan prestasi yang selamat adalah kunci untuk mencapai pengeluaran siap. 1. Pilih PHP: 8.3-fpm-alpine sebagai imej asas untuk mengurangkan permukaan serangan dan meningkatkan prestasi; 2. Lumpuhkan fungsi berbahaya melalui php.ini adat, matikan paparan ralat, dan aktifkan Opcache dan JIT untuk meningkatkan keselamatan dan prestasi; 3. Gunakan nginx sebagai proksi terbalik untuk menyekat akses kepada fail sensitif dan memajukan permintaan PHP dengan betul kepada PHP-FPM; 4. Gunakan imej pengoptimuman pelbagai peringkat untuk menghapuskan kebergantungan pembangunan, dan menubuhkan pengguna bukan akar untuk menjalankan bekas; 5. Supervisord pilihan untuk menguruskan pelbagai proses seperti Cron; 6. Sahkan bahawa tiada kebocoran maklumat sensitif sebelum penggunaan

Menyelam jauh ke dalam mekanisme pengumpulan sampah dalaman PHP Menyelam jauh ke dalam mekanisme pengumpulan sampah dalaman PHP Jul 28, 2025 am 04:44 AM

Mekanisme pengumpulan sampah PHP didasarkan pada penghitungan rujukan, tetapi rujukan bulat perlu diproses oleh pemungut sampah pekeliling berkala; 1. Rujukan kiraan rujukan segera memori apabila tidak ada rujukan kepada pembolehubah; 2. Rujukan rujukan menyebabkan memori tidak dapat dikeluarkan secara automatik, dan ia bergantung kepada GC untuk mengesan dan membersihkannya; 3. GC dicetuskan apabila zval "akar yang mungkin" mencapai ambang atau panggilan secara manual gc_collect_cycles (); 4. Aplikasi PHP jangka panjang harus memantau gc_status () dan hubungi gc_collect_cycles () dalam masa untuk mengelakkan kebocoran ingatan; 5. Amalan terbaik termasuk mengelakkan rujukan bulat, menggunakan gc_disable () untuk mengoptimumkan bidang utama prestasi, dan objek dereference melalui kaedah CLEAR () ORM.

Membina objek yang tidak berubah di PHP dengan sifat bacaan Membina objek yang tidak berubah di PHP dengan sifat bacaan Jul 30, 2025 am 05:40 AM

ReadonlypropertiesinPHP8.2canonlybeassignedonceintheconstructororatdeclarationandcannotbemodifiedafterward,enforcingimmutabilityatthelanguagelevel.2.Toachievedeepimmutability,wrapmutabletypeslikearraysinArrayObjectorusecustomimmutablecollectionssucha

Revolusi tanpa pelayan: Menggunakan aplikasi PHP berskala dengan Bref Revolusi tanpa pelayan: Menggunakan aplikasi PHP berskala dengan Bref Jul 28, 2025 am 04:39 AM

Bref membolehkan pemaju PHP membina aplikasi yang berskala dan kos efektif tanpa menguruskan pelayan. 1.Bref membawa PHP ke Awslambda dengan menyediakan lapisan runtime PHP yang dioptimumkan, menyokong Php8.3 dan versi lain, dan dengan lancar mengintegrasikan dengan rangka kerja seperti Laravel dan Symfony; 2. Langkah -langkah penempatan termasuk: memasang Bref menggunakan komposer, mengkonfigurasi serverless.yml untuk menentukan fungsi dan peristiwa, seperti titik akhir HTTP dan perintah artisan; 3. Jalankan perintah ServerlessDeploy untuk melengkapkan penggunaan, secara automatik mengkonfigurasi apigeway dan menjana URL akses; 4. Bagi sekatan Lambda, Bref menyediakan penyelesaian.

Python semak jika kunci wujud dalam contoh kamus Python semak jika kunci wujud dalam contoh kamus Jul 27, 2025 am 03:08 AM

Adalah disyorkan untuk menggunakan kata kunci untuk memeriksa sama ada kunci wujud dalam kamus, kerana ia adalah ringkas, cekap dan sangat mudah dibaca; 2. Ia tidak disyorkan untuk menggunakan kaedah GET () untuk menentukan sama ada kunci wujud, kerana ia akan salah apabila kunci wujud tetapi nilai tidak ada; 3. Anda boleh menggunakan kaedah kekunci (), tetapi ia berlebihan, kerana secara lalai untuk memeriksa kunci; 4. Apabila anda perlu mendapatkan nilai dan kunci yang dijangkakan biasanya wujud, anda boleh menggunakan cuba-kecuali untuk menangkap pengecualian KeyError. Kaedah yang paling disyorkan ialah menggunakan kata kunci, yang selamat dan cekap, dan tidak terjejas oleh nilai tiada, yang sesuai untuk kebanyakan senario.

See all articles