查看: 6|回复: 0

phpcms v9升级后台无法上传缩略图的原因分析

[复制链接]

主题

帖子

5

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5
发表于 2024-9-30 14:22:25 | 显示全部楼层 |阅读模式
phpcms V9 是目前国内使用人数最多的一款开源免费的CMS系统,正是由于他的免费性,开源性,以及其自身的功能性比较强大,所以倍受许多站长朋友们的亲来,以及许多的公司的喜欢。phpcms也为了完善程序漏洞,官方人员会经常性的发布一些程序补丁,让用户使用。防止一些特殊群体,通过程序的漏洞去攻击别人的网站。不过这次更新了phpcms v9之后,发现网站后台上传缩略图的时候,会出现无法上传的现象,浏览器提示undefined错误,经过一方面的测试,发现这个错误,只有一些火狐核心的浏览器才会出现,IE,360这种的IE核心浏览器上传一切正常。这是什么原因造成的呢,我们通过程序去排查一下为何后台无法上传缩略图,并出现undefined的错误。 


    一、phpcms V9 后台无法上传缩略图的处理方法

    首先打开网站程序路径中的,phpcms---modules----attachment----attachments.php文件,找到attachments.php文件中的50行---53行代码,这里有一段判断是否登录的程序,我们把这段话删掉就可以了。如图所示
   


    通过删除非常简单的一段话,就能解决类似火狐核心的浏览器,后台无法上传缩略图的错误。接下来我们详细分析为什么这句话,就会导致后台无法上传缩略图呢,以后如果大家遇到程序上面的错误,也可以通过下面的方法去分析,一定要学会灵活使用,程序都是死的,而我们程序员的思维是灵活的。

    注:如果您对为何会出现无法上传缩略图错误不感兴趣,以下内容均可略过不看!

    二、phpcms V9 后台无法上传缩略图的原因分析

    既然知道是这句话的原因了,那么我们就看看为何是这句话导致了无法上传缩略图。

    if(isset($_POST['dosubmit'])){ //判断是否点击了提交按钮

    //判断是否登录

    if(empty($this-userid)){ //如果useid为空,则直接退出。($this指类本身,是由attachments类在构造函数制定的。)

    exit('0');

    }

    既然是判断了userid为空就退出,那我们无法上传缩略图,肯定是被判断为空了。我们把$this-userid输出一下看看。


    从图中可以看出,这里输出的是1,也就是说$this-userid是为1的,1肯定不是空值了。那怎么会出现退出现象了呢。我们再换一个方法测试,看看

    if(empty($this-userid)){

    exit('0');

    }

    这句话是否执行了。

    //判断是否登录

    if(empty($this-userid)){

    echo '';

    exit('0');

    } else{

    echo '';

    }

    如图所示:


    我们看到,程序确实执行了,跳出的动作。看来火狐核心的浏览器还是把1当成了empty来处理,所以导致了,phpcms V9在使用火狐核心的浏览器时,后台无法上传缩略图的现象。\

    济南网站建设
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|设计之巅

Powered by Discuz! X3.4 © 2001-2012 Discuz Team.

GMT+8, 2024-11-24 17:05 , Processed in 0.034040 second(s), 20 queries .

快速回复 返回顶部 返回列表