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

您的位置:首頁技術文章
文章詳情頁

PHP+APACHE實現用戶論證的方法

瀏覽:158日期:2024-01-18 10:04:40
在專業的 Web 站臺上,常常會需要使用者的帳號及密碼,也就是身份確認的動作。早期的 NCSA httpd 伺服器并沒有提供這項使用者確認的功能,Webmaster 只能用手工打造一個身份確認的 CGI 程式。;;自 CERN httpd 之后的 Web 伺服器大部份都提供了使用者身份確認的功能。僅管每套 Web 伺服器的設定都不太相同,但在設定上都大同小異。;;以下就是 Apache 伺服器上的使用者身份確認的設定。;;<Directory /home/MyMember>;;AuthType Basic;;AuthName MyMember;;AuthUserFile /usr/local/MyMember.txt;;Options Includes ExecCGI;;<Limit GET POST>;;require valid-user;;</Limit>;;</Directory>;;在這個例子中,當使用者在看 MyMember 目錄下所有的檔案,包括圖片檔案及其它各式檔案時,都需要使用者的帳號密碼確認。而使用者的帳號及密碼檔都存在于/usr/local/MyMember.txt 之中。;;這個帳號密碼檔 /usr/local/MyMember.txt 的樣子可能如下例。其中冒號前的字串是使用者帳號,冒號之后的字串是經過不可還原加密的密碼,編碼一般都是使用傳統的 DES 編碼,密碼的頭二個字是類似種子的字元 (salt),本例中都是 3P。每行代表一位使用者。當然 Webmaster 要自行控制重覆帳號的情形。比較特殊是在 Win32 系統上架 Apache 的情形,冒號后的密碼不可加密,因為 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 來產生單筆的帳號及密碼,但對于需要大筆資料的商業站臺,可能就需要自行寫程式來處理了。UNIX 上需要呼叫 crypt() 來處理編碼。;;在一切都設定好了之后,連線時就會在瀏覽器出現查核密碼的視窗,如上圖就是SEEDNet 的 MySEED 網站的使用者查核機制。在輸入了帳號及密碼后,瀏覽器會將它用BASE64 編碼后,傳到伺服器端。當然 BASE64 只是編碼不是加密,因此在網路上這種傳輸的安全性仍然不高,還是有可能被中間的劊客截下,再將 BASE64 還原,這也是整個使用者認證中最美中不足的地方,或許日后支援摘要認證 (Digest) 及使用 MD5 編碼后,可以解決這種問題。之后每一頁仍然需要帳號及密碼,只不過瀏覽器會幫你主動送出,不用再輸入帳號密碼了。這方面瀏覽器會保留到被關閉為止,下次重執行瀏覽器仍需輸入第一次。;;在使用者數量少時,使用上述的方法輕松又省事。但是在使用者有數萬人,甚至數十萬人時,會發生整個伺服器的效率都被搜尋帳號密碼下拖垮,可能讀取一頁需要數十秒到數分鐘。這種情形再使用伺服器提供的密碼查核機制就不太明智了。在Netscape Enterprise Server 上可能就可以使用 NSAPI 來開發自己的查核方式,在IIS 上也可以用 ISAPI 過濾器開發。寫 C/C++ 程式呼叫 NSAPI/ISAPI 總是很累,在PHP 上有了另外的選擇,這也是本節的主題。;;PHP 的 HTTP 相關函式庫提供了 header() 的函式。許多 Web 伺服器與客戶端的互動,都可以使用這個函式來變戲法。例如在某個 PHP 頁面最開始處,也就是第一行或第二行,加入以下的程式,可以將使用者重導到作者的網頁。;;<?php;;header("Location: http://wilson.gs");;;exit;;;?>;;當然,在上述程式之后的 HTML 文字或者是 PHP 程式都永遠不會出現在使用者端了。;;同樣的道理,我們就用 header() 來變使用者認證的把戲。可以在 PHP 的最開頭送出字串到使用者端,就會在使用者端出現下圖的視窗。;;<?php;;Header("WWW-Authenticate: Basic realm="Member"");;;Header("HTTP/1.0 401 Unauthorized");;;?>;;在程式中字串 realm="Member" 中的 Member 字樣出現在圖中,當然若使用中文字取代,瀏覽器端也會出現中文字,如上面的 MySEED 圖。若 Web 站臺使用者還有其它語文,如英文或日文,送出中文的 realm 字串似乎就比較不合適。無論如何,這都要視站臺的性質及使用者定位而決定。;;當然這還是很粗糙,因為除了送出視窗后,就沒有下文了,帳號輸入正確也好,輸入錯誤也罷,都不會有任何的結果。我們需要再更進階的程式來處理。;;在后端的使用認證上,考慮使用資料庫作為儲存帳號及密碼的后端,在這種架構可以容納許多的使用者,管它一萬個使用者還是十萬個使用者。若您的站已有數十萬個使用者帳號,那么恭喜您,您的站算是世界級的大站了。MySQL 是個不錯的選擇,許多站臺,甚至是商業化的站臺都用它來做后端的資料庫。當然您要架真正的商業站臺,錢不是問題的話,那可以使用口碑最廣的 Oracle 資料庫系列。;;要在 PHP 中使用任何資料庫,都要先將資料庫的伺服器端及客戶端設定好,之后才編譯 PHP 及 Apache 系統。;;準備好 MySQL 及 PHP 之后,先在 MySQL 中加入新的資料庫,本例是加入mymember,用別的名字當然也可以。MySQL 要加入資料庫 (Database) 很容易,只要在MySQL 存放 Database 的地方 mkdir 就可以了。例如在 UNIX Shell 下打;;hahaha:/usr/local/mysql/data# mkdir mymember;;在建立了資料庫之后,尚需要建立資料表格 (Table) 方能使用。設定的表格如下,可以將它儲在 /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 是個自動增加的整數欄位,每輸入一筆資料,就會自動加一,這當然不能是空的欄位,于是就用 NOT NULL 了。第二個欄位是 Username,代表使用者的帳號,為了統一以及適應各系統起見,設定成八個字,當然這個欄位也不能是空的。Password 是第三個欄位,為使用者的密碼。第四個欄位 Enable 做為帳號是否有效的旗標,設計上 0 表示無用,1 表可用,日后還可加入其它值做不同的用途。;;設計好了資料表之后,就要將資料表加入資料庫了。由于常要使用 MySQL 資料庫,可以到 http://www.phpwizard.net/phpMyAdmin 下載 phpMyAdmin,使用瀏覽器操作及管理 MySQL,輕松又方便。若使用這套 phpMyAdmin 可以在它的使用者介面上輸入memberauth.sql 加入 MySQL 中。或者也可以在 UNIX Shell 下輸入下式,也是有同樣的效果。;;mysql mymember < /tmp/memberauth.sql;;在準備好了之后,就可以輸入使用者帳號及密碼在 memberauth 資料表中了。當然還是使用 phpMyAdmin 方便,用 mysql 程式就要一筆筆的 INSERT 了。;;接著進入了設計函式的階段了。;;<?php;;file://---------------------------;;// 使用者認證函式 auth.inc;;// Author: Wilson Peng;;// Copyright (C) 1999;;file://---------------------------;;$error401 = "/home/phpdocs/error/401.php";;;if ($PHP_AUTH_PW=="") {;;Header("WWW-Authenticate: Basic realm="超金卡會員"");;;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 "您的帳號被停用了";;;exit;;;};;if ($PHP_AUTH_PW!=$MemberPasswd) {;;Header("WWW-Authenticate: Basic realm="超金卡會員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;};;};;?>;;Copyright (C) 1999, Wilson Peng;;要使用這個 auth.inc,要在每個 PHP 的第一行加入;;<? require("auth.inc"); ?> 。;;在加入本程式的 PHP 檔案都會檢查帳號密碼,圖片等就不會檢查,比起使用 Web 伺服器功能的某目錄下全都檢查,PHP 顯得有彈性多了。;;$error401 = "/home/phpdocs/error/401.php";;;這行表示在使用者按下取消,或檢查失敗時,要顯示給使用者看的檔案。;;if ($PHP_AUTH_PW=="") {;;Header("WWW-Authenticate: Basic realm="超金卡會員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;} else;;到 else 之前,若沒有傳入密碼,則送出輸入密碼的視窗。其中的;;$PHP_AUTH_USER、$PHP_AUTH_PW 是 PHP 中特殊的變數,分別代表使用者確認的帳號及密碼。上面的程式也是利用這二個變數來處理使用者認證。;;$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 "您的帳號被停用了";;;exit;;;};;上四行程式為帳號被停用的情形。;;if ($PHP_AUTH_PW!=$MemberPasswd) {;;Header("WWW-Authenticate: Basic realm="超金卡會員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;};;密碼錯誤則再次向使用者要求輸入帳號及密碼。;;在實際使用時,可以視需要加入的網頁再加入 auth.inc 這個檔案,就不用連看張圖形也要查一次密碼,降低伺服器和使用者二端的資源。當然,和 MySQL 的連系上,可以使用 mysql_pconnect() 一直和 MySQL 伺服器連線。或是使用mysql_connect() 每次重新連線,用這個函式要記得早點使用 mysql_close() 將資料庫關閉。下面的程式 auth1.inc 是另一版本的認證程式,就是開啟連線后馬上關閉,釋放資源的例子。;;<?php;;file://---------------------------;;// 使用者認證函式-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="超金卡會員"");;;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 "您的帳號被停用了";;;exit;;;};;if ($PHP_AUTH_PW!=$MemberPasswd) {;;Header("WWW-Authenticate: Basic realm="超金卡會員"");;;Header("HTTP/1.0 401 Unauthorized");;;include($error401);;;exit;;;};;};;?>;;
標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品国产欧美| 精品91久久久久| 亚洲视频电影在线| 少妇高潮一区二区三区99| 亚洲欧美专区| 日本不卡高清视频| 国产精品xxx在线观看| 美女国产精品久久久| 国产精品国产三级国产在线观看| 国产成人黄色| 婷婷精品视频| 蜜芽一区二区三区| 国产一区 二区| 欧美经典一区| 久久久国产亚洲精品| 日韩午夜av在线| 国产欧美日韩在线观看视频| 日韩av二区| 亚洲欧美日本日韩| 国产精品www994| 久久久人人人| 丝袜亚洲精品中文字幕一区| 国产精品亚洲四区在线观看| 日韩电影免费在线观看| 亚洲一区日本| 欧美国产日韩电影| 99久久精品网站| 91亚洲精品在看在线观看高清| 国产精品极品在线观看| 伊人久久大香线蕉av不卡| 日韩一区二区三免费高清在线观看| 久久只有精品| 天堂成人国产精品一区| 国产经典一区| 在线亚洲欧美| 精品一区二区三区亚洲| 欧美精品一区二区三区精品| 国产人成精品一区二区三| 日韩高清欧美| 日韩av不卡一区二区| 美女福利一区二区三区| 亚洲精品乱码| 久久久久亚洲| 日韩av午夜在线观看| 久久三级福利| 美女尤物国产一区| 视频在线观看一区| 日韩一区二区在线免费| 日韩精品久久理论片| 欧洲亚洲一区二区三区| 国产丝袜一区| 另类av一区二区| 日本激情一区| 日韩成人午夜精品| 亚洲一区观看| 日韩中文字幕高清在线观看| 久久精品xxxxx| 亚洲综合精品| 中文字幕一区久| 国产精品久久乐| 蜜桃视频第一区免费观看| 久久久久国产一区二区| 另类小说一区二区三区| 午夜亚洲福利| 亚洲欧洲一区二区天堂久久| yellow在线观看网址| 国产福利一区二区精品秒拍| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲午夜精品久久久久久app| 精品亚洲成人| 国产乱码精品一区二区三区四区 | 日韩欧美中文| 久久精品国产久精国产| 日韩av网站在线免费观看| 午夜电影亚洲| 婷婷成人在线| 日韩电影免费网站| 丰满少妇一区| 久久久精品国产**网站| 国产欧美日韩视频在线| 日韩精品久久理论片| 亚洲免费观看高清完整版在线观| 中文国产一区| 狠狠色狠狠色综合日日tαg| 91精品韩国| 在线精品亚洲欧美日韩国产| 久久精品色播| 精品国产aⅴ| 麻豆视频久久| 精品一区视频| 久久久久久亚洲精品美女| 国产精品久久久久久妇女| 欧美一区成人| 国产精品一区2区3区| 国产欧美综合一区二区三区| 国产亚洲字幕| 国产极品一区| 超碰在线99| 六月婷婷综合| 蜜桃一区二区三区| 亚洲经典在线| 免费在线观看一区二区三区| 亚洲一区av| 国产乱码精品一区二区三区四区 | 欧美日韩在线网站| 亚洲精品在线观看91| 精品91久久久久| 亚洲专区视频| 欧美日韩亚洲一区| 精品国产精品国产偷麻豆| 国产一区2区| 极品av在线| 国产精品字幕| 久久福利一区| 日韩国产在线观看一区| 国产精品毛片视频| 久久电影tv| 亚洲欧洲一区| 奇米777国产一区国产二区| 欧美国产日韩电影| 成人自拍av| 免费观看在线色综合| 欧美中文一区| 水蜜桃久久夜色精品一区| 亚洲成人精品| 三级在线观看一区二区| 欧美亚洲福利| 久久这里只有精品一区二区| 久久精品高清| 亚洲理论在线| 久久亚洲精品中文字幕| 久久久成人网| 中文字幕一区日韩精品| 欧美精品成人| 婷婷久久一区| 日韩精品视频网站| 9999国产精品| 五月国产精品| 97视频热人人精品免费| 日韩精品一区第一页| 久久久91麻豆精品国产一区| 欧美日韩在线网站| 美美哒免费高清在线观看视频一区二区| 国产精品xvideos88| 亚洲午夜在线| 国产精品一级在线观看| 久久网站免费观看| 国产精品免费精品自在线观看| 久久国产亚洲| 国产精品v日韩精品v欧美精品网站 | 香蕉成人av| 丝袜脚交一区二区| 国产精品99一区二区三| 欧美日韩少妇| 久久亚州av| 石原莉奈在线亚洲三区| 麻豆mv在线观看| 亚洲免费毛片| 国内亚洲精品| 美女视频黄 久久| 综合国产精品| 久久蜜桃精品| 久久精品系列| 日韩精品一页| 欧美成人亚洲| 91免费精品| 国产剧情在线观看一区| 99国产精品| 在线天堂资源www在线污| 亚洲精品影视| 激情六月综合| caoporn视频在线| 国产精品分类| 日本视频中文字幕一区二区三区| 久久精品在线| 国产91欧美| 国产精品xxx在线观看| 亚洲日本欧美| 视频一区中文字幕| 国产精品av一区二区| a国产在线视频| 麻豆精品av| 国产精品成人国产| 日本中文字幕一区二区| 亚洲综合日本| 日韩网站在线| 亚洲激情五月| 蜜臀久久99精品久久一区二区| 日韩欧美精品| 日韩av专区| 国产69精品久久| 丰满少妇一区| 精品福利久久久| 精品国产亚洲一区二区三区大结局| 日韩福利视频网| 国产亚洲久久| 国产精品玖玖玖在线资源| 国产日韩一区| 国产调教一区二区三区| 欧美日韩亚洲一区二区三区在线|