日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP+APACHE實(shí)現(xiàn)用戶論證的方法

瀏覽:151日期:2024-01-18 10:04:40
在專業(yè)的 Web 站臺(tái)上,常常會(huì)需要使用者的帳號(hào)及密碼,也就是身份確認(rèn)的動(dòng)作。早期的 NCSA httpd 伺服器并沒有提供這項(xiàng)使用者確認(rèn)的功能,Webmaster 只能用手工打造一個(gè)身份確認(rèn)的 CGI 程式。;;自 CERN httpd 之后的 Web 伺服器大部份都提供了使用者身份確認(rèn)的功能。僅管每套 Web 伺服器的設(shè)定都不太相同,但在設(shè)定上都大同小異。;;以下就是 Apache 伺服器上的使用者身份確認(rèn)的設(shè)定。;;<Directory /home/MyMember>;;AuthType Basic;;AuthName MyMember;;AuthUserFile /usr/local/MyMember.txt;;Options Includes ExecCGI;;<Limit GET POST>;;require valid-user;;</Limit>;;</Directory>;;在這個(gè)例子中,當(dāng)使用者在看 MyMember 目錄下所有的檔案,包括圖片檔案及其它各式檔案時(shí),都需要使用者的帳號(hào)密碼確認(rèn)。而使用者的帳號(hào)及密碼檔都存在于/usr/local/MyMember.txt 之中。;;這個(gè)帳號(hào)密碼檔 /usr/local/MyMember.txt 的樣子可能如下例。其中冒號(hào)前的字串是使用者帳號(hào),冒號(hào)之后的字串是經(jīng)過(guò)不可還原加密的密碼,編碼一般都是使用傳統(tǒng)的 DES 編碼,密碼的頭二個(gè)字是類似種子的字元 (salt),本例中都是 3P。每行代表一位使用者。當(dāng)然 Webmaster 要自行控制重覆帳號(hào)的情形。比較特殊是在 Win32 系統(tǒng)上架 Apache 的情形,冒號(hào)后的密碼不可加密,因?yàn)?Win32 沒有提供這方面的編碼;;API,因此使用者密碼以明碼的方式存在。;;john1234:3PWudBlJMiwro;;queenwan:3PFNVLNPN9W0M;;noname00:3PEsXaJx5pk7E;;wilson49:3PjoWb0EnaG22;;rootboot:3PIt0snI6.84E;;sun_moon:3PvymMeNOc.x.;;nobody38:3PbskPKwV94hw;;在 Apache 1.3.6 版上,可以用 ~apache/bin/htpasswd 來(lái)產(chǎn)生單筆的帳號(hào)及密碼,但對(duì)于需要大筆資料的商業(yè)站臺(tái),可能就需要自行寫程式來(lái)處理了。UNIX 上需要呼叫 crypt() 來(lái)處理編碼。;;在一切都設(shè)定好了之后,連線時(shí)就會(huì)在瀏覽器出現(xiàn)查核密碼的視窗,如上圖就是SEEDNet 的 MySEED 網(wǎng)站的使用者查核機(jī)制。在輸入了帳號(hào)及密碼后,瀏覽器會(huì)將它用BASE64 編碼后,傳到伺服器端。當(dāng)然 BASE64 只是編碼不是加密,因此在網(wǎng)路上這種傳輸?shù)陌踩匀匀徊桓撸€是有可能被中間的劊客截下,再將 BASE64 還原,這也是整個(gè)使用者認(rèn)證中最美中不足的地方,或許日后支援摘要認(rèn)證 (Digest) 及使用 MD5 編碼后,可以解決這種問(wèn)題。之后每一頁(yè)仍然需要帳號(hào)及密碼,只不過(guò)瀏覽器會(huì)幫你主動(dòng)送出,不用再輸入帳號(hào)密碼了。這方面瀏覽器會(huì)保留到被關(guān)閉為止,下次重執(zhí)行瀏覽器仍需輸入第一次。;;在使用者數(shù)量少時(shí),使用上述的方法輕松又省事。但是在使用者有數(shù)萬(wàn)人,甚至數(shù)十萬(wàn)人時(shí),會(huì)發(fā)生整個(gè)伺服器的效率都被搜尋帳號(hào)密碼下拖垮,可能讀取一頁(yè)需要數(shù)十秒到數(shù)分鐘。這種情形再使用伺服器提供的密碼查核機(jī)制就不太明智了。在Netscape Enterprise Server 上可能就可以使用 NSAPI 來(lái)開發(fā)自己的查核方式,在IIS 上也可以用 ISAPI 過(guò)濾器開發(fā)。寫 C/C++ 程式呼叫 NSAPI/ISAPI 總是很累,在PHP 上有了另外的選擇,這也是本節(jié)的主題。;;PHP 的 HTTP 相關(guān)函式庫(kù)提供了 header() 的函式。許多 Web 伺服器與客戶端的互動(dòng),都可以使用這個(gè)函式來(lái)變戲法。例如在某個(gè) PHP 頁(yè)面最開始處,也就是第一行或第二行,加入以下的程式,可以將使用者重導(dǎo)到作者的網(wǎng)頁(yè)。;;<?php;;header("Location: http://wilson.gs");;;exit;;;?>;;當(dāng)然,在上述程式之后的 HTML 文字或者是 PHP 程式都永遠(yuǎn)不會(huì)出現(xiàn)在使用者端了。;;同樣的道理,我們就用 header() 來(lái)變使用者認(rèn)證的把戲。可以在 PHP 的最開頭送出字串到使用者端,就會(huì)在使用者端出現(xiàn)下圖的視窗。;;<?php;;Header("WWW-Authenticate: Basic realm="Member"");;;Header("HTTP/1.0 401 Unauthorized");;;?>;;在程式中字串 realm="Member" 中的 Member 字樣出現(xiàn)在圖中,當(dāng)然若使用中文字取代,瀏覽器端也會(huì)出現(xiàn)中文字,如上面的 MySEED 圖。若 Web 站臺(tái)使用者還有其它語(yǔ)文,如英文或日文,送出中文的 realm 字串似乎就比較不合適。無(wú)論如何,這都要視站臺(tái)的性質(zhì)及使用者定位而決定。;;當(dāng)然這還是很粗糙,因?yàn)槌怂统鲆暣昂螅蜎]有下文了,帳號(hào)輸入正確也好,輸入錯(cuò)誤也罷,都不會(huì)有任何的結(jié)果。我們需要再更進(jìn)階的程式來(lái)處理。;;在后端的使用認(rèn)證上,考慮使用資料庫(kù)作為儲(chǔ)存帳號(hào)及密碼的后端,在這種架構(gòu)可以容納許多的使用者,管它一萬(wàn)個(gè)使用者還是十萬(wàn)個(gè)使用者。若您的站已有數(shù)十萬(wàn)個(gè)使用者帳號(hào),那么恭喜您,您的站算是世界級(jí)的大站了。MySQL 是個(gè)不錯(cuò)的選擇,許多站臺(tái),甚至是商業(yè)化的站臺(tái)都用它來(lái)做后端的資料庫(kù)。當(dāng)然您要架真正的商業(yè)站臺(tái),錢不是問(wèn)題的話,那可以使用口碑最廣的 Oracle 資料庫(kù)系列。;;要在 PHP 中使用任何資料庫(kù),都要先將資料庫(kù)的伺服器端及客戶端設(shè)定好,之后才編譯 PHP 及 Apache 系統(tǒng)。;;準(zhǔn)備好 MySQL 及 PHP 之后,先在 MySQL 中加入新的資料庫(kù),本例是加入mymember,用別的名字當(dāng)然也可以。MySQL 要加入資料庫(kù) (Database) 很容易,只要在MySQL 存放 Database 的地方 mkdir 就可以了。例如在 UNIX Shell 下打;;hahaha:/usr/local/mysql/data# mkdir mymember;;在建立了資料庫(kù)之后,尚需要建立資料表格 (Table) 方能使用。設(shè)定的表格如下,可以將它儲(chǔ)在 /tmp/memberauth.sql 中;;CREATE TABLE MemberAuth (;;Serial mediumint(9) NOT NULL auto_increment,;;Username char(8) NOT NULL,;;Password char(8) NOT NULL,;;Enable char(1) DEFAULT ’0’ NOT NULL,;;PRIMARY KEY (Serial);;);;;檔案 memberauth.sql;;先看看 memberauth.sql 的這些欄位。Serial 是個(gè)自動(dòng)增加的整數(shù)欄位,每輸入一筆資料,就會(huì)自動(dòng)加一,這當(dāng)然不能是空的欄位,于是就用 NOT NULL 了。第二個(gè)欄位是 Username,代表使用者的帳號(hào),為了統(tǒng)一以及適應(yīng)各系統(tǒng)起見,設(shè)定成八個(gè)字,當(dāng)然這個(gè)欄位也不能是空的。Password 是第三個(gè)欄位,為使用者的密碼。第四個(gè)欄位 Enable 做為帳號(hào)是否有效的旗標(biāo),設(shè)計(jì)上 0 表示無(wú)用,1 表可用,日后還可加入其它值做不同的用途。;;設(shè)計(jì)好了資料表之后,就要將資料表加入資料庫(kù)了。由于常要使用 MySQL 資料庫(kù),可以到 http://www.phpwizard.net/phpMyAdmin 下載 phpMyAdmin,使用瀏覽器操作及管理 MySQL,輕松又方便。若使用這套 phpMyAdmin 可以在它的使用者介面上輸入memberauth.sql 加入 MySQL 中。或者也可以在 UNIX Shell 下輸入下式,也是有同樣的效果。;;mysql mymember < /tmp/memberauth.sql;;在準(zhǔn)備好了之后,就可以輸入使用者帳號(hào)及密碼在 memberauth 資料表中了。當(dāng)然還是使用 phpMyAdmin 方便,用 mysql 程式就要一筆筆的 INSERT 了。;;接著進(jìn)入了設(shè)計(jì)函式的階段了。;;<?php;;file://---------------------------;;// 使用者認(rèn)證函式 auth.inc;;// Author: Wilson Peng;;// Copyright (C) 1999;;file://---------------------------;;$error401 = "/home/phpdocs/error/401.php";;;if ($PHP_AUTH_PW=="") {;;Header("WWW-Authenticate: Basic realm="超金卡會(huì)員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;} else {;;$db_id = mysql_pconnect("localhost", "myid", "mypw");;;$result = mysql_db_query("mymember","select password, enable;;from MemberAuth where username=’$PHP_AUTH_USER’");;;$row = mysql_fetch_array($result);;;$MemberPasswd = $row[0];;;$MemberEnable = $row[1];;;if ($MemberEnable==0) {;;echo "您的帳號(hào)被停用了";;;exit;;;};;if ($PHP_AUTH_PW!=$MemberPasswd) {;;Header("WWW-Authenticate: Basic realm="超金卡會(huì)員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;};;};;?>;;Copyright (C) 1999, Wilson Peng;;要使用這個(gè) auth.inc,要在每個(gè) PHP 的第一行加入;;<? require("auth.inc"); ?> 。;;在加入本程式的 PHP 檔案都會(huì)檢查帳號(hào)密碼,圖片等就不會(huì)檢查,比起使用 Web 伺服器功能的某目錄下全都檢查,PHP 顯得有彈性多了。;;$error401 = "/home/phpdocs/error/401.php";;;這行表示在使用者按下取消,或檢查失敗時(shí),要顯示給使用者看的檔案。;;if ($PHP_AUTH_PW=="") {;;Header("WWW-Authenticate: Basic realm="超金卡會(huì)員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;} else;;到 else 之前,若沒有傳入密碼,則送出輸入密碼的視窗。其中的;;$PHP_AUTH_USER、$PHP_AUTH_PW 是 PHP 中特殊的變數(shù),分別代表使用者確認(rèn)的帳號(hào)及密碼。上面的程式也是利用這二個(gè)變數(shù)來(lái)處理使用者認(rèn)證。;;$db_id = mysql_pconnect("localhost", "myid", "mypw");;;$result = mysql_db_query("mymember","select password, enable from;;MemberAuth where username=’$PHP_AUTH_USER’");;;$row = mysql_fetch_array($result);;;$MemberPasswd = $row[0];;;$MemberEnable = $row[1];;;若使用者有輸入帳號(hào)及密碼,則向資料庫(kù)查詢。同時(shí)查核該使用者是否仍可使用。;;if ($MemberEnable==0) {;;echo "您的帳號(hào)被停用了";;;exit;;;};;上四行程式為帳號(hào)被停用的情形。;;if ($PHP_AUTH_PW!=$MemberPasswd) {;;Header("WWW-Authenticate: Basic realm="超金卡會(huì)員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;};;密碼錯(cuò)誤則再次向使用者要求輸入帳號(hào)及密碼。;;在實(shí)際使用時(shí),可以視需要加入的網(wǎng)頁(yè)再加入 auth.inc 這個(gè)檔案,就不用連看張圖形也要查一次密碼,降低伺服器和使用者二端的資源。當(dāng)然,和 MySQL 的連系上,可以使用 mysql_pconnect() 一直和 MySQL 伺服器連線。或是使用mysql_connect() 每次重新連線,用這個(gè)函式要記得早點(diǎn)使用 mysql_close() 將資料庫(kù)關(guān)閉。下面的程式 auth1.inc 是另一版本的認(rèn)證程式,就是開啟連線后馬上關(guān)閉,釋放資源的例子。;;<?php;;file://---------------------------;;// 使用者認(rèn)證函式-1 auth1.inc;;// Author: Wilson Peng;;// Copyright (C) 1999;;file://---------------------------;;$error401 = "/home/phpdocs/error/401.php";;;if ($PHP_AUTH_PW=="") {;;Header("WWW-Authenticate: Basic realm="超金卡會(huì)員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;} else {;;$db_id = mysql_connect("localhost", "myid", "mypw");;;$result = mysql_db_query("mymember","select password, enable;;from MemberAuth where username=’$PHP_AUTH_USER’");;;$row = mysql_fetch_array($result);;;$MemberPasswd = $row[0];;;$MemberEnable = $row[1];;;mysql_close($db_id);;;if ($MemberEnable==0) {;;echo "您的帳號(hào)被停用了";;;exit;;;};;if ($PHP_AUTH_PW!=$MemberPasswd) {;;Header("WWW-Authenticate: Basic realm="超金卡會(huì)員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;};;};;?>;;
標(biāo)簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本亚洲三级在线| 亚洲欧美日韩国产一区二区| 一本一本久久| 欧洲激情综合| 欧美不卡视频| 蜜臀国产一区| 中文字幕在线视频网站| 国产一区二区精品福利地址| 国产亚洲精品美女久久| 国产精品久一| 国产精品成人自拍| 精品中文在线| 欧洲亚洲一区二区三区| 91成人网在线观看| 一本综合精品| 国产精品1区在线| 亚洲一级少妇| 亚洲一区黄色| 欧美片第1页综合| 黄色精品视频| 国产视频一区三区| 亚洲欧美日韩国产一区二区| 日本成人手机在线| 久久精品国产www456c0m| 日韩欧美2区| 中文字幕人成乱码在线观看| 日韩中文字幕av电影| 精品一区二区三区的国产在线观看 | 日本欧美不卡| 蜜臀a∨国产成人精品| 精品欧美日韩精品| 丝袜亚洲精品中文字幕一区| 亚洲精品看片| 欧美freesex黑人又粗又大| 蜜桃av一区二区在线观看| 欧美精品97| 蘑菇福利视频一区播放| 国产精品成人自拍| 中文精品在线| 九九九精品视频| 日韩精品一二三四| 日韩精品麻豆| 美女国产精品久久久| 亚洲专区欧美专区| 国产精品毛片久久| 国产精品一区亚洲| 日本综合视频| 视频在线观看一区二区三区| 日韩电影二区| 精品国产欧美日韩| 亚洲精品伊人| 视频一区二区三区在线| 1024精品一区二区三区| 成人羞羞视频播放网站| 国产一区一一区高清不卡| 欧美欧美黄在线二区| 亚洲精品系列| 日韩美女精品| 91精品国产自产观看在线| 中文字幕亚洲在线观看| 日韩中文字幕区一区有砖一区| 伊人精品视频| 国产高清一区| 亚洲欧洲另类| 欧美日韩视频| 在线亚洲精品| 美国三级日本三级久久99| 久久国产99| 伊人久久大香伊蕉在人线观看热v| 精品亚洲美女网站| 久久精品国产www456c0m| 欧美日中文字幕| 午夜久久福利| 伊人久久一区| 国产毛片久久久| 中文字幕人成乱码在线观看| 精品成人免费一区二区在线播放| 日本一区二区高清不卡| 久久久久久色 | 中文在线日韩| 国产麻豆精品| se01亚洲视频 | 亚洲精品综合| 精品午夜久久| 色88888久久久久久影院| 亚洲a一区二区三区| 香蕉成人久久| 精品国产aⅴ| 国产精品日本| 精品久久91| 日韩影院免费视频| 狠狠久久伊人| 免费看欧美美女黄的网站| 欧美国产日本| 国产亚洲激情| www.九色在线| 日本成人中文字幕在线视频| 黄色网一区二区| 青青草国产成人99久久| 精品国产一区二区三区2021| 天堂√8在线中文| 国产精品流白浆在线观看| 亚洲精品网址| 精品美女久久| 欧美伊人久久| 免费看的黄色欧美网站| 91中文字幕精品永久在线| 日韩一区免费| 久久亚洲图片| 波多野结衣一区| 日韩欧美中文| 国产一区二区三区四区五区 | 男女男精品网站| 日韩三区免费| 美女精品视频在线| 91精品美女| 7m精品国产导航在线| 日韩精品一级二级| 亚洲精品午夜av福利久久蜜桃| 国产在线观看91一区二区三区| 欧美日韩午夜电影网| 日韩精品第一| 97成人在线| 国产精品三p一区二区| 日韩在线黄色| 日韩国产欧美三级| 日韩动漫一区| 亚欧洲精品视频在线观看| 亚洲精品美女| 国产欧美日韩| 国产精品入口久久| 欧美在线看片| 精品入口麻豆88视频| 久久精品女人| 欧美日韩国产观看视频| 中文在线а√天堂| 亚洲电影在线| 亚洲精品一二三区区别| 中文视频一区| 欧美亚洲自偷自偷| 精品日本视频| 九九久久电影| 综合欧美亚洲| 国产精品欧美在线观看| 精品国产亚洲一区二区三区大结局| 国产高清精品二区| 高清一区二区| 99pao成人国产永久免费视频| 蜜桃免费网站一区二区三区| 91成人精品在线| 国产一区二区三区亚洲综合| 日韩在线观看一区| 怡红院精品视频在线观看极品| 鲁大师成人一区二区三区| 久久激五月天综合精品| 国产资源在线观看入口av| 亚洲欧美成人综合| 日本视频一区二区| 精品国产免费人成网站| 免费日韩av片| 91一区二区三区四区| 亚洲深深色噜噜狠狠爱网站| 精品视频黄色| 亚洲精品在线国产| 亚洲91视频| 美女视频黄久久| 亚洲免费成人av在线| 狠狠操综合网| 欧美国产日韩电影| 免费久久精品视频| 福利一区二区| 国产毛片一区二区三区| 亚洲女同一区| 日韩免费av| 精品无人区麻豆乱码久久久 | 国内不卡的一区二区三区中文字幕| 中文字幕一区二区三区在线视频| 一本大道色婷婷在线| 日韩精品福利一区二区三区| 午夜精品影院| 久久精品影视| 中文字幕在线视频久| 国产精品流白浆在线观看| 丝袜美腿亚洲一区二区图片| 99久久99视频只有精品| 国产精品亚洲欧美日韩一区在线| 蜜臀久久99精品久久一区二区| 动漫av一区| 国产91在线精品| 久久精品国产免费| 久久精品国产网站| 久久97久久97精品免视看秋霞| 久久激情五月婷婷| 国产免费av一区二区三区| 亚洲精品日本| 日韩av一区二区在线影视| 日韩**一区毛片| 国产精选久久| 国产91在线播放精品| www.51av欧美视频|