phpblowfish
① php語言是什麼語言
PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種HTML內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。PHP 獨特的語法混合了 C、java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在伺服器端執行,充分利用了伺服器的性能;PHP執行引擎還會將用戶經常訪問的PHP程序駐留在內存中,其他用戶在一次訪問這個程序時就不需要重新編譯程序了,只要直接執行內存中的代碼就可以了,這也是PHP高效率的體現之一。PHP具有非常強大的功能,所有的CGI或者JavaScript的功能PHP都能實現,而且支持幾乎所有流行的資料庫以及操作系統。
PHP 最初是1994年Rasmus Lerdorf創建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統計他自己網站的訪問者。後來又用C語言重新編寫,包括可以訪問資料庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔,並且發布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要且增加一些特性,比如循環語句和數組變數等等,在新的成員加入開發行列之後,在1995年中,PHP2.0發布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對msql的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網站數字超過五萬個。而在1997年中,開始了第三版的開發計劃,開發小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。
PHP的特性包括以下幾點:
開放的源代碼:所有的PHP源代碼事實上都可以得到。
PHP是免費的。
基於伺服器端:由於PHP是運行在伺服器端的腳本,可以運行在UNIX、linux、WINDOWS下。
嵌入HTML:因為PHP可以嵌入HTML語言,所以學習起來並不困難。
簡單的語言:PHP堅持腳本語言為主,與Java以C++不同。
效率高:PHP消耗相當少的系統資源。
圖像處理:用PHP動態創建圖像
PHP 3與PHP 4的比較
PHP3跟Apache伺服器緊密結合的特性;加上它不斷的更新及加入新的功能;而且幾乎支持所有主流與非主流資料庫;再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000萬。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有著更好的支持。
PHP4.0整個腳本程序的核心大幅更動,讓程序的執行速度,滿足更快的要求。在最佳化之後的效率,已較傳統CGI或者ASP等程序有更好的表現。而且還有更強的新功能、更豐富的函數庫。無論您接不接受,PHP 都將在 Web CGI 的領域上,掀起巔覆性的革命。對於一位專業的Web Master 而言,它將也是必修課程之一。
PHP 4.0是更有效的,更可靠的動態Web頁開發工具,在大多數情況運行比 PHP 3.0要快,其腳本描述更強大並且更復雜, 最顯著的特徵是速率比的增加。PHP4.0這些優異的性能是PHP 腳本引擎重新設計產生的結果:引擎由 AndiGutmans 和 Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 --Zend 引擎,使用了一種更有效的編譯--執行方式, 而不是PHP 3.0 採用的執行 --當解析時模型。
PHP4在3.0版的基礎上增加或增強了許多有用的特徵,主要如下:
(1)別名:在PHP4中,可以利用引用為變數賦值,這給編程帶來了很大的靈活性。
(2)擴充了API 模塊:PHP 4.0 為擴展的 API 模塊的提供了擴展PHP介面模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的介面多數被轉換到使用這個擴展的介面。
(3)自動資源釋放:PHP4增加了引用計數功能,這種新技術的引入使PHP4具有了自動內存管理功能,減輕了開發人員的負擔。
(4)布爾類型:PHP 4.0 支持布爾類型。
(5)進程生成:在 UNIX 環境下的 PHP 4.0 提供了一個很智能和通用的生成進程, 使用了一種名為基於automake/libtool的系統生成技術。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用於Windows 環境 ) 可以無縫地存取和訪問 COM 對象。
(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向後兼容性接近100% 。由於 PHP 4 的改進的體系結構,兩者有一些細微的差別,但是大多數人將可能永遠不可能遇上這種情況。
PHP介紹
(8)配置:PHP4重新設計和增強了PHP。ini文件,這使得用PHP。ini來配置PHP顯得極為容易,這個文件可以在運行時被Apache(unix系統)或由Windows 注冊(Windows 環境)。
(9)加密支持:PHP4實現了完整的加密, 這些加密功能是一個完整的mycrypt庫,並且 PHP 4.0 支持哈希函數。Blowfish,TripleDES,MD5,並且SHA1 也是可使用的一些加密演算法。
(10)類型檢查:PHP 4.0 支持同一操作符用於評類型檢查:===( 3 等號運算符 ), 為在兩個值和其類型之間作檢查。例如, 3 ===3 將視為假 ( 類型是不同的 ), 而 3 ==3 ( 相等判斷 ) 將視為真。
(11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個數據機連接下載一個大文件提供一個介面。然而, 如果你確實有需要,可以使用PHP 。
(12)PHP4新增函數或功能增強函數:PHP 4.0 新增了許多函數,同時也將許多現有的函數功能進行了增強,以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()
(13)here列印:PHP 4.0 的Here列印是與Perl類似的, 盡管完全不相同。Here是列印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字元,例如目錄標記。
(14)HTTP Session fallback 系統:為 HTTP Session管理的一個 fallback 系統在 PHP 4.0被實現 。預設情況下,Session標識符由cookies存儲。如果沒有cookies支持或一項cookies任務失敗,Session標識符自動被創建並在 URL 的查詢字元串中被攜帶。
(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運行。
(16)內存:PHP 4.0 能更有效的使用內存, 導致較少的內存佔用消耗,這主要歸功於引用計數技術的實現。
(17)其他類成員函數:在 PHP 4.0 你能在成員函數本身的作用域或全局范圍內調用其他類的成員函數。例如,你能用一個子函數覆蓋父函數,並在子函數中調用父函數。
(18)多維數組:在 PHP 4.0 ,利用GET,POST, Cookies的進行的數據傳輸支持多維數組。
(19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統管理,在 PHP 4.0被它的新庫函數實現 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數, 它比把Session直接地由 PHP 支持慢了許多。
(20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創建和使用方法提供一個簡單並且有效的工具。
21)對象和數嵌套組:PHP 4.0 實現了功能更加強大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數組以內被嵌套並且反過來也如此, 可以根據你的需要實現嵌套。
(22)面向對象的編程:PHP 4.0 為面向對象的編程和構造類及對象提供擴展的功能和新特徵。PHP4實現了對象重載,引用技術等新技術。
(23)對象重載支持:對象重載語法允許第三方的基於面向對象的類庫使用 PHP4 的面向對象的特徵存取他們自身的功能。使用這個特徵的一個 COM 模塊已經被實現了。
(24)輸出緩沖支持:PHP 提供了一個輸出緩沖函數集合。輸出緩沖支持允許你寫包裹函數功能壓縮緩沖區。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies ) 不採用緩沖 。
(25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達式 (PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規表達式之間有一些細微差別。
(26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設計, 使用的 PHP 的配置PHP.ini是更容易並且更有效的。全部文件能被Apache 在運行時間操作 ( 在 Apache環境 下 ) 或由 Windows 注冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關的模塊中被支持。
(27)引用計數:PHP 4.0 為系統中的每個數值提供了引用計數, 包括資源。一旦一個資源不再被任何變數引用,它自動地被釋放以節省內存資源。利用這個特徵的最明顯的例子一個內置SQL查詢的循環語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結果集合重復申請內存,直到腳本執行完畢,這些結果集合佔用的內存才被釋放。
(28)支持引用:通過引用可以改變一個變數的值。
(29)函數的運行時綁定:PHP 4.0 的運行時間綁定功能允許你在他們被聲明以前調用, 無論聲明是否在代碼以後或是在運行時間。
(30)類的運行時信息:PHP 4.0 支持在運行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數所在的名字。
(31)伺服器抽象層:為支持Web伺服器提供了增強型 SAPI ( 伺服器 API ) 介面,是 PHP 4。0 不可分的一部分。這個伺服器抽象層,提供了通用的WEB伺服器介面支持,支持多線程WEB伺服器,為大多數的WEB伺服器提供透明的支持, 這些伺服器包括 Apache ,IIS ( ISAPI ), 以及 AOL 伺服器。
----------------------------------------------------------------------------------------------------------------------------
PHP5新特性: 更加面向對象化的PHP
PHP 5 引入了新的對象模型(Object Model)。完全重寫了 PHP 處理對象的方式,允許更佳性能和更多特性。
PHP處理對象部分的內核完全重新開發過,提供更多功能的同時也提高了性能。在以前版本的php中,處理對象和處理基本類型(數字,字元串)的方式是一樣的。這種方式的缺陷是:當將對象賦值給一個變數時,或者通過參數傳遞對象時,對象將被完全拷貝一份。在新的版本里,上述操作將傳遞引用(可以把引用理解成對象的標識符),而非值。
② PHP常用加密解密方法
作者/上善若水
1.md5(string $str,bool $flag = false);
$flag = false 默認返回32位的16進至數據散列值
$flag = true 返回原始流數據
2.sha1($string,$flag = false)
$flag = false 默認返回40位的16進至數據散列值
true 返回原始流數據
3.hash(string $algo,srting $str,bool $flag);
$algo : 演算法名稱,可通過hash_algos()函數獲取所有hash加密的演算法
如:md5,sha1等,採用md5,sha1加密所得結果和1,2兩種方式結 果相同。
$flag = false 默認返回16進至的數據散列值,具體長度根據演算法不同
而不同。
true 返回原始流數據。
4.crypt(string $str,$string $salt);
函數返回使用 DES、Blowfish 或 MD5 演算法加密的字元串。
具體演算法依賴於PHP檢查之後支持的演算法和$salt的格式和長度,當 然具體結果也和操作系統有關。比較結果採用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
5.password_hash ( string $str, integer $algo [, array $options ] )
函數返回哈希加密後的密碼字元串, password_hash() 是crypt()的 一個簡單封裝
$algo : 演算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT
$options = [
「cost」=>10,//指明演算法遞歸的層數,
「salt」=>「xxadasdsad」//加密鹽值,即將被遺 棄,採用系統自動隨機生成安全性更高
];
使用的演算法、cost 和鹽值作為哈希的一部分返回
Password_verify($str,$hashed);
6.base64_encode(string $str)
設計此種編碼是為了使二進制數據可以通過非純 8-bit 的傳輸層 傳輸,例如電子郵件的主體。base64_decode(string $encoded)
可以進行解碼;
7.mcrypt_encrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
string $mode [, string $iv ] )
$ciper:加密演算法,mcrypt_list_algorithms()可以獲取該函數所有支持的演算法
如MCRYPT_DES(「des」),MCRYPT_RIJNDAEL_128(「rijndael-128」);
$mode : 加密模式 ,mcrypt_list_modes()獲取所有支持的加密模式,ecb,cbc
$key: 加密的秘鑰,mcrypt_get_key_size ( string $cipher , string $mode )
獲取指定的演算法和模式所需的密鑰長度。$key要滿足這個長度,如果長 度無效會報出警告。
$iv : 加密的初始向量,可通過mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),
Iv的參數size:
通過mcrypt_get_iv_size ( string $cipher , string $mode )獲取
Iv 的參數source:
初始向量數據來源。可選值有: MCRYPT_RAND (系統隨機數生成 器), MCRYPT_DEV_RANDOM (從 /dev/random 文件讀取數據) 和 MCRYPT_DEV_URANDOM (從 /dev/urandom 文件讀取數據)。 在 Windows 平台,PHP 5.3.0 之前的版本中,僅支持 MCRYPT_RAND。
請注意,在 PHP 5.6.0 之前的版本中, 此參數的默認值 為 MCRYPT_DEV_RANDOM。
Note: 需要注意的是,如果沒有更多可用的用來產生隨機數據的信息, 那麼 MCRYPT_DEV_RANDOM 可能進入阻塞狀態。
$data : 要加密的字元串數據
③ php excel加密的實現方法有什麼
PHP中的加密方式有如下幾種
1. MD5加密
string md5 ( string $str [, bool $raw_output = false ] )
參數
str -- 原始字元串。
raw_output -- 如果可選的 raw_output 被設置為 TRUE,那麼 MD5 報文摘要將以16位元組長度的原始二進制格式返回。
這是一種不可逆加密,執行如下的代碼
$password = 『123456『;
echo md5($password);
得到結果是
2. Crype加密
string crypt ( string $str [, string $salt ] )
crypt() 返回一個基於標准 UNIX DES 演算法或系統上其他可用的替代演算法的散列字元串。
參數
str -- 待散列的字元串。
salt -- 可選的鹽值字元串。如果沒有提供,演算法行為將由不同的演算法實現決定,並可能導致不可預料的結束。
這是也一種不可逆加密,執行如下的代碼
代碼如下:
$password = 『123456『;
$salt = "test";// 只取前兩個
echo crypt($password, $salt);
得到的結果是teMGKvBPcptKo
使用自動鹽值的例子如下:
代碼如下:
$password = crypt(『mypassword『); // 自動生成鹽值
/* 你應當使用 crypt() 得到的完整結果作為鹽值進行密碼校驗,以此來避免使用不同散列演算法導致的問題。(如上所述,基於標准 DES 演算法的密碼散列使用 2 字元鹽值,但是基於 MD5 演算法的散列使用 12 個字元鹽值。)*/
if (crypt(『mypassword『, $password) == $password) {
echo "Password verified!";
}
執行結果是輸出 Password verified!
以不同散列類型使用 crypt()的例子如下:
代碼如下:
if (CRYPT_STD_DES == 1) {
echo 『Standard DES: 『 . crypt(『rasmuslerdorf『, 『rl『) . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 『Extended DES: 『 . crypt(『rasmuslerdorf『, 『_J9..rasm『) . "\n";
}
if (CRYPT_MD5 == 1) {
echo 『MD5: 『 . crypt(『rasmuslerdorf『, 『$1$rasmusle$『) . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 『Blowfish: 『 . crypt(『rasmuslerdorf『, 『$2a$07$usesomesillystringforsalt$『) . "\n";
}
if (CRYPT_SHA256 == 1) {
echo 『SHA-256: 『 . crypt(『rasmuslerdorf『, 『$5$rounds=5000$usesomesillystringforsalt$『) . "\n";
}
if (CRYPT_SHA512 == 1) {
echo 『SHA-512: 『 . crypt(『rasmuslerdorf『, 『$6$rounds=5000$usesomesillystringforsalt$『) . "\n";
}
其結果如下
Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish: $2a$07$./U9C8sBjqp8I90dH6hi
SHA-256: $5$rounds=5000$usesomesillystri$/Tp.6
SHA-512: $6$rounds=5000$usesomesillystri$.S5KPgErtP/EN5mcO.ChWQW21
在 crypt() 函數支持多重散列的系統上,下面的常量根據相應的類型是否可用被設置為 0 或 1:
CRYPT_STD_DES - 基於標准 DES 演算法的散列使用 "./0-9A-Za-z" 字元中的兩個字元作為鹽值。在鹽值中使用非法的字元將導致 crypt() 失敗。
CRYPT_EXT_DES - 擴展的基於 DES 演算法的散列。其鹽值為 9 個字元的字元串,由 1 個下劃線後面跟著 4 位元組循環次數和 4 位元組鹽值組成。它們被編碼成可列印字元,每個字元 6 位,有效位最少的優先。0 到 63 被編碼為 "./0-9A-Za-z"。在鹽值中使用非法的字元將導致 crypt() 失敗。
CRYPT_MD5 - MD5 散列使用一個以 $1$ 開始的 12 字元的字元串鹽值。
CRYPT_BLOWFISH - Blowfish 演算法使用如下鹽值:「$2a$」,一個兩位 cost 參數,「$」 以及 64 位由 「./0-9A-Za-z」 中的字元組合而成的字元串。在鹽值中使用此范圍之外的字元將導致 crypt() 返回一個空字元串。兩位 cost 參數是循環次數以 2 為底的對數,它的范圍是 04-31,超出這個范圍將導致 crypt() 失敗。
CRYPT_SHA256 - SHA-256 演算法使用一個以 $5$ 開頭的 16 字元字元串鹽值進行散列。如果鹽值字元串以 「rounds=$」 開頭,N 的數字值將被用來指定散列循環的執行次數,這點很像 Blowfish 演算法的 cost 參數。默認的循環次數是 5000,最小是 1000,最大是 999,999,999。超出這個范圍的 N 將會被轉換為最接近的值。
CRYPT_SHA512 - SHA-512 演算法使用一個以 $6$ 開頭的 16 字元字元串鹽值進行散列。如果鹽值字元串以 「rounds=$」 開頭,N 的數字值將被用來指定散列循環的執行次數,這點很像 Blowfish 演算法的 cost 參數。默認的循環次數是 5000,最小是 1000,最大是 999,999,999。超出這個范圍的 N 將會被轉換為最接近的值。
3. Sha1加密
string sha1 ( string $str [, bool $raw_output = false ] )
參數
str -- 輸入字元串。
raw_output -- 如果可選的 raw_output 參數被設置為 TRUE,那麼 sha1 摘要將以 20 字元長度的原始格式返回,否則返回值是一個 40 字元長度的十六進制數字。
這是也一種不可逆加密,執行如下代碼:
$password = 『123456『;
echo sha1($password);
得到的結果是
以上幾種雖然是不可逆加密,但是也可以根據查字典的方式去解密。如下的地址中就提供了可以將上面的加密結果解密出來的功能。
http://www.cmd5.com/
那大家是不是加了就算加了密,也沒用啊,其實不然,只要你的加密足夠復雜,被破解出的可能性就越小,比如用以上三種加密方式混合加密,之後我會推薦給大家一個php的加密庫。
4. URL加密
string urlencode ( string $str )
此函數便於將字元串編碼並將其用於 URL 的請求部分,同時它還便於將變數傳遞給下一頁。
返回字元串,此字元串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由於歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼不同。
string urldecode ( string $str )
解碼給出的已編碼字元串中的任何 %##。 加號(『+『)被解碼成一個空格字元。
這是一種可逆加密,urlencode方法用於加密,urldecode方法用於解密,執行如下代碼:
$url = 『http://www.xxx.com/CraryPrimitiveMan/『;
$encodeUrl = urlencode($url);
echo $encodeUrl . "\n";// 如果是在網頁上展示的,就將\n修改為
echo urldecode($encodeUrl);
得到的結果如下
http%3A%2F%2Fwww.xxx.com%2FCraryPrimitiveMan%2F
http://www.xxx.com/CraryPrimitiveMan/
基於RFC 3986的加密URL的方法如下:
代碼如下:
function myUrlEncode($string) {
$entities = array(『%21『, 『%2A『, 『%27『, 『%28『, 『%29『, 『%3B『, 『%3A『, 『%40『, 『%26『, 『%3D『, 『%2B『, 『%24『, 『%2C『, 『%2F『, 『%3F『, 『%25『, 『%23『, 『%5B『, 『%5D『);
$replacements = array(『!『, 『*『, "『", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($entities, $replacements, urlencode($string));
}
5. Base64信息編碼加密
string base64_encode ( string $data )
使用 base64 對 data 進行編碼。
設計此種編碼是為了使二進制數據可以通過非純 8-bit 的傳輸層傳輸,例如電子郵件的主體。
Base64-encoded 數據要比原始數據多佔用 33% 左右的空間。
string base64_decode ( string $data [, bool $strict = false ] )
對 base64 編碼的 data 進行解碼。
參數
data -- 編碼過的數據。
strict -- 如果輸入的數據超出了 base64 字母表,則返回 FALSE。
執行如下代碼:
代碼如下:
$name = 『CraryPrimitiveMan『;
$encodeName = base64_encode($name);
echo $encodeName . "\n";
echo base64_decode($encodeName);
其結果如下
代碼如下:
Q3JhcnlQcmltaXRpdmVNYW4=
CraryPrimitiveMan
推薦phpass
經 phpass 0.3 測試,在存入資料庫之前進行哈希保護用戶密碼的標准方式。 許多常用的哈希演算法如 md5,甚至是 sha1 對於密碼存儲都是不安全的, 因為駭客能夠使用那些演算法輕而易舉地破解密碼。
對密碼進行哈希最安全的方法是使用 bcrypt 演算法。開源的 phpass 庫以一個易於使用的類來提供該功能。
代碼如下:
<?php
// Include phpass 庫
require_once(『phpass-03/PasswordHash.php『)
// 初始化散列器為不可移植(這樣更安全)
$hasher = new PasswordHash(8, false);
// 計算密碼的哈希值。$hashedPassword 是一個長度為 60 個字元的字元串.
$hashedPassword = $hasher->HashPassword(『my super cool password『);
// 你現在可以安全地將 $hashedPassword 保存到資料庫中!
// 通過比較用戶輸入內容(產生的哈希值)和我們之前計算出的哈希值,來判斷用戶是否輸入了正確的密碼
$hasher->CheckPassword(『the wrong password『, $hashedPassword); // false
$hasher->CheckPassword(『my super cool password『, $hashedPassword); // true
?>
④ Windows 7 下如何配置PHP網站運行環境
本文適合PHP網站技術開發人員,對普通Windows7用戶意義不大,敬請大家注意。一、Apache安裝
版本解釋:openssl是表示帶有openssl模塊,利用openssl就可以給Apache配置SSL安全鏈接的,也就是使用https://方式進行訪問。
nossl則表示不帶OpenSSL模塊,無法用於SSL安全鏈接,在這里我們下載帶OpenSSL的。
選擇版本:apache_2.2.14-win32-x86-openssl-0.9.8k.msi (此處以32位為例)
下載地址:http://www.apache.org/dist/httpd/binaries/win32/
首先我們在D盤(盤符根據實際情況自己選擇)新建一個目錄, 並且命名為「WAMP」其意義為「Wdindows Apache Mysql PhpMyAdmin」 之後安裝的一些內容,也都將安裝在該目錄下。
1.安裝說明:
運行apache安裝程序,方法非常簡單,彈安裝界面後一直「next」
接著會出現一個界面,需要填寫3個內容,分別為:Network Domain、Server Name、Administrator』s Email Address 隨便填寫就好,不影響內容。
在下面還有2個選項,默認選擇為80埠,第二個為8080埠,根據個人需求選擇,一般為默認80埠。
我們繼續安裝,選擇Custom(自定義安裝)-「next」
其中有打著紅X的組件,我們單擊這個組件容,選擇「This feature, and all subfeatures, will be
installed on local hard drive.」,即「此部分,及下屬子部分內容,全部安裝在本地硬碟上」。-「next」
然後選擇右下角的「change 」改變安裝路徑,安裝到剛才建立的目錄中「D:WAMPApache」-「next」
安裝完畢後,電腦右下角會多出一個圖標,雙擊打開,選擇start或restart,能正常運行,至此安裝完畢。
2.修改配置:
打開安裝錄下D:WAMPApacheconfhttpd.conf 文件(修改配置文件時,不建議使用記事本,可能會對其造成影響,推薦使用Notepad++或其他編輯軟體打開修改)
打開以後Ctrl+F查找所要修改的內容
在#LoadMole vhost_alias_mole moles/mod_vhost_alias.so下添加:
LoadMole php5_mole 「D:/WAMP/PHP/php5apache2_2.dll」
PHPIniDir 「D:/WAMP/PHP」
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
DocumentRoot 「E:/WAMP/Apache/htdocs」
修改成(這里的路徑和IIS中wwwroot目錄一樣,用於存放網頁,自定義或不做修改默認):DocumentRoot 「D:/WAMP/www」
修改成(自定義或不做修改默認):
DirectoryIndex index.html
修改成:DirectoryIndex index.php default.php index.html index.htm default.html default.htm
3.測試
在D:/WAMP/www目錄下 建立個index.html頁面
在瀏覽器中輸入 http://localhost/
如果能正常顯示,Apache配置完畢,已經正常運行。
二、MySql安裝
版本解釋:The Essentials Package:不包含 embedded server and benchmark suite,有自動安裝程序和配置向導,沒有MySQL Documentation。
The Complete Package:包含 embedded server and benchmark suite,有自動安裝程序和配置向導,有MySQL Documentation。
The Noinstall Archive:包含 embedded server and benchmark suite,沒有自動安裝程序和配置向導,有MySQL Documentation。
選擇版本:mysql-essential-5.1.44-win32.msi
下載地址:http://www.mysql.com/downloads/mysql/
1.安裝說明:
打開安裝程序,單擊「next」
選擇custom,組件為默認選擇,我們不做改動-「next」
路徑設置為「D:WAMPMysql」-「next」
安裝好以後點擊「finish」
跟著會出現一個配置向導-「next」
選擇「Detailed Configuration(詳細配置)」-「next」
這里有3個選項:
Developer Machine,將只用盡量少的內存;
Server Machine,將使用中等數量內存;
Dedicated MySQL Server Machine,這台伺服器上面只跑mysql資料庫,將佔用全部的內存。
可以根據自己需求選擇,這里我們選擇第二種「Server Machine」-「next」
選擇資料庫用途,同樣有3個選項:
Mutltifunctional Database多功能用途,將把資料庫優化成很好的innodb存儲類型和高效率的myisam存儲類型;
Transactional Database Only只用於事務處理類型,最好的優化innodb,但同時也支持myisam;
Non-Transactional Databse Only非事務處理類型,適合於簡單的應用,只有不支持事務的myisam類型是被支持的。
一般選擇第一種多功能的,同樣我們也是。-「next」
選擇InnodDB的數據存放位置,一般默認就行,為了統一我填寫了「WAMP/MySQL Datafiles」-「next」
選擇mysql允許的最大連接數,第一種是最大20個連接並發數,第二種是最大500個並發連接數,最後一種是自定義,自己可以根據需求選擇,我選擇第二個-「next」
下面是選擇資料庫監聽的埠,一般默認是3306,如果改成其他埠,以後連接資料庫的時候都要記住修改的埠,否則不能連接mysql資料庫,比較麻煩,這里不做修改,用mysq的默認埠:3306-「next」
這一步設置mysql的默認編碼,我們選擇第三個,並在Character Set菜單中,選擇「gbk」編碼-「next」
(註:如果要用原來資料庫的數據,最好能確定原來資料庫用的是什麼編碼,如果這里設置的編碼和原來資料庫數據的編碼不一致,在使用的時候可能會出現亂碼。)
這一步是是否要把mysql設置成windows的,一般選擇設成服務,這樣以後就可以通過服務中啟動和關閉mysql資料庫。下面的復選框也 勾選上,這樣,在cmd模式下,不必非到mysql的bin目錄下執行命令。也就是把上下2個勾都打上,中間默認-「next」
這一步是設置mysql的超級用戶密碼,這個超級用戶非常重要,對mysql擁有全部的許可權,請設置好並牢記超級用戶的密碼,下面有個復選框是選擇是否允
許遠程機器用root用戶連接到你的mysql伺服器上面,如果有這個需求,也請勾選。這里我們使用默認選擇,在New root
password和Confirm中輸入密碼。「next」
點擊「execute」進行配置,稍微等待一會,圓點上的勾全部打上,就代表配置完畢。
2.修改配置:
打開D:WAMPMySQLmy.ini
設置datadir為D:/WAMP/MySQL/data/或你所要存放數據位置的目錄即可。
三、PHP安裝
版本解釋:VC9 專門為IIS定值的腳本,使用Visual Studio 2008編譯器編譯,支持最新的微軟組建,從而提高效率。
VC6 是為了其他WEB服務軟體提供的腳本 如 Apache。
Thread Safe 現成安全,之星時會進行線程 安全檢查,以防止有心要求就啟動新線程(Thread)的CGI執行方式而耗盡系統資源。
Non Thread Safe是非線程安全,在執行時不進行線程(Thread)安全檢查
選擇版本:PHP5.3(5.3.1)中VC6 x86 Thread Safe下 ZIP下載
下載地址:http://windows.php.net/download/
1.安裝說明
由於我們下載的的是ZIP壓縮包,只需要將文件解壓到「D:WAMPPHP」目錄下即可
2.修改配置
將E:WAMPPHPphp.ini-development 文件修改成php.ini
打開php.ini
; extension_dir = 「ext」
修改成:extension_dir = 「E:WAMPPHPext」
將947行下,這些文件前面的「;」去除
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_xmlrpc.dll
;date.timezone =
修改成(很多網站沒提到這里要修改,默認為美國時間,如果不修改會報錯):date.timezone = Asia/Shanghai
3.測試
重啟Apache(修改過配置文件 必須重啟Apache才會生效)
新建個index.php 頁面,代碼中輸入,保存文件放到「D:WMAPwww」目錄下
打開瀏覽器輸入:http://localhost/index.php 如果能正常顯示,說明PHP配置完畢,可以查看該頁面的PHP信息是否正確。
(註:在改文件中輸入函數可輸出大量的有關PHP當前狀態的信息,如PHP版本,伺服器信息和環境等。)
(註:)
接著我們測試下,是否能連接到Mysql
再新建個link.php,下代碼中輸入
$link=mysql_connect(「127.0.0.1″,」root」,」Mysql安裝時填寫的密碼」);
if(!$link) echo 「Mysql資料庫連接失敗!」;
else echo 「Mysql資料庫連接成功!」;
mysql_close();
?>
也保存文件放到「D:WMAPwww」目錄下
打開瀏覽器輸入:http://localhost/link.php 查看
四、PhpMyAdmin安裝
版本解釋:phpMyAdmin-3.2.5
選擇版本:phpMyAdmin-3.2.5-all-languages.zip
下載地址:http://www.phpmyadmin.net/home_page/downloads.php
1.安裝說明
解壓到D:WAMPphpMyAdmin
2.修改配置
打開D:WAMPphpMyAdminlibrariesconfig.default.php
$cfg['PmaAbsoluteUri'] = 」;
修改成(填寫訪問phpMyAdmin的絕對URL):$cfg['PmaAbsoluteUri'] = 『http://localhost/PHPMyadmin/』;
$cfg['Servers'][$i]['host'] = 『localhost』;
修改成(填寫伺服器地址,通常默認,不需要修改):$cfg['Servers'][$i]['host'] = 『localhost』;
$cfg['Servers'][$i]['user'] = 『root』;
修改成(填寫Mysql用戶名,這里我們默認):$cfg['Servers'][$i]['user'] = 『root』;
$cfg['Servers'][$i]['password'] = 」;
修改成(填寫Mysql密碼):$cfg['Servers'][$i]['password'] = 『Mysql PWD;
$cfg['Servers'][$i]['auth_type'] = 『cookie』;
修改成(設置認證方法,安全因素考慮,填寫成cookie):$cfg['Servers'][$i]['auth_type'] = 『cookie』;
$cfg['blowfish_secret'] = 」;
修改成(設置短語密碼,如果上面設置成cookie,那這里不能留空,不然登陸會提示錯誤):$cfg['blowfish_secret'] = 『cookie』;
3.測試
打開瀏覽器輸入:http://localhost/phpmyadmin/ 訪問和登陸
五、結尾
至此Windows7下的PHP環境搭建完畢,大家盡情的使用吧。
⑤ 為什麼運行PHP就會出現404錯誤
PHP沒有完全安裝正確造成的。
簡單修正方法
4.Internet 服務管理器---網站(右鍵)---屬性---主目錄---配置---添加---擴展名為 .php ,單擊「瀏覽」將可執行文件指向 php5isapi.dll 所在路徑,如:D:\php\php5isapi.dll
5.Internet 服務管理器---Web 信息管理器---添加一個新的web擴展程序---輸入:PHP ,再將可執行文件指向 php5isapi.dll 所在路徑---允許
5.將以下代碼復制到一個文本文件內,保存為.bat文件 並運行
net stop w3svc
net stop iisadmin
net start w3svc
6.新建一個網站 在網站目錄下建立a.php 內容為
<?
phpinfo();
?>
如果不行的話就重新安裝下PHP吧 下面說一下詳細的安裝方法
如何在IIS上集成php、
這里我就不說cgi了,因為cgi需要系統許可權過高,不建議虛擬主機使用,而且cgi程序也很少有人用到,樓主說的要iis6.0結合php
安裝需要:windows2003系統 安裝有IIS6.0+php-5.1.1-Win32.zip+mysql最新版本+zendO 3.20+phpmysamin2.8
一、安裝 PHP
1.php-5.1.2-Win32.zip,直接全部接壓至D:\php\目錄即可得PHP文件存放目錄D:\php\
2.再將PHP5為D:\php\和子文件夾ext下的所有dll文件拷到c:\Windows\system32(win2000系統為 c:/winnt/system32/)下,覆蓋已有的dll文件
3.將D:\PHP目錄下的php.exe、php-win.exe和php.ini-dist三個文件拷到C:\Windows ( Windows 2000 下為 C:\WINNT)下; 將C:\Windows\php.ini-dist改名為php.ini,然後用記事本打開,利用記事本的查找功能搜索
register_globals = Off
,將 Off 改成 On ;
extension_dir =
,並將其路徑指到你的 PHP 目錄下的 extensions 目錄,比如:extension_dir = "D:\php\ext" ;
將以下內容前面的;去掉
;extension=php_dbase.dll
可選
;extension=php_gd2.dll
這個是用來支持GD庫的,一般需要,必選
;extension=php_ldap.dll
可選
;extension=php_mbstring.dll
這不選一般用PHPMYADMIN會出紅色提示,故必選
;extension=php_mssql.dll
這個是用來支持MSSQL的,可選
;extension=php_mysql.dll
這個是用來支持MYSQL的,要支持MYSQL必選
4.Internet 服務管理器---網站(右鍵)---屬性---主目錄---配置---添加---擴展名為 .php ,單擊「瀏覽」將可執行文件指向 php5isapi.dll 所在路徑,如:D:\php\php5isapi.dll
5.Internet 服務管理器---Web 信息管理器---添加一個新的web擴展程序---輸入:PHP ,再將可執行文件指向 php5isapi.dll 所在路徑---允許
5.將以下代碼復制到一個文本文件內,保存為.bat文件 並運行
net stop w3svc
net stop iisadmin
net start w3svc
6.新建一個網站 在網站目錄下建立a.php 內容為
<?
phpinfo();
?>
二、安裝mysql
對於MySQL最新版,解壓,雙擊執行 Setup.exe 一路Next下一步,選擇安裝目錄為D:\MySQL和安裝方式為Custom自定義安裝,再一路Next下一步,最後一步,跳過即可
開始---程序---MYSQL5.0---進行配置mysql並設置mysql密碼
三、安裝zendO3.2.0
下載後得到 ZendOptimizer-3.2.0-Windows-i386.exe ,直接雙擊安裝即可,安裝過程要你選擇 Web Server 時,選擇 IIS ,然後提示你是否 Restart Web Server,選擇是,完成安裝之前提示是否備份 php.ini ,點確定後安裝完成。我這里安裝到D:\php\Zend
以下兩步的目錄根據你自己的默認WEB站點目錄來選,當然也可以選擇到D:\php\Zend目錄
Zend Optimizer 的安裝向導會自動根據你的選擇來修改 php.ini 幫助你啟動這個引擎。下面簡單介紹一下 Zend Optimizer 的配置選項。以下為本人安裝完成後 php.ini 里的默認配置代碼(分號後面的內容為注釋):
zend_extension_ts="D:\php\Zend\lib\ZendExtensionManager.dll"
;Zend Optimizer 模塊在硬碟上的安裝路徑。
zend_extension_manager.optimizer_ts="D:\php\Zend\lib\Optimizer-3.2.0"
;優化器所在目錄,默認無須修改。
zend_optimizer.optimization_level=1023
;優化程度,這里定義啟動多少個優化過程,默認值是 15 ,表示同時開啟 10 個優化過程中的 1-4 ,我們可以將這個值改為 1023 ,表示開啟全部10個優化過程。
調用phpinfo()函數後顯示:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.9, Copyright (c) 2003-2006, by Zend Technologies with Zend Optimizer v3.2.0, Copyright (c) 1998-2006, by Zend Technologies 則表示安裝成功。
四.安裝GD庫
這一步在前面PHP.INI配置中去掉「;extension=php_gd2.dll」前面的;實際上已經安裝好了~
[在php.ini里找到"extension=php_gd2.dll"這一行,並且去掉前面的分號,gd庫安裝完成,用echophpinfo();測試是否成功!
五、安裝 phpMyAdmin:
下載得到 phpMyAdmin-2.8.0.zip ,將其解壓到D:\php\或者 IIS 根目錄,改名phpMyAdmin-2.8.0為phpMyAdmin
1。找到 $cfg['PmaAbsoluteUri']
在後面的''內把phpMyAdmin的地址打上,修改後如 $cfg['PmaAbsoluteUri'] = 'http://www.szbar.com/phpMyAdmin';
2。找到 $cfg['blowfish_secret']
在後面的''內隨便輸入一些數字或字母,修改後如 $cfg['blowfish_secret'] = 'szbar';
3。找到 $cfg['Servers'][$i]['auth_type']
後面的''內默認為config,修改為cookie,修改後如 $cfg['Servers'][$i]['auth_type'] = 'cookie';
4。找到 $cfg['Servers'][$i]['user']
後面的''內默認是root,去掉,修改後如 $cfg['Servers'][$i]['user'] = '';
問:配置文件現在需要絕密的短語密碼(blowfish_secret)。怎麼解決?
答:在blowfish_secret設置的就是安裝mysql時的密碼!
完成 給我加分!~~~~~~~~~~~~~~~~~~
⑥ php代碼怎麼加密最好,不能破解的那種
在使用PHP開發Web應用的中,很多的應用都會要求用戶注冊,而注冊的時候就需要我們對用戶的信息進行處理了,最常見的莫過於就是郵箱和密碼了,本文意在討論對密碼的處理:也就是對密碼的加密處理。
MD5
相信很多PHP開發者在最先接觸PHP的時候,處理密碼的首選加密函數可能就是MD5了,我當時就是這樣的:
$password = md5($_POST["password"]);
上面這段代碼是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受歡迎了,因為它的加密演算法實在是顯得有點簡單了,而且很多破解密碼的站點都存放了很多經過MD5加密的密碼字元串,所以這里我是非常不提倡還在單單使用MD5來加密用戶的密碼的。
SHA256 和 SHA512
其實跟前面的MD5同期的還有一個SHA1加密方式的,不過也是演算法比較簡單,所以這里就一筆帶過吧。而這里即將要說到的SHA256 和 SHA512都是來自於SHA2家族的加密函數,看名字可能你就猜的出來了,這兩個加密方式分別生成256和512比特長度的hash字串。
他們的使用方法如下:
<?php
$password = hash("sha256", $password);
PHP內置了hash()函數,你只需要將加密方式傳給hash()函數就好了。你可以直接指明sha256, sha512, md5, sha1等加密方式。
鹽值
在加密的過程,我們還有一個非常常見的小夥伴:鹽值。對,我們在加密的時候其實會給加密的字元串添加一個額外的字元串,以達到提高一定安全的目的:
<?php
function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);
return hash("sha256", $password . $salt);}
Bcrypt
如果讓我來建議一種加密方式的話,Bcrypt可能是我給你推薦的最低要求了,因為我會強烈推薦你後面會說到的Hashing API,不過Bcrypt也不失為一種比較不錯的加密方式了。
<?php
function generateHash($password) {
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);
}
}
Bcrypt 其實就是Blowfish和crypt()函數的結合,我們這里通過CRYPT_BLOWFISH判斷Blowfish是否可用,然後像上面一樣生成一個鹽值,不過這里需要注意的是,crypt()的鹽值必須以$2a$或者$2y$開頭,詳細資料可以參考下面的鏈接:
http://www.php.net/security/crypt_blowfish.php更多資料可以看這里:
http://php.net/manual/en/function.crypt.phpPassword Hashing API
這里才是我們的重頭戲,Password Hashing API是PHP 5.5之後才有的新特性,它主要是提供下面幾個函數供我們使用:
password_hash() – 對密碼加密.
password_verify() – 驗證已經加密的密碼,檢驗其hash字串是否一致.
password_needs_rehash() – 給密碼重新加密.
password_get_info() – 返回加密演算法的名稱和一些相關信息.
雖然說crypt()函數在使用上已足夠,但是password_hash()不僅可以使我們的代碼更加簡短,而且還在安全方面給了我們更好的保障,所以,現在PHP的官方都是推薦這種方式來加密用戶的密碼,很多流行的框架比如Laravel就是用的這種加密方式。
<?php
$hash = password_hash($passwod, PASSWORD_DEFAULT);對,就是這么簡單,一行代碼,All done。
PASSWORD_DEFAULT目前使用的就是Bcrypt,所以在上面我會說推薦這個,不過因為Password Hashing API做得更好了,我必須鄭重地想你推薦Password Hashing API。這里需要注意的是,如果你代碼使用的都是PASSWORD_DEFAULT加密方式,那麼在資料庫的表中,password欄位就得設置超過60個字元長度,你也可以使用PASSWORD_BCRYPT,這個時候,加密後字串總是60個字元長度。
這里使用password_hash()你完全可以不提供鹽值(salt)和 消耗值 (cost),你可以將後者理解為一種性能的消耗值,cost越大,加密演算法越復雜,消耗的內存也就越大。當然,如果你需要指定對應的鹽值和消耗值,你可以這樣寫:
<?php
$options = [
'salt' => custom_function_for_salt(), //write your own code to generate a suitable salt'cost' => 12 // the default cost is 10
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);密碼加密過後,我們需要對密碼進行驗證,以此來判斷用戶輸入的密碼是否正確:
<?php
if (password_verify($password, $hash)) {
// Pass
}
else {
// Invalid
}
很簡單的吧,直接使用password_verify就可以對我們之前加密過的字元串(存在資料庫中)進行驗證了。
然而,如果有時候我們需要更改我們的加密方式,如某一天我們突然想更換一下鹽值或者提高一下消耗值,我們這時候就要使用到password_needs_rehash()函數了:
<?php
if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])) {// cost change to 12
$hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);// don't forget to store the new hash!
}
只有這樣,PHP的Password Hashing API才會知道我們重現更換了加密方式,這樣的主要目的就是為了後面的密碼驗證。
簡單地說一下password_get_info(),這個函數一般可以看到下面三個信息:
algo – 演算法實例
algoName – 演算法名字
options – 加密時候的可選參數
所以,現在就開始用PHP 5.5吧,別再糾結低版本了。
Happy Hacking
⑦ iis如何運行php
1.首先
我們需要安裝好IIS,默認windows2008下是iis7.0,具體的安裝可以查看iis7.0安裝圖解
2. 安裝好IIS後,默認已經支持asp,這里我們開始安裝.net環境
進入系統,打開桌面左下角「伺服器管理器」
點擊功能->"添加功能"->勾選「.NET Framework 3.5.1功能」
點擊下一步,安裝完成即可。
3. 接下來配置PHP環境,從常用軟體下載php5.2.6和php.ini文件
下載後,將php5.2.6解壓為php,並將php.ini拷貝到php裡面,這里我們將php放置在C:Program Files目錄下,
並用記事本打開php.ini文件,找到extension_dir這一行,將路徑修改為ext文件所在路徑,我們這里為 C:Program Filesphpext
設置php文件夾目錄許可權:
administrators 完全控制
system 完全控制
users 讀取和運行,列出文件夾目錄,讀取
設置系統環境變數:
Path環境變數末尾追加C:Program Filesphp
新建系統變數PHPRC變數值C:Program Filesphp
IIS設置:
A.添加應用程序池
E.將站點進程池設置到創建的php進程池內,重啟IIS,在默認站點下創建一個info.php,內容如下:
<?php
phpinfo();
?>
打開localhost/phpinfo.php 查看效果:
到這里PHP環境配置完成。
額外注意:
IIS+php 運行phpMyAdmin
Cannot start session without errors, please check errors 錯誤解決辦法
在php安裝目錄 找到php.ini
將php.ini中的session.auto_start的值改為1(啟動),默認是0(禁用),
在你的php安裝目錄下找到php.ini並且在該目錄下創建Temp文件夾
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
;session.save_path = "D:/host/php/Temp"
session.save_path 這一行,設成session.save_path = 「D:/host/php/Temp」 (把前面分號去掉)
然後重啟IIS伺服器
在phpmyadmin中找到,config.sample.inc.php,改成config.inc.php,
找到 $cfg['blowfish_secret'] 將後面的賦值,加入數字和字母組合。
⑧ 怎麼搭建php環境Apache+PHP+mysql
一、Apache安裝
版本解釋:openssl是表示帶有openssl模塊,利用openssl就可以給Apache配置SSL安全鏈接的,也就是使用https://方式進行訪問。
nossl則表示不帶OpenSSL模塊,無法用於SSL安全鏈接,在這里我們下載帶OpenSSL的。
選擇版本:apache_2.2.14-win32-x86-openssl-0.9.8k.msi (此處以32位為例)
下載地址:http://www.apache.org/dist/httpd/binaries/win32/
首先我們在D盤(盤符根據實際情況自己選擇)新建一個目錄, 並且命名為「WAMP」其意義為「Wdindows Apache Mysql PhpMyAdmin」 之後安裝的一些內容,也都將安裝在該目錄下。
1.安裝說明:
運行apache安裝程序,方法非常簡單,彈安裝界面後一直「next」
接著會出現一個界面,需要填寫3個內容,分別為:Network Domain、Server Name、Administrator』s Email Address 隨便填寫就好,不影響內容。
在下面還有2個選項,默認選擇為80埠,第二個為8080埠,根據個人需求選擇,一般為默認80埠。
我們繼續安裝,選擇Custom(自定義安裝)-「next」
其中有打著紅X的組件,我們單擊這個組件容,選擇「This feature, and all subfeatures, will be installed on local hard drive.」,即「此部分,及下屬子部分內容,全部安裝在本地硬碟上」。-「next」
然後選擇右下角的「change 」改變安裝路徑,安裝到剛才建立的目錄中「D:\WAMP\Apache\」-「next」
安裝完畢後,電腦右下角會多出一個圖標,雙擊打開,選擇start或restart,能正常運行,至此安裝完畢。
2.修改配置:
打開安裝錄下D:\WAMP\Apache\conf\httpd.conf 文件(修改配置文件時,不建議使用記事本,可能會對其造成影響,推薦使用Notepad++或其他編輯軟體打開修改)
打開以後Ctrl+F查找所要修改的內容
在#LoadMole vhost_alias_mole moles/mod_vhost_alias.so下添加:
LoadMole php5_mole 「D:/WAMP/PHP/php5apache2_2.dll」
PHPIniDir 「D:/WAMP/PHP」
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
DocumentRoot 「E:/WAMP/Apache/htdocs」
修改成(這里的路徑和IIS中wwwroot目錄一樣,用於存放網頁,自定義或不做修改默認):DocumentRoot 「D:/WAMP/www」
修改成(自定義或不做修改默認):
DirectoryIndex index.html
修改成:DirectoryIndex index.php default.php index.html index.htm default.html default.htm
3.測試
在D:/WAMP/www目錄下 建立個index.html頁面
在瀏覽器中輸入 http://localhost/
如果能正常顯示,Apache配置完畢,已經正常運行。
二、MySql安裝
版本解釋:The Essentials Package:不包含 embedded server and benchmark suite,有自動安裝程序和配置向導,沒有MySQL Documentation。
The Complete Package:包含 embedded server and benchmark suite,有自動安裝程序和配置向導,有MySQL Documentation。
The Noinstall Archive:包含 embedded server and benchmark suite,沒有自動安裝程序和配置向導,有MySQL Documentation。
選擇版本:mysql-essential-5.1.44-win32.msi
下載地址:http://www.mysql.com/downloads/mysql/
1.安裝說明:
打開安裝程序,單擊「next」
選擇custom,組件為默認選擇,我們不做改動-「next」
路徑設置為「D:\WAMP\Mysql」-「next」
安裝好以後點擊「finish」
跟著會出現一個配置向導-「next」
選擇「Detailed Configuration(詳細配置)」-「next」
這里有3個選項:
Developer Machine,將只用盡量少的內存;
Server Machine,將使用中等數量內存;
Dedicated MySQL Server Machine,這台伺服器上面只跑mysql資料庫,將佔用全部的內存。
可以根據自己需求選擇,這里我們選擇第二種「Server Machine」-「next」
選擇資料庫用途,同樣有3個選項:
Mutltifunctional Database多功能用途,將把資料庫優化成很好的innodb存儲類型和高效率的myisam存儲類型;
Transactional Database Only只用於事務處理類型,最好的優化innodb,但同時也支持myisam;
Non-Transactional Databse Only非事務處理類型,適合於簡單的應用,只有不支持事務的myisam類型是被支持的。
一般選擇第一種多功能的,同樣我們也是。-「next」
選擇InnodDB的數據存放位置,一般默認就行,為了統一我填寫了「WAMP/MySQL Datafiles」-「next」
選擇mysql允許的最大連接數,第一種是最大20個連接並發數,第二種是最大500個並發連接數,最後一種是自定義,自己可以根據需求選擇,我選擇第二個-「next」
下面是選擇資料庫監聽的埠,一般默認是3306,如果改成其他埠,以後連接資料庫的時候都要記住修改的埠,否則不能連接mysql資料庫,比較麻煩,這里不做修改,用mysq的默認埠:3306-「next」
這一步設置mysql的默認編碼,我們選擇第三個,並在Character Set菜單中,選擇「gbk」編碼-「next」
(註:如果要用原來資料庫的數據,最好能確定原來資料庫用的是什麼編碼,如果這里設置的編碼和原來資料庫數據的編碼不一致,在使用的時候可能會出現亂碼。)
這一步是是否要把mysql設置成windows的,一般選擇設成服務,這樣以後就可以通過服務中啟動和關閉mysql資料庫。下面的復選框也勾選上,這樣,在cmd模式下,不必非到mysql的bin目錄下執行命令。也就是把上下2個勾都打上,中間默認-「next」
這一步是設置mysql的超級用戶密碼,這個超級用戶非常重要,對mysql擁有全部的許可權,請設置好並牢記超級用戶的密碼,下面有個復選框是選擇是否允許遠程機器用root用戶連接到你的mysql伺服器上面,如果有這個需求,也請勾選。這里我們使用默認選擇,在New root password和Confirm中輸入密碼。「next」
點擊「execute」進行配置,稍微等待一會,圓點上的勾全部打上,就代表配置完畢。
2.修改配置:
打開D:\WAMP\MySQL\my.ini
設置datadir為D:/WAMP/MySQL/data/或你所要存放數據位置的目錄即可。
三、PHP安裝
版本解釋:VC9 專門為IIS定值的腳本,使用Visual Studio 2008編譯器編譯,支持最新的微軟組建,從而提高效率。
VC6 是為了其他WEB服務軟體提供的腳本 如 Apache。
Thread Safe 現成安全,之星時會進行線程 安全檢查,以防止有心要求就啟動新線程(Thread)的CGI執行方式而耗盡系統資源。
Non Thread Safe是非線程安全,在執行時不進行線程(Thread)安全檢查
選擇版本:PHP5.3(5.3.1)中VC6 x86 Thread Safe下 ZIP下載
下載地址:http://windows.php.net/download/
1.安裝說明
由於我們下載的的是ZIP壓縮包,只需要將文件解壓到「D:\WAMP\PHP」目錄下即可
2.修改配置
將E:\WAMP\PHP\php.ini-development 文件修改成php.ini
打開php.ini
; extension_dir = 「ext」
修改成:extension_dir = 「E:\WAMP\PHP\ext」
將947行下,這些文件前面的「;」去除
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_xmlrpc.dll
;date.timezone =
修改成(很多網站沒提到這里要修改,默認為美國時間,如果不修改會報錯):date.timezone = Asia/Shanghai
3.測試
重啟Apache(修改過配置文件 必須重啟Apache才會生效)
新建個index.php 頁面,代碼中輸入,保存文件放到「D:\WMAP\www\」目錄下
打開瀏覽器輸入:http://localhost/index.php 如果能正常顯示,說明PHP配置完畢,可以查看該頁面的PHP信息是否正確。
(註:在改文件中輸入函數可輸出大量的有關PHP當前狀態的信息,如PHP版本,伺服器信息和環境等。)
(註:)
接著我們測試下,是否能連接到Mysql
再新建個link.php,下代碼中輸入
$link=mysql_connect(「127.0.0.1″,」root」,」Mysql安裝時填寫的密碼」);
if(!$link) echo 「Mysql資料庫連接失敗!」;
else echo 「Mysql資料庫連接成功!」;
mysql_close();
?>
也保存文件放到「D:\WMAP\www\」目錄下
打開瀏覽器輸入:http://localhost/link.php 查看
四、PhpMyAdmin安裝
版本解釋:phpMyAdmin-3.2.5
選擇版本:phpMyAdmin-3.2.5-all-languages.zip
下載地址:http://www.phpmyadmin.net/home_page/downloads.php
1.安裝說明
解壓到D:\WAMP\phpMyAdmin
2.修改配置
打開D:\WAMP\phpMyAdmin\libraries\config.default.php
$cfg['PmaAbsoluteUri'] = 」;
修改成(填寫訪問phpMyAdmin的絕對URL):$cfg['PmaAbsoluteUri'] = 『http://localhost/PHPMyadmin/』;
$cfg['Servers'][$i]['host'] = 『localhost』;
修改成(填寫伺服器地址,通常默認,不需要修改):$cfg['Servers'][$i]['host'] = 『localhost』;
$cfg['Servers'][$i]['user'] = 『root』;
修改成(填寫Mysql用戶名,這里我們默認):$cfg['Servers'][$i]['user'] = 『root』;
$cfg['Servers'][$i]['password'] = 」;
修改成(填寫Mysql密碼):$cfg['Servers'][$i]['password'] = 『Mysql PWD;
$cfg['Servers'][$i]['auth_type'] = 『cookie』;
修改成(設置認證方法,安全因素考慮,填寫成cookie):$cfg['Servers'][$i]['auth_type'] = 『cookie』;
$cfg['blowfish_secret'] = 」;
修改成(設置短語密碼,如果上面設置成cookie,那這里不能留空,不然登陸會提示錯誤):$cfg['blowfish_secret'] = 『cookie』;
3.測試
打開瀏覽器輸入:http://localhost/phpmyadmin/ 訪問和登陸
五、結尾
至此Windows7下的PHP環境搭建完畢,大家盡情的使用吧。
⑨ 如何配置PHP的運行環境
php環境軟體建議用lnmp,也就是linux,nginx,mysql,php的這套組合。
linux伺服器能搭建網站,還比較好用。
用php面板就可以了。
是一類面板的統稱,不是具體某個面板的名字。這裡面有很多可以免費用的面板,不說牌子了免得被屏蔽,你可以去找找。
最好用可視化的面板,更適合你這樣的新手使用。