PHP教學系列(九)-字串
(八)字串加密
一般常用的加密法有DES和MD5加密,這兩種加密法算是較安全的加密技術,在PHP有內建幾種加密的函式,可快速的對資料進行DES或MD5…等類型加密。
加密法名稱 | 函式 | 說明 |
---|---|---|
DES加密法 | crypt(字串,加密暗碼) | 使用後會將字串,以DES編碼輸出。 |
MD5加密法 | MD5(字串) | 使用後會將字串,以MD5雜湊值輸出。 |
sha1加密法 | sha1(字串) | 使用後會將字串,以sha1雜湊值輸出。 |
加密範例:
實際範例:example-9-1.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php //原密碼字串 $o_password="aaa1234"; //DES加密 echo "DES加密:".crypt($o_password)."<br>"; //MD5加密 echo "MD5加密:".md5($o_password)."<br>"; //sha1加密 echo "sha-1加密:".sha1($o_password)."<br>"; ?> |
驗證密碼
現在的加密法通常為不可還原,且演算法複雜。只能透過程式去比對驗證密碼。
1.DES加密法密碼驗證:
實際範例:example-9-2.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<form action="" name="pd" method="POST"> 密碼:<input name="password" type="password" id="password"> <input type="submit" name="Submit" value="驗證密碼" > </form> <?php //假如表單傳送"密碼"參數存在且密碼不等於空 if(isset($_POST["password"])&& $_POST["password"]!=""){ $en_pass=crypt("aaaa1234"); //原密碼DES加密=crypt("原密碼") $intput_pd=$_POST["password"]; //將表單傳送的密碼存入 $intput_pd if (crypt($intput_pd,$en_pass)==$en_pass){ echo "驗證通過"; } else { echo "驗證失敗"; } } ?> |
2.MD5加密法驗證
實際範例:example-9-3.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
MD5加密法驗證 <form action="" name="pd" method="POST"> 密碼:<input name="password" type="password" id="password"> <input type="submit" name="Submit" value="驗證密碼" > </form> <?php //假如表單傳送"密碼"參數存在且密碼不等於空 if(isset($_POST["password"])&& $_POST["password"]!=""){ $en_pass=md5("aaaa1234"); //原密碼md5加密=md5("原密碼") $intput_pd=$_POST["password"]; //將表單傳送的密碼存入 $intput_pd if (md5($intput_pd)==$en_pass){ echo "驗證通過<br>"; } else { echo "驗證失敗<br>"; } } ?> |
3.sha1加密法驗證
實際範例:example-9-4.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<form action="" name="pd" method="POST"> 密碼:<input name="password" type="password" id="password"> <input type="submit" name="Submit" value="驗證密碼" > </form> <?php //假如表單傳送"密碼"參數存在且密碼不等於空 if(isset($_POST["password"])&& $_POST["password"]!=""){ $en_pass=sha1("aaaa1234"); //原密碼sha1加密=sha1("原密碼") $intput_pd=$_POST["password"]; //將表單傳送的密碼存入 $intput_pd if (sha1($intput_pd)==$en_pass){ echo "驗證通過<br>"; } else { echo "驗證失敗<br>"; } } ?> |
(九)正規表示式
說明:可用來快速搜尋正確又符合條件的資訊或用來驗證格式,例如:日期、電話、E-mail…等。
格式:
/正規表示式/
基本規則:
(1).允許的字元
只允許包含abcd字元。
/[abcd]/
(2).不允許的字元
字串內不允許出現e、f、g字元。
/[^efg]/
正規表示式:
格式 | 說明 |
---|---|
[a-z] | 字串符合小寫英文字母。 |
[A-Z] | 字串符合大寫英文字母。 |
[a-zA-Z] | 字串符合大小寫英文字母。 |
[0-9] | 字串符合所有數字。 |
[abc] | 字串只允許由符合的字元組成。 |
[^efg] | 字串內不允許出現的字元。 |
[u4e00-u9fa5] | 字串符合中文字元。 |
正規表示式特殊代稱:
格式 | 說明 |
---|---|
\s | 表示空白字元。 |
\S | 表示非空白字元。 |
\d | 表示所有數字。 同 [0-9] |
\D | 表示非數字。 |
\w | 表示所有字母和數字。[a-zA-Z0-9] |
\W | 表示所有非字母和數字。 |
正規表示式起始、結尾、萬用字元:
格式 | 說明 |
---|---|
^字元^[允許的字元] | 檢查起始字元。 |
字元$[允許的字元]$ | 檢查結尾字元。 |
. | 表示萬用字元。 |
範例:
/[abc]/ 只允許字串使用a、b、c字母組成。
/[^efg]/ 不允許字串使用e、f、g字母。
/[a-z]/ 允許字串使用全部小寫英文字母。
/[a-zA-Z0-9]/ 允許使用全部英文字母和數字。
d{5} 需有指定數量的字元,最少要有5個d。
^a 起始字元一定要是a。
^[abcd] 起始字元可以是a、b、c、d。
e$ 結束字元一定要是e。
[efgh] 結束字元可以是e、f、g、h。
/^C.t$/ 表示起始字元為大寫C,結尾為小寫t,中間可以是任意字元。 (Cat 、Count…)
常見的檢查格式:
1.檢查附檔名(為txt或doc):
/^([a-zA-Z0-9]\.(txt|doc))$/
2.檢查電子郵件
/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/
3.檢查行動電話號碼
/^\d{4}-\d{3}-\d{3}$/
4.檢查HTML標籤
/<(.*)>.*<\/\1>|<(.*) \/>/
5.檢查日期(MM/DD/YYYY)
/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/
正規表示式函式:
1.preg_match() 正規表示法檢查格式:
格式:
preg_match(正規表示式格式,字串,符合結果)
範例:
實際範例:example-9-5.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<form action="" name="pd" method="POST"> 驗證電子郵件:<input name="ver" type="text" id="ver"> <input type="submit" name="Submit" value="驗證格式" > </form> <?php //驗證電子郵件 $ver_str=$_POST["ver"]; $mail="/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/"; if(preg_match($mail,$ver_str,$match_str)){ echo "電子郵件格式驗證成功,輸入的內容:".$match_str[0]."<br>"; } else { echo "電子郵件格式驗證失敗!!"; } ?> |
2.preg_replace() 正規表示法字串取代
格式:
preg_replace(正規表示法格式,取代內容,字串)
範例:
實際範例:example-9-6.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $str = "hello php world."; echo $str."<br>"; //將空白字串(\s)取代成連結符號(-) $str = preg_replace('/\s/','-',$str); echo $str; //顯示 hello-php-world ?> |
感謝您的閱讀,請用力地分享讓大家知道吧~~
很抱歉,此文章關閉留言
谢谢分享,有空来坐坐!
有些内容确实不错,值得玩味