Correction status:qualified
Teacher's comments:
上传文件:
<!-- 系统变量: $_FILES是一个二维数组,一维是当前的文件上件控件的名称,就是name属性值 二维是它的当前属性,最重要的有以下几个: $_FILES['file']['name']: 文件原始名称 $_FILES['file']['type']: 文件类型 $_FILES['file']['size']: 上传的文件大小 $_FILES['file']['tmp_name']: 服务器上的临时文件夹 $_FILES['file']['error']: 上传错误代码 --> <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data"> <input type="file" name="upload"> <p><button type="submit">上传</button></p> </form> <?php // 检测请求类型是否POST if($_SERVER['REQUEST_METHOD'] == 'POST') { //检测是否有文件被上传 if (isset($_FILES['upload'])) { //设置上传的文件类型 $file = ['image/png', 'image/jpg', 'image/jpeg']; // 判断类型是否相同 if (in_array($_FILES['upload']['type'], $file)) { // 判断目录是否存在,不存在则建立目录 if (@opendir('upload')) { // 文件保存的目录 if (move_uploaded_file($_FILES['upload']['tmp_name'], "upload/{$_FILES['upload']['name']}")) { // 上传成功 echo "<script>alert('文件上传成功')</script>"; } else { // 上传失败 echo "<script>alert('文件上传失败')</script>"; } } else { mkdir('upload'); echo "目录不存在,正在创建目录..."; } } // 上传错误处理 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; 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"; } } ?>
点击 "运行实例" 按钮查看在线实例
目录遍历:
<?php // 目录遍历 /** * 第一种方式: 传统目录函数 * * 第一步: opendir('目录')打开目录,成功返回资源,失败返回false * 第二步: readdir($dir)读取目录内容,成功返回文件名,失败返回false * 第三步: closedir($dir)关闭当前目录 * */ $dir = opendir('../test'); echo '目录存在','<br>'; $file = readdir($dir); if ($file) { if ($file != "." && $file != "..") { print $file."<br>"; } } closedir($dir); echo "目录已关闭",'<hr>'; /** * 第二种方式:将目录内容保存到数组中进行遍历 * 第一步:scandir($dir)将目录转数组中保存 * 第二步:遍历目录数组 */ $arr = scandir('../test'); foreach ($arr as $file) { if ($file != "." && $file != "..") { echo "$file<br>"; } }
点击 "运行实例" 按钮查看在线实例
总结:
1.opendir('目录') 打开目录,成功返回资源,失败返回false
2.readdir($dir) 读取目录内容,世功返回文件名,失败返回false
3.closedir($dir) 关闭当前目录
4.表达 action 中加入 htmlspecialchars($_SERVER['PHP_SELF']) 可以防止js脚本注入
5.$_SERVER['REQUEST_METHOD'] 判断提交类型get/post
6.系统变量: $_FILES是一个二维数组,一维是当前的文件上件控件的名称,就是name属性值,二维是它的当前属性