織夢、phpcms程序添加ftp://、thunder://、flashget:文件下載時,出錯的修復方法


我最近用PHP開源程序做了一個網站,發現添加ftp文件下載時會出錯,於是看了一下plus/download.php 逐段排除,最后發現是倒數第二行代碼出錯。

header("location:{$softUrl}");
exit();

我沒有系統學過PHP,所以不是很了解,搜索了一下,知道了header函數的在這里的作用,就是有來轉向的,又搜索了一下關於php header ftp 出錯網頁,找到了一個類似的問題http://topic.csdn.net/t/20060415/12/4688825.html

於是參考了他的做法,使用

echo " <META   HTTP-EQUIV=REFRESH   CONTENT= '0;URL={$softUrl} '>";

作為下載,但這時http://文件的又出錯,但ftp的可正常下載了,於是我結合兩者,做了一個判斷

if(preg_match("#^thunder:\/\/|^ftp:\/\/|^flashget:\/\/#i", $softUrl))
{
echo " <META   HTTP-EQUIV=REFRESH   CONTENT= '0;URL={$softUrl} '>";
exit();
}
header("location:{$softUrl}");
exit();

這樣經測試都可以下載了,如果有更好的方法的,歡迎大家交流一下,謝謝,本人是PHP的菜鳥中的菜鳥,有什么地方不對,歡迎指出。

phpcms v9也有似的問題,解決方法一樣:

找到文件modules/content/down.php

找到代碼:

        //遠程文件
        if(strpos($fileurl, ':/') && (strpos($fileurl, pc_base::load_config('system','upload_url')) === false)) { 
        header("Location: $fileurl");
        } else {
            if($d == 0) {
                header("Location: ".$fileurl);
            } else {
                $fileurl = str_replace(array(pc_base::load_config('system','upload_url'),'/'), array(pc_base::load_config('system','upload_path'),DIRECTORY_SEPARATOR), $fileurl);
                $filename = basename($fileurl);


修改為:

        //遠程文件
        if(strpos($fileurl, ':/') && (strpos($fileurl, pc_base::load_config('system','upload_url')) === false)) { 
            if(preg_match("#^thunder:\/\/|^ed2k:\/\/|^ftp:\/\/|^flashget:\/\/#i", $fileurl))
            {
            echo " <META   HTTP-EQUIV=REFRESH   CONTENT= '0;URL=$fileurl '>";
            exit();
            }
            header("location:$fileurl");
            exit();
          } else {
            if($d == 0) {
                header("Location: ".$fileurl);
            } else {
                $fileurl = str_replace(array(pc_base::load_config('system','upload_url'),'/'), array(pc_base::load_config('system','upload_path'),DIRECTORY_SEPARATOR), $fileurl);
                $filename = basename($fileurl);


即可解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM