用Apache與MySQL整合實(shí)現(xiàn)基本身份認(rèn)證_PHP教程
推薦:用 PHP 使 Web 數(shù)據(jù)分析進(jìn)入更高境界設(shè)計(jì)您的數(shù)據(jù)分析,做比簡(jiǎn)單原始計(jì)數(shù)更多的事。 對(duì) Web 數(shù)據(jù)進(jìn)行有效和多層次的分析是許多面向 Web 企業(yè)能夠生存的關(guān)鍵因素,數(shù)據(jù)分析檢驗(yàn)的設(shè)計(jì)(和決策)通常是系統(tǒng)管理員和內(nèi)部應(yīng)用程序設(shè)
Apache來(lái)實(shí)現(xiàn)基本的用戶(hù)身份認(rèn)證有很多種方式,比如最常見(jiàn)的txt文本和DBM格式,但在負(fù)載很重的server上-這些都不是理想的方法,文本的形式是基于平面的,性能很差而且也不安全;DBM好些但在千或萬(wàn)級(jí)用戶(hù)時(shí)還是力不從心,于是用database做后臺(tái)存儲(chǔ)則是很好的方法-比平面搜索更有效而且安全,用戶(hù)口令以DES加密形式存儲(chǔ)在數(shù)據(jù)庫(kù)的表中。
這種實(shí)現(xiàn)要?dú)w功于Apache本身出色的模塊化結(jié)構(gòu)--以及開(kāi)放的DSO方式,可以使開(kāi)發(fā)人員完成大量的第三方模塊,并擴(kuò)充Apache的功能。我在本文中只寫(xiě)了用Mysql做后臺(tái)存儲(chǔ)--此外還可用Postgresql,Oracle等來(lái)完成,原理一樣-都是用各自的模塊。
讓我們開(kāi)始吧--先去modules.apache.org找到mod_auth_mysql--會(huì)有兩個(gè)我們要用DSO那個(gè)-事實(shí)上直接去ftp://ftp.kcilink.com/pub/下一個(gè)mod_auth_mysql.c.gz就行-好-把它解開(kāi)是一個(gè)mod_auth_mysql.c-好-我們用apxs來(lái)生成DSO模塊(前題是你用DSO模式編譯的Apache)--apxs -c -i -a -L/usr/local/lib/mysql -lmysqlclient >-lm mod_auth_mysql.c即可--這里注意一定要這么寫(xiě)---L/usr/local/lib/mysql是mysql的客戶(hù)庫(kù)位置,我假定mysql是用的缺省安裝)---如果不加在起動(dòng)Apache時(shí)會(huì)報(bào)錯(cuò)-無(wú)法裝載此模塊。
好了看看httpd.conf中應(yīng)該有LoadModule mysql_auth_module libexec/mod_auth_mysql.so和AddModule mod_auth_mysql.c這兩句了,重起Apache也不應(yīng)該有問(wèn)題。
然后我們進(jìn)入mysql,mysql>create database auth;
| 以下為引用的內(nèi)容: mysql>use auth; mysql> create table mysql_auth ( -> user_name char(20) not null, -> user_passwd char(25), -> groups char(25), -> primary key (username) ); |
注意字段名一定是user_name和user_passwd這個(gè)。再插入幾條記錄:
| 以下為引用的內(nèi)容:mysql> insert into mysql_auth values ('xingfei2',encrypt("abcde"),'xingfei'); Query OK, 1 row affected (0.00 sec) mysql> insert into mysql_auth values ('xingfei',encrypt("abcde"),'xingfei'); Query OK, 1 row affected (0.00 sec) |
這里abcde是口令-用encrypt函數(shù)來(lái)進(jìn)行加密,用的是DES算法-這是和unix的password等同的算法-而不是mysql本身加密的password()函數(shù)。
最后在要保護(hù)的目錄里建一個(gè).htaccess(別忘了把AllowOverride all打開(kāi))內(nèi)容如下:
| 以下為引用的內(nèi)容: authname "xingfei" authtype basic AuthMySQLHost localhost ---mysql主機(jī)名 authmysqluser root ---mysql用戶(hù) authmysqlpassword abc ---mysql用戶(hù)的口令 AuthMySQLDB auth ---用戶(hù)所用的庫(kù)-也就是我們建的庫(kù) AuthMySQLUserTable mysql_auth ---所用的表 AuthMySQLGroupField groups ---用戶(hù)組的字段名 require group xingfei require user xingfei |
可以把用戶(hù)都放在一個(gè)組里-只要是這個(gè)組里的用戶(hù)即可通過(guò)認(rèn)證,也可require單個(gè)或多個(gè)用戶(hù)。
分享:vim下高亮顯示php代碼vim是一款跨平臺(tái)編輯器,可以在linux下使用,也可以在windows下使用官方網(wǎng)站www.vim.org 高亮顯示php代碼 進(jìn)入vim后,在普通模式下輸入如下命令,開(kāi)啟php代碼高亮顯示 :syntax enable :
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶(hù)端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- PHP教程之一個(gè)頁(yè)面執(zhí)行時(shí)間類(lèi)
- Extjs4 Treegrid 使用心得分享(經(jīng)驗(yàn)篇)
- PHP程序加速探索之服務(wù)器負(fù)載測(cè)試
- 談php設(shè)計(jì)模式介紹——偽對(duì)象模式
- 取得當(dāng)前插入數(shù)據(jù)庫(kù)中記錄的id值
- 如何避免頁(yè)面刷新數(shù)據(jù)重復(fù)寫(xiě)入數(shù)據(jù)庫(kù)
- php獲取數(shù)組中重復(fù)數(shù)據(jù)的兩種方法
- 關(guān)于php循環(huán)跳出的問(wèn)題
- PHP批量采集下載美女圖片的實(shí)現(xiàn)代碼
- 關(guān)于PHP在linux下面獲取GOOGLE的PR值
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-用Apache與MySQL整合實(shí)現(xiàn)基本身份認(rèn)證
。