织梦、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);


即可解决

原文地址:https://www.cnblogs.com/wangchunming/p/2592922.html