目录遍历:
实例
<?php /** * 目录遍历操作: * 1. 传统过程函数: opendir(),readdir(),closedir() * 2. 目录扫描器: scandir() */ /** * 第一种方法:传同目录函数 * 第一步:opendir('目录')打开目录,成功返回文件名,失败返回false * 第二步:readdir($dir)读取目录内容,成功返回文件名,失败返回false */ $dir=opendir('./upload') or die('打开失败'); while(false !=($file=readdir($dir))){ if($file !="." && $file !=".."){ print $file."<br>"; } } closedir($dir); echo '<hr>'; /** * 第二种方法呀 * 将目录的内容保存到数组中进行遍历 * 第一步:scandir($dir)将目录转数组中保存 * 第二步:遍历目录数组 */ $dirarr=scandir('./upload'); foreach ($dirarr as $file){ if($file !="." && $file !=".."){ echo "$file<br>"; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
文件上传
实例
<!-- 系统变量:$_FILES是一个二维数组,一维是当前文件上控件的名称,就是name属性值 二维就是它的当前属性,最重要的有以下几个: $_FILES['file']['name']:文件原始名称 $_FILES['file']['type']:文件类型 $_FILES['file']['size']:上传的文件大小 $_FILES['file']['tmp_name']:原服务器上的临时文件夹 $_FILES['fjle']['error']:上传错误代码 --> <!--$_SERVER['PHP_SELF']:当前php脚本--> <!--enctype="multipart/form-data":允许通过表单上传文件--> <!--method:请求类型必须是post--> <!-- 处理脚本的三种语法 1.最严格的写法:$_SERVER['PHP_SELF']:建议实际工作中用htmlspecialchars()进行防跨域攻击处理 2.最死板的写法:直接写上当前文件名:xxx.php 3.最懒的写法:空,即不写,默认就是提交到当前页面的php脚本处理 --> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>文件上传页面</title> </head> <body> <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="542488"> <fieldset> <legend>上传文件</legend> <p><strong>选择文件:</strong><input type="file" name="upload"></p> </fieldset> <p align="center"><button type="submit" name="submit">上传</button></p> </form> </body> </html> <?php /** * Created by PhpStorm. * User: 714326675 * Date: 2018/8/29 * Time: 16:23 */ //检测请求类型是否为post,false则输出请求类型不对 if($_SERVER['REQUEST_METHOD']=='POST'){ //检测文件是否存在 if(isset($_FILES['upload'])) { $allow=['image/jpg','image/gif','image/jpeg','image/png']; //检测文件是否是允许上传的类型 if (in_array($_FILES['upload']['type'],$allow)) { $file=$_FILES['upload']['tmp_name']; $newfile=$_FILES['upload']['name']; //将文件移动到临时目录 if(move_uploaded_file($file,"upload/{$newfile}")){ //成功 echo '<script>alert(\'文件上传成功\')</script>'; } }else{ //失败 echo '<script>alert(\'上传文件格式错误\')</script>'; } } //如果文件上传错误的处理 if($_FILES['upload']['error']>0){ echo '<p>错误的原因是:<strong>'; switch($_FILES['upload']['error']){ case 1: echo '文件超过了php.ini配置中设置的大小'; break; case 2: echo '文件超过了表单中常量设置的大小'; break; case 3: echo '仅有部分文件被上传'; break; case 4: echo '没有文件被上传'; break; case 6: echo '没有可用的临时文件夹'; break; case 7: echo '磁盘已满,写入失败'; break; case 8: echo '上传意外中止'; break; default: echo '系统未知错误'; break; } echo '</strong></p>'; //保险起见,最好把临时文件清除,当然系统也会在结束会话时自动清空 if(file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])){ unlink($_FILES['upload']['tmp_name']); } } }else{ echo '请求类型不对'; } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:
1.文件上传
系统变量:$_FILES是一个二维数组,一维是当前文件上控件的名称,就是name属性值
二维就是它的当前属性,最重要的有以下几个:
$_FILES['file']['name']:文件原始名称
$_FILES['file']['type']:文件类型
$_FILES['file']['size']:上传的文件大小
$_FILES['file']['tmp_name']:原服务器上的临时文件夹
$_FILES['fjle']['error']:上传错误代码
$_SERVER['PHP_SELF']:当前php脚本
enctype="multipart/form-data":允许通过表单上传文件
method:请求类型必须是post
2.目录遍历:
* 第一种方法:传同目录函数
* 第一步:opendir('目录')打开目录,成功返回文件名,失败返回false
* 第二步:readdir($dir)读取目录内容,成功返回文件名,失败返回false
* 第二种方法呀
* 将目录的内容保存到数组中进行遍历
* 第一步:scandir($dir)将目录转数组中保存
* 第二步:遍历目录数组