新聞中心
我們知道在PHP中有實(shí)現(xiàn)數(shù)據(jù)加密的功能,我們今天將為大家介紹的是其中一個(gè)可以實(shí)現(xiàn)數(shù)據(jù)加密功能的函數(shù)——PHP函數(shù)crypt()。 作為PHP函數(shù)crypt()的一個(gè)例子,考慮這樣一種情況,你希望創(chuàng)建一段PHP腳本程序限 制對(duì)一個(gè)目錄的訪問(wèn),只允許能夠提供正確的用戶名和口令的用戶訪問(wèn)這一目錄。

創(chuàng)新互聯(lián)專(zhuān)注于秀峰網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供秀峰營(yíng)銷(xiāo)型網(wǎng)站建設(shè),秀峰網(wǎng)站制作、秀峰網(wǎng)頁(yè)設(shè)計(jì)、秀峰網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)公司服務(wù),打造秀峰網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供秀峰網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
我將把資料存儲(chǔ)在我喜歡的數(shù)據(jù)庫(kù)MySQL的一個(gè)表中。下面我 們以創(chuàng)建這個(gè)被稱(chēng)作members的表開(kāi)始我們的例子:
- mysql>CREATE TABLE members (
- ->username CHAR(14) NOT NULL,
- ->password CHAR(32) NOT NULL,
- ->PRIMARY KEY(username)
- ->);
#t#然后,我們假定下面的數(shù)據(jù)已經(jīng)存儲(chǔ)在該表中:
用戶名 密碼
clark keloD1C377lKE
bruce ba1T7vnz9AWgk
peter paLUvRWsRLZ4U
PHP函數(shù)crypt()中的這些加密的口令對(duì)應(yīng)的明碼分別是kent、banner和parker。注意一下每個(gè)口令的前二個(gè)字母, 這是因?yàn)槲沂褂昧讼旅娴拇a,根據(jù)口令的前二個(gè)字母創(chuàng)建干擾串的:
- $enteredPassword.
- $salt = substr($enteredPassword, 0, 2);
- $userPswd = crypt($enteredPassword, $salt);
- // $userPswd然后就和用戶名一起存儲(chǔ)在MySQL 中
我將使用Apache的口令-應(yīng)答認(rèn)證配置提示用戶輸入用戶名和口令,一個(gè)鮮為人知的有關(guān)PHP的信息是,它可以把Apache 的口令-應(yīng)答系統(tǒng)輸入的用戶名和口令識(shí)別為$PHP_AUTH_USER和$PHP_AUTH_PW,我將在身份驗(yàn)證腳本中用到這二個(gè)變量。花一些時(shí)間仔細(xì)閱讀下 面的腳本,多注意一下其中的解釋?zhuān)员愀玫乩斫庀旅娴拇a:
PHP函數(shù)crypt()和Apache的口令-應(yīng)答驗(yàn)證系統(tǒng)的應(yīng)用
- < ?php
- $host = "localhost";
- $user = "zorro";
- $pswd = "hell odolly";
- $db = "users";
- // Set authorization to False
- $authorization = 0;
- // Verify that user has entered
username and password- if (isset($PHP_AUTH_USER) &&
isset($PHP_AUTH_PW)) :- mysql_pconnect($host, $user,
$pswd) or die("Can\'t connect to MySQL- server!");
- mysql_select_db($db) or die
("Can\'t select database!");- // Perform the encryption
- $salt = substr($PHP_AUTH_PW, 0, 2);
- $encrypted_pswd = crypt($PHP_AUTH_PW, $salt);
- // Build the query
- $query = "SELECT username FROM members WHERE
- username = \'$PHP_AUTH_USER\' AND
- password = \'$encrypted_pswd\'";
- // Execute the query
- if (mysql_numrows(mysql_query($query)) == 1) :
- $authorization = 1;
- endif;
- endif;
- // confirm authorization
- if (! $authorization) :
- header(\'WWW-Authenticate:
Basic realm="Private"\');- header(\'HTTP/1.0 401 Unauthorized\');
- print "You are unauthorized
to enter this area.";- exit;
- else :
- print "This is the secret data!";
- endif;
- ?>
上面就是一個(gè)核實(shí)用戶訪問(wèn)權(quán)限的簡(jiǎn)單身份驗(yàn)證系統(tǒng)。在使用PHP函數(shù)crypt()保護(hù)重要的機(jī)密資料時(shí),記住在缺省狀態(tài)下使用的PHP函數(shù)crypt()并不是最安全的,只能用在對(duì)安全性要求較低的系統(tǒng)中,如果需要較高的安全性能,就需要我在本篇文章的后面介紹的算法。
文章名稱(chēng):PHP函數(shù)crypt()的功能介紹
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/cdjooos.html


咨詢
建站咨詢
