PHP 用户目录


插件在 5.17 版本之后的 PHP 处理程序支持开箱即用的用户目录功能。该功能可以通过将 user_dirs 选项设为 true 启动(位于 index.php 文件):

<?php
// ...
$upload_handler = new UploadHandler(array(
    'user_dirs' => true
));

默认情况下,上传处理程序使用 session id 作为用户目录名。

你也可以通过重写 get_user_id 函数,从而按照你自己想要的规则进行命名:

<?php
require('UploadHandler.php');

class CustomUploadHandler extends UploadHandler {
    protected function get_user_id() {
        @session_start();
        return session_id();
    }
}

$upload_handler = new CustomUploadHandler(array(
    'user_dirs' => true
));

PHP session id 通常情况下都是无规律可循的。同时,为了增加安全性,我们可以设为仅允许通过 PHP 提供文件下载。为此,可以将选项 download_via_php 设置为 true:

<?php
// ...
$upload_handler = new UploadHandler(array(
    'download_via_php' => true
));

下一步,通过 .htaccess 规则限制 files 目录不可被访问(删掉 .htaccess 文件末尾以下几行的注释):

AuthName "Authorization required"
AuthType Basic
require valid-user