出现的问题
关于运算符??
php中两个问号是php7新推出的一个NULL合并运算符??
如果它存在且不为NULL,则返回其第一个操作数;
否则,返回其第二个操作数。
从左到右评估。NULL合并运算符也可以链形式使用。
例如:
$a = null; var_dump($a??1);
输出1
如果$a = 0; var_dump($a??1);
输出0
如果是空字符串,输出也是空字符串。
黑名单、白名单、类型 过滤
1 2 3 4 5
| $name=$_FILES['f']['name']; $type=$_FILES['f']['type']; $size=$_FILES['f']['size']; $tmp_name=$_FILES['f']['tmp_name']; $error=$_FILES['f']['error'];
|
黑名单机制:
1 2 3 4 5 6 7 8 9 10
| $black_ext=array('php','asp','jsp','aspx');
$fenge = explode('.',$name); $exts = end($fenge); if(in_array($exts,$black_ext)){ echo '非法后缀文件'.$exts; }else{ move_uploaded_file($tmp_name,'upload/'.$name); echo '<script>alert("上传成功")</script>'; }
|
白名单机制:
1 2 3 4 5 6 7 8 9 10
| $allow_ext=array('png','jpg','gif','jpeg');
$fenge = explode('.',$name); $exts = end($fenge); if(!in_array($exts,$allow_ext)){ echo '非法后缀文件'.$exts; }else{ move_uploaded_file($tmp_name,'upload/'.$name); echo '<script>alert("上传成功")</script>'; }
|
MIME文件类型过滤:
1 2 3 4 5 6 7
| $allow_type=array('image/png','image/jpg','image/jpeg','image/gif'); if(!in_array($type,$allow_type)){ echo '非法后缀文件'; }else{ move_uploaded_file($tmp_name,'upload/'.$name); echo '<script>alert("上传成功")</script>'; }
|
文件管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文件列表</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <style type="text/css"> ul { list-style: none; padding: 0; margin: 0; } li { margin-bottom: 10px; } i { margin-right: 10px; } a { text-decoration: none; color: #333; } </style> </head> <body> <h1>当前目录下的文件列表</h1> <ul>
</ul> </body> </html>
<?php $dir = $_GET['path'] ?? './';
//1.打开目录,读取文件列表 opendir //2.循环读取文件列表 while readdir //3.判断是文件还是文件夹 is_dir
//打开目录,读取文件列表 opendir function filelist($dir){ if($dh = opendir($dir)){ //循环读取文件列表 while readdir while(($file=readdir($dh) )!== false){ //判断是文件还是文件夹 is_dir if(is_dir($file)){ echo "<li><i class='fa fa-folder'></i> <a href='?path=$file'>" . $file . '</a></li>'; }else{ echo '<li><i class="fa fa-file"></i> <a href="#">' . $file . '</a></li>'; } } } }
filelist($dir);
function del($file){ if(!is_dir($file)){ unlink($file); echo "<script>alert('删除成功')</script>"; } }
if(isset($_GET['del'])){ del($_GET['del']); }
function down($filepath){ $fileName = basename($filepath); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"" . $fileName . "\""); header("Content-Length: " . filesize($filepath)); readfile($filepath); }
if(isset($_GET['down'])){ down($_GET['down']); } ?>
|