【问题标题】:Disable replacing spaces to dashes when upload file [Wordpress]上传文件时禁用将空格替换为破折号 [Wordpress]
【发布时间】:2017-10-19 07:20:01
【问题描述】:

在上传文件时,有什么方法可以禁止在 Wordpress 中将空格替换为破折号? 我有 mp3 文件的网站,例如我有文件:

"Author - Track Title (Original Mix).mp3" 并在上传后转换为

"Author-Track-Title-(Original-Mix).mp3"

我知道这是出于安全原因,但是在其他网站上,当您下载文件时,可以使用正常文件名下载文件,而无需 DASHES。如何解决?

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    wordpress 中的空格被替换,因为某些应用程序无法打开它们,例如旧 XP 和可能的其他应用程序,并且它们在 url 中无效。

    有时您会遇到反斜杠问题,这通常取决于阻止代码注入攻击的安全性。

    作为一种解决方案,您可以从“Make wordpress Core”网站尝试这个解决方案 - 但这在更新 wordpress 时总是会失败!!!

    if ( '' == $url )
                     return $url;
            $url = str_replace(' ', '%20', $url);
         $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
             if ( 0 !== stripos( $url, 'mailto:' ) ) {
                     $strip = array('%0d', '%0a', '%0D', '%0A');
                     $url = _deep_replace($strip, $url);
             }
    
             $url = str_replace(';//', '://', $url);
             /* If the URL doesn't appear to contain a scheme, we
              * presume it needs http:// appended (unless a relative
    

    来源:https://core.trac.wordpress.org/attachment/ticket/23605/23605.diff

    【讨论】:

      【解决方案2】:

      您应该永远不要在您的系统中包含不安全的网址,永远。奇怪的情况会出现在文件“神奇地”不存在、文件名函数行为怪异、URL 变得更难创建等情况下。
      TL;DR:不要那样做

      当用户上传文件时,将文件名转换为安全的 URL,同时将原始文件名存储在您的数据库中。然后,当您将其呈现给用户时,您可以将下载的标题/文件名设置为该存储名称,而在内部您有一个不错的安全 url。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多