标签 源码 下的文章

PHP 遍历目录实例

做文件管理的基础设施建设吧,嗯……反正还是打到打不开的思路来的。
这里为了后续方便,忽略了本目录.的显示,然后对于根目录不显示上一级的..

            $num = 0;    // 统计子目录和文件个数
            $problem = FALSE;
            $fileList = [];

            if (!empty($_GET['route'])) 
                $dirname = $_GET['route'];
            else 
                $dirname = 'upload';

            $dir_handle = @opendir($dirname);

            if (!file_exists($dirname)) 
                echo "<script>window.location.href='"."index.php';</script>";
            
            if (!$problem) {
                while ($file = readdir($dir_handle)) {
                    $dirFile = $dirname.'/'.$file;
                    if ($dirname == 'upload' && $file != '.' && $file != '..') {
                        $fileList[$num] = array('file' => $file, 'filesize' => filesize($dirFile), 'filetype' => filetype($dirFile), 'filemtime' => date('Y/n/t',filemtime($dirFile)));
                        if (is_dir($dirFile)) {
                            $fileList[$num]['filesize'] = '';
                        }
                        $num++;
                    } elseif ($dirname != 'upload' && $file != '.') {
                        $fileList[$num] = array('file' => $file, 'filesize' => filesize($dirFile), 'filetype' => filetype($dirFile), 'filemtime' => date('Y/n/t',filemtime($dirFile)));
                        if (is_dir($dirFile)) {
                            $fileList[$num]['filesize'] = '';
                        }
                        $num++;
                    }
                }
            }

            /*
            // 统计文件夹大小
            function dirSize($dir) {
                $dir_size = 0;

                if ($dirhandle = @opendir($dir)) {
                    while ($filename = readdir($dirhandle)) {
                        if ($filename != '.' && $filename != '..') {
                            $subFile = $dir.'/'.$filename;
                            if(is_dir($subFile)) 
                                $dir_size += dirSize($subFile);
                            if(is_file($subFile)) 
                                $dir_size += filesize($subFile);
                        }
                    }
                    closedir($dirhandle);
                    echo 'Hello';
                    return $dir_size;
                }
            }
            */

            @closedir($dir_handle);
            return $fileList;

PHP 文件上传类实例

=A=其实是书上扒下来的,我觉得自己写一定会死=A=

这种高危产品不搞演示了,拆开来说一下好了。(个人理解,说不定有误)

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="route" value="<?php echo $route ?>">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000">
    <input type="file" name="myfile">
    <input type="submit" value="上传文件">
</form>    

- 阅读剩余部分 -

curl获取QQ头像并缓存

这是M-Show中用到的一个最神奇的东西,其实我至今还是不会用,只是网上找到了类似的改了一下,顺便伪造来路这样防盗链机制就失效了=A=

演示

演示部分不包括缓存,所以载入会慢,为了良好的载入速度和不吃CPU(小新说的),缓存非常有必要,缓存的方法其实就是存到本地,判断是否已经获取,缓存完毕的重定向到本地的位置就好了=A=

- 阅读剩余部分 -

PHP 计算两个文件的相对路径

没错这是我目前的得意之作之一,还特地写了CSS,虽然不怎么好……
所谓使尽浑身解数……

打了草稿,嗯虽然估计过会儿我自己都要看不懂了。(思路,{}的部分在写下来之后发现了共同点就合并了)

删除 . 和空白数组
比较相同元素,到不同时中断 统计b还有多少元素 不同元素的多少决定了..个数 按序输出不同元素
count数组中元素的大小,取小的那一个作为比较次数 比较一个元素删除一个元素
{如果比完完全符合 则如果b小 返回a剩余元素 b大 返回差集数组计算元素数返回../数
如果不完全符合,则b剩余元素替换为..后加上a剩余元素}
b剩余元素变为../后输出a剩余元素
如果输入文件名a/..

演示

为了找相对路径规律还写了不同的……

- 阅读剩余部分 -

PHP检查IP是否在指定范围内

题目如下:

输出用户的IP地址,并且判断用户的IP地址是否在192.168.1.100~192.168.1.150范围内。

当时想出了两种方法,一种把字符串按照.来拆分成数组,一个个范围比较,一种去掉点之后比较数字大小,可是后者有个问题,要是他们的IP地址不符合格式怎么办,还是得变成数组,所以就干脆用了前者。

演示

- 阅读剩余部分 -