LifeType 中文開發論壇

開發 => 核心補強 => 主題作者是: alpha 於 五月 25, 2005, 10:51:14 下午



主題: 对Plog上传文件的修订
作者: alpha五月 25, 2005, 10:51:14 下午
Plog里面对上传文件采用的是“除非禁止否则就允许”的策略、、这样可能有弊端、、所以我进行了修改、、改为“除非允许否则就禁止”
就改动了一个文件、、
\class\data\validator\uploadvalidator.class.php

程式碼:

<?php

include_once&
#40; PLOG_CLASS_PATH."class/data/validator/validator.class.php" &#41;;
include_once&#40; PLOG_CLASS_PATH."class/config/config.class.php" &#41;;
    
include_once&#40; PLOG_CLASS_PATH."class/misc/glob.class.php" &#41;;

define&#40; "UPLOAD_MAX_SIZE", 2000000 &#41;;

    
define&#40; "UPLOAD_VALIDATOR_ERROR_UPLOAD_TOO_BIG", -1 &#41;;
    
define&#40; "UPLOAD_VALIDATOR_ERROR_FORBIDDEN_EXTENSION", -2 &#41;;

/**
 * \ingroup Validator
 *
     * Given a FileUpload object, checks that it is not bigger than the maximum size allowed
     * and that it does not have one of the forbidden extensions.
     *
     * The maximum size allowed is controlled via the 'maximum_file_upload_size' configuration setting 
     * and the list of forbidden extensions can be configured via the upload_forbidde_files configuration
     * setting.
     *
     * If the validation is unsuccessful, the error codes UPLOAD_VALIDATOR_ERROR_UPLOAD_TOO_BIG or 
     * UPLOAD_VALIDATOR_ERROR_FORBIDDEN_EXTENSION will be set.
     */
class UploadValidator extends Validator 
&
#123;

        /**
         * Constructor. Initializes the rule.
         */
    
function UploadValidator&#40;&#41;
        
&#123;
        
$this->Validator&#40;&#41;;
        
&#125;

    
/**
         * Returns true if the file is a valid upload, after making it go through all
         * our tests.
         *
         * @param upload An FileUpload object containing information about the file
         * @return Returns true if it is valid or a negative value meaning an error otherwise&#58;
         * <ul><li>ERROR_UPLOAD_TOO_BIG &#40;-1&#41;&#58; The file bigger than the maximum allowed size</li>
         * <li>ERROR_FORBIDDEN_EXTENSION&#58; The file has a forbidden extension.</li></ul>
         */
    
function validate&#40; $upload &#41;
        
&#123;
        
$config =& Config&#58;&#58;getConfig&#40;&#41;;

            
$forbiddenFilesStr $config->getValue&#40; "upload_forbidden_files" &#41;;
            
$maxUploadSize     $config->getValue&#40; "maximum_file_upload_size" &#41;;

// check if we received an object of the right type, or else just quit
if&#40; $upload == null &#41; &#123;
return false;
&#125;

            // first of all, check the size
            
if&#40; $maxUploadSize != 0 && $upload->getSize&#40;&#41; > $maxUploadSize &#41; &#123;
            
return UPLOAD_VALIDATOR_ERROR_UPLOAD_TOO_BIG;
            &
#125;

            // return true if there's nothing to do
            
if&#40; empty&#40;$forbiddenFilesStr&#41; || !$forbiddenFilesStr &#41;
            
//return true;
            
return UPLOAD_VALIDATOR_ERROR_FORBIDDEN_EXTENSION;

            
// check if the filename extension is forbidden or not
            
$fileName basename&#40;$upload->getFileName&#40;&#41;&#41;;
            
foreach&#40; explode&#40; " ", $forbiddenFilesStr &#41; as $file &#41; &#123;
            
if&#40; Glob&#58;&#58;myFnmatch&#40; $file, $fileName &#41;&#41; &#123;
                
//return UPLOAD_VALIDATOR_ERROR_FORBIDDEN_EXTENSION;
                
return true;
                &
#125;
            
&#125;

        
return UPLOAD_VALIDATOR_ERROR_FORBIDDEN_EXTENSION;
        
//return false;//return true;
        
&#125;
    
&#125;
?>



把上面的代码覆盖同名文件就可以了、、
不过千万要注意一点:要把模板文件夹包括的文件类型添加到允许上传列表、否则上传模板会出现“模板中有文件禁止访问”的错误、、这个错误折腾了我好久、


主題: 对Plog上传文件的修订
作者: lss五月 25, 2005, 11:11:09 下午
hi alpha:

你能到 bugs.lifetype.net 提出這個修正嗎?也許開發團隊會考慮加入官方版本裡面,這樣,就不必每回更新版本便得自己動手修改一次。


主題: 对Plog上传文件的修订
作者: alpha五月 25, 2005, 11:27:51 下午
引用自: lss
hi alpha:

你能到 bugs.lifetype.net 提出這個修正嗎?也許開發團隊會考慮加入官方版本裡面,這樣,就不必每回更新版本便得自己動手修改一次。


英语太差了、、表达不出来、、你去说吧 :-)


主題: 对Plog上传文件的修订
作者: lss五月 26, 2005, 07:16:14 上午
引用自: alpha

英语太差了、、表达不出来、、你去说吧 :-)


別客氣了,我的英文也不好,儘量表達清楚就行了。   ;-)


主題: 对Plog上传文件的修订
作者: alpha五月 26, 2005, 05:54:27 下午
引用自: lss
引用自: alpha

英语太差了、、表达不出来、、你去说吧 :-)


別客氣了,我的英文也不好,儘量表達清楚就行了。   ;-)


已经说了、、不过不知道有没有人能看明白、


主題: 对Plog上传文件的修订
作者: lss五月 26, 2005, 08:05:08 下午
引用自: alpha
已经说了、、不过不知道有没有人能看明白、

hi alpha:

Oscar 已經回應了哦,他考慮在 1.1 版加上去呢!趕快去看看!

感覺如何?以後如果有發現 bug 或有任何 patch …,幫忙上 Mantis 彙報囉!


主題: 对Plog上传文件的修订
作者: alpha五月 28, 2005, 01:41:32 下午
引用自: lss
引用自: alpha
已经说了、、不过不知道有没有人能看明白、

hi alpha:

Oscar 已經回應了哦,他考慮在 1.1 版加上去呢!趕快去看看!

感覺如何?以後如果有發現 bug 或有任何 patch …,幫忙上 Mantis 彙報囉!

我收到系统给我的mail了、、他们反应确实比较快、、我还有个想法、把summary的欢迎内容做到数据库里面、然后管理员可以在后台添加欢迎内容、这样就不用每次都去改文件了、、 :-D  :-D


主題: 对Plog上传文件的修订
作者: markwu五月 30, 2005, 11:43:12 上午
Hi alpha:

其實,下次如果有patch ,你可以直接放到 bugs.lifetype.net.

我們只要看到,也覺得合理,就會把它 patch 上去。

Mark