Yii认证函数
?preg_match
<?php // 第一個參數:規則 // 第二個參數:輸入的字符 // 第三個參數:匹配結果 ? 0為全部 ?1為匹配好的 preg_match('@^(?:http://)?([^/]+)@i',"http://www.php.net/index.html", $matches);var_dump($matches[0]); echo '<br>'; var_dump($matches[1]); echo '<br>'; var_dump($matches);// string(18) "http://www.php.net" ? ?0為全部的 // string(11) "www.php.net" ? ? ? ? ? 1為匹配好的 // array(2) { [0]=> string(18) "http://www.php.net" [1]=> string(11) "www.php.net" }Password Hashing API
password_hash
password_hash ( string $password , integer $algo [, array $options ]) 它有三個參數:密碼、哈希算法、選項,前兩項為必須的; <?php$pwd = "123456"; $hash = password_hash($pwd, PASSWORD_DEFAULT); echo $hash;password_verify
<?php // 驗證密碼是否與散列匹配 $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';if (password_verify('rasmuslerdorf', $hash)) {echo 'Password is valid!'; } else {echo 'Invalid password.'; }// Password is valid!password_get_info
查看哈希值的相關信息
password_needs_rehash
檢查一個hash值是否是使用特定算法及選項創建的
sumup
password_hash只能用password_verify來校驗? 比較單一
md5的話? 可以選擇用其他來進行 md5加鹽值? 來進行加密驗證
crypt
<?php // crypt(str,salt) $password = 'mypassword'; // 獲取散列值,使用自動鹽值 $hash = crypt($password);var_dump($hash); // string(34) "$1$E/5.774.$dQzg/VOkS.nQTgiF1H/Fd1"從兩幅運行結果圖可以發現,刷新之后生成的加密結果都不相同; 而我們也知道crypt()函數是單向函數,密文不可以還原成明文; 且每次加密后的數據都不相同,這就是salt參數要解決的問題。 判斷::: crypt()函數用salt參數對明文進行加密,判斷時,對輸出的信息再次使用相同的salt參數進行加密,對比兩次加密后結果的判斷。?
總結