分类 代码 下的文章

<?php
function tree($directory)
{
    $mydir = dir($directory);
    echo "<ul>";
    while ($file = $mydir->read()) {
        if ($file == "." || $file == "..") {
            continue;
        }
        if (is_dir("$directory/$file")) {
            echo "<li><font color='blue'><b>$file/</b></font></li>";
            tree("$directory/$file");
        } else {
            echo "<li>$file</li>";
        }
    }
    echo "</ul>";
    $mydir->close();
}

echo "<h2>目录为蓝色</h2>";
tree(".");

压缩文件夹

因为打算使用php打包目录, 网上搜了搜现成的代码, 基本无用, 才写一下

<?php

function files($directory, &$fileList = [])
{
    $mydir = dir($directory);
    while ($file = $mydir->read()) {
        if ($file == "." || $file == "..") {
            continue;
        }
        if (is_dir("$directory/$file")) {
            files("$directory/$file", $fileList);
        } else {
            $fileList[] = $mydir->path . "/" . $file;
        }
    }
    $mydir->close();
    return $fileList;
}

function packageZip($dir, $savePath = null)
{
    if (!is_dir($dir)) {
        echo '<font style="color: red;">' . $dir . '不是一个目录</font>';
        return;
    }
    $savePath = empty($savePath) ? $dir . date("Y-m-d") . '.zip' : $savePath;
    $zip = new ZipArchive;
    is_file($savePath) ? unlink($savePath) : '';
    $res = $zip->open($savePath, ZipArchive::CREATE);
    if ($res === TRUE) {
        foreach (files($dir) as $item) {
            $zip->addFile($item);
        }
        $zip->close();
    }
}

packageZip('wuloves');

<?php
php header() 常用content-type
//定义编码
header( 'Content-Type:text/html;charset=utf-8 ');

//Atom
header('Content-type: application/atom+xml');

//CSS
header('Content-type: text/css');

//Javascript
header('Content-type: text/javascript');

//JPEG Image
header('Content-type: image/jpeg');

//JSON
header('Content-type: application/json');

//PDF
header('Content-type: application/pdf');

//RSS
header('Content-Type: application/rss+xml; charset=ISO-8859-1');

//Text (Plain)
header('Content-type: text/plain');

//XML
header('Content-type: text/xml');

// ok
header('HTTP/1.1 200 OK');

//设置一个404头:
header('HTTP/1.1 404 Not Found');

// 请求频繁 429:
header('HTTP/1.1 429 Too Many Requests');

//设置地址被永久的重定向
header('HTTP/1.1 301 Moved Permanently');

//转到一个新地址
header('Location: http://www.example.org/');

//文件延迟转向:
header('Refresh: 10; url=http://www.example.org/');
print 'You will be redirected in 10 seconds';

//当然,也可以使用html语法实现
// <meta http-equiv="refresh" content="10;http://www.example.org/ />

// override X-Powered-By: PHP:
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: Brain/0.6b');

//文档语言
header('Content-language: en');

//告诉浏览器最后一次修改时间
$time = time() - 60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');

//告诉浏览器文档内容没有发生改变
header('HTTP/1.1 304 Not Modified');

//设置内容长度
header('Content-Length: 1234');

//设置为一个下载类型
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('example.zip');

// 对当前文档禁用缓存
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');

//设置内容类型:
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain'); //纯文本格式
header('Content-Type: image/jpeg'); //JPG***
header('Content-Type: application/zip'); // ZIP文件
header('Content-Type: application/pdf'); // PDF文件
header('Content-Type: audio/mpeg'); // 音频文件
header('Content-Type: application/x-shockw**e-flash'); //Flash动画

//显示登陆对话框
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or ';
print 'enters wrong login data';

// 下载xlsx文件
$filename = rtrim($_SERVER['DOCUMENT_ROOT'],'/').'/app/files/payment_status.csv';  
header('Content-Disposition: attachment; filename=payment_status.xlsx');  
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');  
header('Content-Length: ' . filesize($filename));  
header('Content-Transfer-Encoding: binary');  
header('Cache-Control: must-revalidate');  
header('Pragma: public');  
readfile($filename);  

业务场景说明

  1. 比如扒人家的站点, 图片相对地址一个个的扒很不方便, 通过301重定向简单配置一下可以实现当图片没有下载到对应的相对位置时, 会自动重定向下载
  2. vue容器环境下, 每次发布新版本时, 保证缓存老代码的用户访问不会出现404js文件, 可以考虑一台机器用于存放这部分的js文件

保存到文件 auto_download_image.php

<?php
$host301 = "https://static.zennioptical.com" ;
if ($_SERVER["REQUEST_URI"]=='/' || substr( $_SERVER["REQUEST_URI"] ,strripos($_SERVER["REQUEST_URI"] , "/") )==str_replace(".","",substr( $_SERVER["REQUEST_URI"] ,strripos($_SERVER["REQUEST_URI"] , "/") ))  ){
    header("HTTP/1.1 404 Forbidden");
    echo $_SERVER["REQUEST_URI"] ;
    echo "<hr><a href='https://test.templete.com/b/all-glasses/_/category.html'>https://test.templete.com/b/all-glasses/_/category.html</a> ";
    echo "<hr><a href='https://www.zennioptical.com" . $_SERVER["REQUEST_URI"] . "' target='_blank'>https://www.zennioptical.com" . $_SERVER["REQUEST_URI"] . "</a> ";
    exit ;
}
if ( stripos($_SERVER["REQUEST_URI"] , "?") ){
    $file_url = $host301. substr( $_SERVER["REQUEST_URI"] , 0 ,stripos($_SERVER["REQUEST_URI"] , "?") )   ;
}else{
    $file_url = $host301. $_SERVER["REQUEST_URI"] ;
}
function SaveFileFromUrl($link) {
    echo $link ;
    $file_link = str_replace("//" ,"" , $link) ;
    $file_link = substr($file_link , stripos($file_link,"/")+1 ) ;
    $folder_link = substr($file_link , 0 ,strripos($file_link,"/")+1) ;
    $ch = curl_init ($link);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $img = curl_exec ($ch);
    curl_close ($ch);

//     $fp = fopen($image_name,'w'); // 下载图片到根目录

    if ( $img ){
        if (!is_dir($folder_link)) mkdir($folder_link , 0777 , true); // 如果不存在则创建
        $fp = fopen($file_link,'wb'); //下载图片到指定文件夹
        fwrite($fp, $img);
        fclose($fp);
//    header("HTTP/1.1 404 Forbidden");
        Header("HTTP/1.1 302 Moved Permanently");
        Header("Location: /" . $file_link );
    }else {
        echo "error" ;
    }


}
SaveFileFromUrl($file_url);

在静态文件目录下保存一个 .htaccess 文件

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ ../auto_download_image.php [L]
</IfModule>