博客列表 >PHP目录遍历_文件上传与检测_2018年8月28日

PHP目录遍历_文件上传与检测_2018年8月28日

宋超的博客
宋超的博客原创
2018年08月31日 00:20:45763浏览

实例

<?php
/**
 * 文件或目录相关的系统常量
 */
echo __FILE__ ,'<br>';
//1.获取文件名 带扩展名
echo '文件名', basename(__FILE__),'<br>';
echo '文件名', filesize(__FILE__),'<br>';

//2.获取目录名
echo '目录名:', dirname(__FILE__),'<br>';
//php5.3+,直接使用魔术常量__DIR__
echo __DIR__,'<br><hr><pre>';

//3.pathinfo(),将文件名,目录名,扩展名解析到一个数组中
$pathinfo = pathinfo(__FILE__);
print_r($pathinfo);
echo '目录名:',$pathinfo['dirname'],'<br>';
echo '文件名:',$pathinfo['basename'],'<br>';
echo '扩展名:',$pathinfo['extension'],'<br><hr>';

//DIRECTORY_SEPARATOR 根据系统平台自动变化 返回正/反\斜线 正斜杠,符号是"/";反斜杠,符号是"\"。
//正斜杠,符号是"/";反斜杠,符号是"\"。
//  "../ "   表示当前目录的上级目录,即当前的父目录;
//  "/"      表示网站的根目录;
echo DIRECTORY_SEPARATOR;

$path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__);
echo $path;

运行实例 »

点击 "运行实例" 按钮查看在线实例

1.目录遍历实例

<?php
/**
 * 文件或目录相关的系统常量
 */
echo __FILE__ ,'<br>';
//1.获取文件名 带扩展名
echo '文件名', basename(__FILE__),'<br>';
echo '文件名', filesize(__FILE__),'<br>';

//2.获取目录名
echo '目录名:', dirname(__FILE__),'<br>';
//php5.3+,直接使用魔术常量__DIR__
echo __DIR__,'<br><hr><pre>';

//3.pathinfo(),将文件名,目录名,扩展名解析到一个数组中
$pathinfo = pathinfo(__FILE__);
print_r($pathinfo);
echo '目录名:',$pathinfo['dirname'],'<br>';
echo '文件名:',$pathinfo['basename'],'<br>';
echo '扩展名:',$pathinfo['extension'],'<br><hr>';

//DIRECTORY_SEPARATOR 根据系统平台自动变化 返回正/反\斜线 正斜杠,符号是"/";反斜杠,符号是"\"。
//正斜杠,符号是"/";反斜杠,符号是"\"。
//  "../ "   表示当前目录的上级目录,即当前的父目录;
//  "/"      表示网站的根目录;
echo DIRECTORY_SEPARATOR;

$path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__);
echo $path;

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.上传图片实例

<!--
 * 系统变量:$_FILES是一个二维数组,一维是当前的文件上传控件的名称,也就是name属性值
 * 二维是它的当前属性,最重要有以下几个:
 *$_FILES['file']['name']:文件原始文件名称
 * $_FILES['file']['type']:文件类型
 * $_FILES['file']['size']:上传文件大小
 * $_FILES['file']['tmp_name']:服务器上的临时文件夹
 * $_FILES['file']['error']:上传错误代码
 */
//$_SERVER['PHP_SELF']:当前PHP脚本
//enctype="multipart/form-data":允许通过表单上传文件
//method:请求类型必需是POST
处理脚本的三种语法:
1. 最严格的写法:$_SERVER['PHP_SELF']:建议实际工作中用htmlspecialchars()进行防跨域攻击处理
2. 最死板的写法,直接写上当前文件名: demo6.php
3. 最懒的写法: 空,啥与不写,默认就是提交到当前页面的php脚本处理
-->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SEIF']); ?>" method="POST" enctype="multipart/form-data">
    <fieldset>
        <legend align="center">文件上传</legend>
        <strong>选择文件:</strong><input type="file" name="upload">
    </fieldset>
    <button style="border-radius: 5px; width: 80px;height:25px; margin-top: 8px;box-shadow: 2px 2px 2px;background-color:#efefef;" type="submit" name="submit">上传</button>
</form>
<?php
//检测类型是不是POST
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        if(isset($_FILES['upload']['type']) && !empty($_FILES['upload']['name'])){
//            允许上传类型
            $uptype = ['image/jpg','image/jpeg','image/png'];

            if(in_array($_FILES['upload']['type'], $uptype)){
//                将文件移动到临时目录
                if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")){
                    //upload  success
                    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 "<script> alert('没有文件上传')</script>";
                    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 '11';
    }
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

  1. 对文件和目录的建立、修改、删除操作。

  2. 使用表单制作一个简单的文件上传页面。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议