php rmdir使用遞歸函數刪除非空目錄的方法

php rmdir()函數php

 

rmdir ― 刪除空目錄算法

語法:安全

bool rmdir ( string $dirname [, resource $context ] )
嘗試刪除 dirname 所指定的目錄。 該目錄必須是空的,並且要有相應的權限。 失敗時會產生一個E_WARNING級別的錯誤。
參數:
1.dirname:目錄的路徑。 
2.context:在 PHP 5.0.0 中增長了對上下文(Context)的支持。函數

php rmdir()刪除非空目錄加密

上面已經說過,rmdir()函數只能刪除空目錄,若是是非空目錄就須要先進入到目錄中,使用unlink()函數將目錄中的每一個文件都刪除掉,再回來將這個空目錄刪除。若是目錄中還存在子目錄,並且目錄也非空,就須要使用遞歸的方法。自定義遞歸函數刪除目錄的源代碼以下:3d

<?php
function delDir($directory){//自定義函數遞歸的函數整個目錄
if(file_exists($directory)){//判斷目錄是否存在,若是不存在rmdir()函數會出錯
if($dir_handle=@opendir($directory)){//打開目錄返回目錄資源,並判斷是否成功
while($filename=readdir($dir_handle)){//遍歷目錄,讀出目錄中的文件或文件夾
if($filename!='.' && $filename!='..'){//必定要排除兩個特殊的目錄
$subFile=$directory."/".$filename;//將目錄下的文件與當前目錄相連
if(is_dir($subFile)){//若是是目錄條件則成了delDir($subFile);//遞歸調用本身刪除子目錄
}
if(is_file($subFile)){//若是是文件條件則成立unlink($subFile);//直接刪除這個文件
}
}
}
closedir($dir_handle);//關閉目錄資源
rmdir($directory);//刪除空目錄
}
}
}
delDir("mydir");//調用delDir函數
?>遞歸

<?php 
$password='testtest.com'; 
echo crypt($password); 
//輸出:$1$DZ3.QX2.$CQZ8I.OfeepKYrWp0oG8L1 
/*第二個$與第三個$之間的八個字符是由PHP生成的,每刷新一次就變一次 
*/ 
echo "<hr>"; 

echo crypt($password,"testtest"); 
//輸出:tesGeyALKYm3A 
//當咱們要加自定義的鹽值時,如例子中的testtest做爲第二個參數直接加入, 超出兩位字符的會截取前兩位 
echo "<hr>"; 

echo crypt($password,'$1$testtest$'); 
//輸出:$1$testtest$DsiRAWGTHiVH3O0HSHGoL1 
/*crypt加密函數有多種鹽值加密支持,以上例子展現的是MD5散列做爲鹽值,該方式下 
鹽值以$1$$的形式加入,如例子中的testtest加在後兩個$符之間, 
超出八位字符的會截取前八位,總長爲12位;crypt默認就是這種形式。 
*/ 
echo "<hr>"; 
//crypt還有多種鹽值加密支持,詳見手冊 

Sha1加密: 

string sha1 ( string $str [, bool $raw_output = false ]); //跟md5很像,不一樣的是sha1()默認狀況下返回40個字符的散列值,傳入參數性質同樣,第一個爲加密的字符串,第二個爲raw_output的布爾值,默認爲false,若是設置爲true,sha1()則會返回原始的20 位原始格式報文摘要 
<?php 
$my_intro="zhouxiaogang"; 
echo sha1($my_intro); // b6773e8c180c693d9f875bcf77c1202a243e8594 
echo "<hr>"; 
//固然,能夠將多種加密算法混合使用 
echo md5(sha1($my_intro)); 
//輸出:54818bd624d69ac9a139bf92251e381d 
//這種方式的雙重加密也能夠提升數據的安全性 
非對稱加密
非對稱加密算法須要兩個密鑰來進行加密和解密,這兩個祕鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰);
PHP中的多種加密技術及代碼示例解析
如圖所示,甲乙之間使用非對稱加密的方式完成了重要信息的安全傳輸。
乙方生成一對密鑰(公鑰和私鑰)並將公鑰向其它方公開。
獲得該公鑰的甲方使用該密鑰對機密信息進行加密後再發送給乙方。
乙方再用本身保存的另外一把專用密鑰(私鑰)對加密後的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密後的信息。
在傳輸過程當中,即便攻擊者截獲了傳輸的密文,並獲得了乙的公鑰,也沒法破解密文,由於只有乙的私鑰才能解密密文
一樣,若是乙要回復加密信息給甲,那麼須要甲先公佈甲的公鑰給乙用於加密,甲本身保存甲的私鑰用於解密。
在非對稱加密中使用的主要算法有:RSA、Elgamal、揹包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。 其中咱們最見的算法是RSA算法
如下是從網上摘抄的一段PHP經過openssl實現非對稱加密的算法md5

相關文章
相關標籤/搜索