帝国CMS实现/d/file/附件图片目录与网站分离实现远程附件
时间:2023年10月19日
/来源:网络
/编辑:佚名
大家都知道,帝国cms功能强大,但是远程附件功能只有在商业版本中才有,商业版本的价格对于个人开发者来说难以接受,这里78模板网和大家分享一下帝国cms实现远程附件的方法。
第一步、
打开e\class\connect.php搜索 if($link)
162行左右
在上面添加:eDoPostFileServer();
第二步、
打开e\class\connect.php搜索//--------------- 公共 ---------------
169行左右
在上面添加:
//--------------- 远程发布 ---------------
//远程附件发布
function eDoPostFileServer(){
global $efileftp,$efileftp_fr,$efileftp_dr,$public_r;
if(emptyempty($public_r['openfileserver'])||!($efileftp_fr[0]||$efileftp_dr[0]))
{
return '';
}
if(!defined('InEmpireCMSFtp'))
{
include(ECMS_PATH.'e/class/ftp.php');
}
$pr=ReturnPostFtpInfo(1);
$efileftp=new EmpireCMSFTP();
$efileftp->fconnect($pr['ftphost'],$pr['ftpport'],$pr['ftpusername'],$pr['ftppassword'],$pr['ftppath'],$pr['ftpssl'],$pr['ftppasv'],$pr['ftpmode'],$pr['ftpouttime']);
$basepath=$pr['ftppath'].'/';
if($efileftp_fr[0])
{
$path=ReturnPostFtpFilePath(ReturnPostFtpFilename($efileftp_fr[0]));
$efileftp->ftp_mkdirs($basepath,$path);
$count=count($efileftp_fr);
for($i=0;$i<$count;$i++)
{
$lfile=$efileftp_fr[$i];
$hfile=$basepath.ReturnPostFtpFilename($efileftp_fr[$i]);
$efileftp->fTranFile($hfile,$lfile,0,0);
}
}
if($efileftp_dr[0])
{
$dcount=count($efileftp_dr);
for($di=0;$di<$dcount;$di++)
{
$dhfile=$basepath.ReturnPostFtpFilename($efileftp_dr[$di]);
$efileftp->fDelFile($dhfile);
}
}
$efileftp->fExit();
}
//返回发布FTP信息
function ReturnPostFtpInfo($pid){
global $empire,$dbtbpre;
$r=$empire->fetch1("select * from {$dbtbpre}enewspostserver where pid='$pid'");
return $r;
}
//返回远程实际文件地址
function ReturnPostFtpFilename($file){
$file=str_replace(ECMS_PATH,'',$file);
$file=str_replace('../','',$file);
$file=str_replace('d/file/','',$file);
return $file;
}
//返回远程实际目录
function ReturnPostFtpFilePath($file){
$r=explode('/',$file);
$count=count($r)-1;
$path=substr($file,0,strlen($file)-strlen($r[$count])-1);
return $path;
}
第三步、
打开e\admin\SetEnews.php搜索<tbody id="setfileserver" style="display:none">
1117行左右
将:
<tbody id="setfileserver" style="display:none">
</tbody>
<tr>
<td height="25" colspan="2" class="header">远程附件设置</td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">启用远程附件</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="openfileserver" value="1"<?=$r['openfileserver']==1?' checked':''?> onclick="setfileserver.style.display='';">
是
<input type="radio" name="openfileserver" value="0"<?=$r['openfileserver']==0?' checked':''?> onclick="setfileserver.style.display='none';">
否 </td>
</tr>
<tbody id="setfileserver" style="display:none">
<tr>
<td height="25" bgcolor="#FFFFFF">启用 SSL 连接</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftpssl" value="1"<?=$fsr[ftpssl]==1?' checked':''?>>
是
<input type="radio" name="fs_ftpssl" value="0"<?=$fsr[ftpssl]==0?' checked':''?>>
否 </td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">被动模式(pasv)连接</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftppasv" value="1"<?=$fsr[ftppasv]==1?' checked':''?>>
是
<input type="radio" name="fs_ftppasv" value="0"<?=$fsr[ftppasv]==0?' checked':''?>>
否 </td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP服务器地址</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftphost" type="text" id="fs_ftphost" value="<?=$fsr[ftphost]?>" size="38">
端口:
<input name="fs_ftpport" type="text" id="fs_ftpport" value="<?=$fsr[ftpport]?>" size="4"></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP用户名</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftpusername" type="text" id="fs_ftpusername" value="<?=$fsr[ftpusername]?>" size="38">
</td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP密码</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftppassword" type="password" id="fs_ftppassword" size="38">
<font color="#666666">(不修改密码请留空) </font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">传送模式</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftpmode" value="1"<?=$fsr[ftpmode]==1?' checked':''?>>
ASCII
<input type="radio" name="fs_ftpmode" value="0"<?=$fsr[ftpmode]==0?' checked':''?>>
二进制</td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP 传输超时时间</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftpouttime" type="text" id="fs_ftpouttime" value="<?=$fsr[ftpouttime]?>" size="38">
秒<font color="#666666">(0为服务器默认)</font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">远程附件目录</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftppath" type="text" id="fs_ftppath" value="<?=$fsr[ftppath]?>" size="38">
<font color="#666666">(目录结尾不要加斜杠“/”,空为根目录)</font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">远程访问地址</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_purl" type="text" id="fs_purl" value="<?=$fsr[purl]?>" size="38">
<font color="#666666">(结尾需加“/”,如:http://file.phome.net/)</font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">测试FTP服务器</td>
<td height="25" bgcolor="#FFFFFF"><input type="submit" name="Submit3" value="测试FTP服务器" onClick="document.form1.enews.value='CheckFileServerFtp';document.form1.action='SetEnews.php';document.form1.target='checkftpiframe';"> <font color="#666666">(无需保存设置即可测试,请在测试通过后再保存)</font>
</td>
</tr>
</tbody>
第一步、
打开e\class\connect.php搜索 if($link)
162行左右
在上面添加:eDoPostFileServer();
第二步、
打开e\class\connect.php搜索//--------------- 公共 ---------------
169行左右
在上面添加:
//--------------- 远程发布 ---------------
//远程附件发布
function eDoPostFileServer(){
global $efileftp,$efileftp_fr,$efileftp_dr,$public_r;
if(emptyempty($public_r['openfileserver'])||!($efileftp_fr[0]||$efileftp_dr[0]))
{
return '';
}
if(!defined('InEmpireCMSFtp'))
{
include(ECMS_PATH.'e/class/ftp.php');
}
$pr=ReturnPostFtpInfo(1);
$efileftp=new EmpireCMSFTP();
$efileftp->fconnect($pr['ftphost'],$pr['ftpport'],$pr['ftpusername'],$pr['ftppassword'],$pr['ftppath'],$pr['ftpssl'],$pr['ftppasv'],$pr['ftpmode'],$pr['ftpouttime']);
$basepath=$pr['ftppath'].'/';
if($efileftp_fr[0])
{
$path=ReturnPostFtpFilePath(ReturnPostFtpFilename($efileftp_fr[0]));
$efileftp->ftp_mkdirs($basepath,$path);
$count=count($efileftp_fr);
for($i=0;$i<$count;$i++)
{
$lfile=$efileftp_fr[$i];
$hfile=$basepath.ReturnPostFtpFilename($efileftp_fr[$i]);
$efileftp->fTranFile($hfile,$lfile,0,0);
}
}
if($efileftp_dr[0])
{
$dcount=count($efileftp_dr);
for($di=0;$di<$dcount;$di++)
{
$dhfile=$basepath.ReturnPostFtpFilename($efileftp_dr[$di]);
$efileftp->fDelFile($dhfile);
}
}
$efileftp->fExit();
}
//返回发布FTP信息
function ReturnPostFtpInfo($pid){
global $empire,$dbtbpre;
$r=$empire->fetch1("select * from {$dbtbpre}enewspostserver where pid='$pid'");
return $r;
}
//返回远程实际文件地址
function ReturnPostFtpFilename($file){
$file=str_replace(ECMS_PATH,'',$file);
$file=str_replace('../','',$file);
$file=str_replace('d/file/','',$file);
return $file;
}
//返回远程实际目录
function ReturnPostFtpFilePath($file){
$r=explode('/',$file);
$count=count($r)-1;
$path=substr($file,0,strlen($file)-strlen($r[$count])-1);
return $path;
}
第三步、
打开e\admin\SetEnews.php搜索<tbody id="setfileserver" style="display:none">
1117行左右
将:
<tbody id="setfileserver" style="display:none">
</tbody>
<tr>
<td height="25" colspan="2" class="header">远程附件设置</td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">启用远程附件</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="openfileserver" value="1"<?=$r['openfileserver']==1?' checked':''?> onclick="setfileserver.style.display='';">
是
<input type="radio" name="openfileserver" value="0"<?=$r['openfileserver']==0?' checked':''?> onclick="setfileserver.style.display='none';">
否 </td>
</tr>
<tbody id="setfileserver" style="display:none">
<tr>
<td height="25" bgcolor="#FFFFFF">启用 SSL 连接</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftpssl" value="1"<?=$fsr[ftpssl]==1?' checked':''?>>
是
<input type="radio" name="fs_ftpssl" value="0"<?=$fsr[ftpssl]==0?' checked':''?>>
否 </td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">被动模式(pasv)连接</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftppasv" value="1"<?=$fsr[ftppasv]==1?' checked':''?>>
是
<input type="radio" name="fs_ftppasv" value="0"<?=$fsr[ftppasv]==0?' checked':''?>>
否 </td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP服务器地址</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftphost" type="text" id="fs_ftphost" value="<?=$fsr[ftphost]?>" size="38">
端口:
<input name="fs_ftpport" type="text" id="fs_ftpport" value="<?=$fsr[ftpport]?>" size="4"></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP用户名</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftpusername" type="text" id="fs_ftpusername" value="<?=$fsr[ftpusername]?>" size="38">
</td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP密码</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftppassword" type="password" id="fs_ftppassword" size="38">
<font color="#666666">(不修改密码请留空) </font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">传送模式</td>
<td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftpmode" value="1"<?=$fsr[ftpmode]==1?' checked':''?>>
ASCII
<input type="radio" name="fs_ftpmode" value="0"<?=$fsr[ftpmode]==0?' checked':''?>>
二进制</td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">FTP 传输超时时间</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftpouttime" type="text" id="fs_ftpouttime" value="<?=$fsr[ftpouttime]?>" size="38">
秒<font color="#666666">(0为服务器默认)</font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">远程附件目录</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_ftppath" type="text" id="fs_ftppath" value="<?=$fsr[ftppath]?>" size="38">
<font color="#666666">(目录结尾不要加斜杠“/”,空为根目录)</font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">远程访问地址</td>
<td height="25" bgcolor="#FFFFFF"><input name="fs_purl" type="text" id="fs_purl" value="<?=$fsr[purl]?>" size="38">
<font color="#666666">(结尾需加“/”,如:http://file.phome.net/)</font></td>
</tr>
<tr>
<td height="25" bgcolor="#FFFFFF">测试FTP服务器</td>
<td height="25" bgcolor="#FFFFFF"><input type="submit" name="Submit3" value="测试FTP服务器" onClick="document.form1.enews.value='CheckFileServerFtp';document.form1.action='SetEnews.php';document.form1.target='checkftpiframe';"> <font color="#666666">(无需保存设置即可测试,请在测试通过后再保存)</font>
</td>
</tr>
</tbody>
新闻资讯 更多
- 【帝国cms教程】帝国CMS模板变量$GLOBALS[navclassid]用法分析04-03
- 【帝国cms教程】鲜为人知帝国CMS内容页调用上一篇和下一篇的精华方法汇总04-03
- 【帝国cms教程】怎么快速找出帝国CMS数据库配置文件路径及迁移网站后修改技巧!04-03
- 【帝国cms教程】帝国CMS模板$GLOBALS[navclassid]用法详解04-03
- 【帝国cms教程】帝国cms 7.5版列表页分页样式修改笔记04-02
- 【帝国cms教程】解决帝国CMS搜索页面模板不支持灵动标签和万能标签的方法04-02
- 【帝国cms教程】帝国CMS只备份栏目和模板的方法04-02
- 【帝国cms教程】帝国CMS怎样删除清空数据库记录?04-02
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法