• 欢迎访问苗景云的博客
PHPCMS V9 上传图片或附件后后台退出需要重新登录,经排查主要原因是phpcms v9用的是flash上传,而最新的浏览器都放弃了对Flash的支持,导致sessionid有所变动。我们可以使用H5进行图片和文件的上传。phpcms_h5_upload.rar
发布:苗景云 | 查看全文 | 浏览(6967) | 分类:IT技术&设计 | 评论(2) | 2021年06月19日
在phpcms 图片模型中虽然把pictureurls设置为推荐位调用,但是推荐位中还是不能使用,可以使用一下代码,注意第一个循环的loop要用$val{pc:content action="position" posid="1" num="12" order="listorder DESC"}       
发布:苗景云 | 查看全文 | 浏览(2136) | 分类:IT技术&设计 | 评论(0) | 2020年12月30日
首先打开phpcms/modules/content/fields/box/output.inc.php将case 'checkbox'和case 'multiple'中的if($_v) $string .= $option[$_v].' 、';替换为if($_v) $string .= $option[$_v].',';然后在模板代码中直接用下面的代码:<?php      
发布:苗景云 | 查看全文 | 浏览(2041) | 分类:IT技术&设计 | 评论(0) | 2020年12月17日

本篇文章已加密,请输入密码后查看。

发布:苗景云 | 查看全文 | 浏览(7184) | 分类:IT技术&设计 | 评论(1) | 2020年02月20日
phpcms之前发布的文章删除了之后,数据库的表字段中还是保存的有之前的文章中的关键词的,也就是删除文章并不能连带之前发布的文章的关键词一起删除,经过分析明白了,原来是程序在发布文章的那一刻文章就自动保存在了数据库的表中了,或者修改文章后,会重复在v9_keyword_data插入数据。那么该如何解决这个问题呢?办法如下:1、找到/phpcms/modules/content/fields/keyword/updata.inc.php中找到以下代码:$keyword_data_db->in
发布:苗景云 | 查看全文 | 浏览(2323) | 分类:IT技术&设计 | 评论(0) | 2019年11月13日
在常用的content封面、列表、内容模板中,我们都可以正常使用{siteurl($siteid)}来获取当前站点的网址,那么在tag模板、comment模板中这一调用不生效,其实是因为在tag和comment的控制器中,没有给模板传入$siteid参数,导致{siteurl($siteid)}调用无效。那么解决的方法就是:打开phpcms/moudules/content/tag.php,在其init函数和lists函数中开头部分加入如下代码:1 2 3 4 5 6//传入sitei
发布:苗景云 | 查看全文 | 浏览(2716) | 分类:IT技术&设计 | 评论(0) | 2019年11月13日
由于PHPCMS v9默认的编辑器中上传的视频插入的是embed标签使用的是flash播放器,手机端无法播放,所以来改造下,让其上传视频并插入HTML5的video标签,这样电脑端的主流浏览器和手机端能都播放,当然也可以参考本文修改进而支持ckplayer、cuplayer等播放器。修改步骤(为防止与其它按钮混淆和去除无用插件,这里去除了原编辑器中插入flash和视频的按钮):一、打开statics/js/ckeditor/config.js文件第16行,修改成如下代码:config.extra
发布:苗景云 | 查看全文 | 浏览(3173) | 分类:IT技术&设计 | 评论(2) | 2019年10月30日
phpsso.php注入漏洞修复 文件位置:/api/phpsso.php解决办法(Line 129):// 修改之前   $phpssouid = $arr['uid'];改为:// 修改之后   $phpssouid = intval($arr['uid']);phpcms/libs/classes/attachment.class.php某处逻辑
发布:苗景云 | 查看全文 | 浏览(2658) | 分类:IT技术&设计 | 评论(0) | 2019年07月10日
如下图所示功能:首先,用下面这些代码替换掉phpcms/libs/functions/extention.func.php的内容<?php /**  *  extention.func.php 用户自定义函数库  *  * @copyright(C) 2005-2010 PHPCMS  * @licensehttp://www.phpcms.cn/license/ &n
发布:苗景云 | 查看全文 | 浏览(2576) | 分类:IT技术&设计 | 评论(0) | 2019年04月09日

问题背景:

phpcms前台退出登录的时候,提示了一个退出成功0

让我很困惑为啥有个0呢?

 

问题分析:

进入

./phpcms/modules/member/index.php

找到logout方法,代码如下:

public function logout() {
        $setting = pc_base::load_config('system');
        //snda退出
        if($setting['snda_enable'] && param::get_cookie('_from')=='snda') {
            param::set_cookie('_from', '');
            $forward = isset($_GET['forward']) && trim($_GET['forward']) ? urlencode($_GET['forward']) : '';
            $logouturl = 'https://cas.sdo.com/cas/logout?url='.urlencode(APP_PATH.'index.php?m=member&c=index&a=logout&forward='.$forward);
            header('Location: '.$logouturl);
        } else {
            $synlogoutstr = '';    //同步退出js代码
            if(pc_base::load_config('system', 'phpsso')) {
                $this->_init_phpsso();
                $synlogoutstr = $this->client->ps_member_synlogout();           
            }
           
            param::set_cookie('auth', '');
            param::set_cookie('_userid', '');
            param::set_cookie('_username', '');
            param::set_cookie('_groupid', '');
            param::set_cookie('_nickname', '');
            param::set_cookie('cookietime', '');
            $forward = isset($_GET['forward']) && trim($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index&a=login';
            showmessage(L('logout_success').$synlogoutstr, $forward);//退出成功0
        }
    }

发布:苗景云 | 查看全文 | 浏览(2552) | 分类:IT技术&设计 | 评论(0) | 2018年11月25日
PHPCMS V9 实现下拉加载的方法,兼容手机端HTML部分<!--列表--><div id="lists">    <!--本示例显示所有最新文章,根据实际情况自行调整-->    {pc:get sql="SELECT * FROM `v9_news` where status
发布:苗景云 | 查看全文 | 浏览(3232) | 分类:IT技术&设计 | 评论(0) | 2018年10月24日

phpcms v9虽然广告模块设置禁止统计,但是还是会想数据库中写入很多V9_Poster_201810之类的数据表,导致数据库表太多,取消方法如下:


打开phpcms/modules/poster/index.php,找到

public function poster_click() 


注销以下代码:


if($id) {

$siteid = isset($_GET['siteid']) ? intval($_GET['siteid']) : get_siteid();

发布:苗景云 | 查看全文 | 浏览(1799) | 分类:IT技术&设计 | 评论(0) | 2018年10月23日

打开评论页面模板show_list.html

评论框头像显示方法,注意红色代码

 {if $userid}

  {php $meminfo=get_memberinfo_buyusername($username);$userimg=$meminfo['userid']}

发布:苗景云 | 查看全文 | 浏览(1826) | 分类:IT技术&设计 | 评论(0) | 2018年10月20日

因为网站更换域名了,做了301重定向,在网站后台修改了JS路径,CSS路径  IMG路径,
但是上传附件或图片时就出现了“服务器安全认证错误”,

在后台也没有修改的地方!
因为app_path没有修改,导致app_path的值跟前面几个值不一致。所以上传图片的时候,会提示“服务器安全认证错误”。

解决方法是通过修改“caches/configs/system.php”的app_path的路径。

发布:苗景云 | 查看全文 | 浏览(1777) | 分类:IT技术&设计 | 评论(0) | 2017年03月20日
百度站长平台开放url推送接口,可以使用调用接口的形式主动及时推送url给百度,下面演示在PHPCMS系统中如何使用接口自动推送URL到百度站长平台.在PHPCMS的libs/functions/global.func.php文件中添加一个百度推送函数:/**  * 百度站长平台链接推送  * @param $bdurls url数组  * @date 2015.8.8&nbs
发布:苗景云 | 查看全文 | 浏览(1840) | 分类:IT技术&设计 | 评论(0) | 2017年01月16日

解决的办法,在phpcms\libs\functions\extention.func.php(自定义函数文件)中定义一个方法

/**
 * 获取选项的格式化输出
 * @param str $field 字段名称 必须
 * @param int $value 字段值 必须
 * @param int $modelid 模型ID 必须
 * 2014-09-28 by awen
*/
function get_box($field, $value,$modelid) {
        $fields = getcache('model_field_'.$modelid,'model');
        extract(string2array($fields[$field]['setting']));
        if($outputtype) {
                return $value;
        } else {
                $options = explode("\n",$fields[$field]['options']);
                foreach($options as $_k) {
                        $v = explode("|",$_k);
                        $k = trim($v[1]);
                        $option[$k] = $v[0];
                }
                $string = '';
                switch($fields[$field]['boxtype']) {
                        case 'radio':
                                $string = $option[$value];
                        break;

                        case 'checkbox':
                                $value_arr = explode(',',$value);
                                foreach($value_arr as $_v) {
                                        if($_v) $string .= $option[$_v].' ';
                                }
                        break;

                        case 'select':
                                $string = $option[$value];
                        break;

                        case 'multiple':
                                $value_arr = explode(',',$value);
                                foreach($value_arr as $_v) {
                                        if($_v) $string .= $option[$_v].' ';
                                }
                        break;
                }
                return $string;
        }
}

这个是照内容输出页面的原理弄出来的,是系统的实现方式,安全可靠,只是把原来的、号分隔改成了空格,也可以加一个标签之类的,可以自己改。
前台使用
第一个是你的字段名称,第二个是你字段的值,就是输出的1、2、3,第三个是你所使用的模型iD
如楼盘特色字段名为‘lpts’,字段值为$r[lpts]这是loop循环得到的变量也可以是一个指定的你定义的值,第三个15是楼盘模型的ID
{get_box('lpts',$r[lpts],15)}
效果如下
 

发布:苗景云 | 查看全文 | 浏览(1789) | 分类:IT技术&设计 | 评论(0) | 2016年12月19日

首先我们注意的一个问题是,作为循环,if判断的条件不能是“==”,因为是“==”的话当走到5之后就永远不会符合条件了,所以第五个后面的就不会被显示了,我们可以用求余作为条件式来作为循环条件,例如第二个:

发布:苗景云 | 查看全文 | 浏览(1704) | 分类:IT技术&设计 | 评论(0) | 2016年11月23日

比如,我想在文章内容页,只显示年月日,不显示时分秒,按列表页用date函数会显示1970,找了很多方法,

后面看到化碟版主的,解决了,所以这里记录一下,直接用 $rs[inputtime] 就是输出了时间戳,然后用date来处理.

{date('M-d, Y',$rs[inputtime])}

另,还发现,date里,写M是显示英文的日期,m是数字。呵呵

发布:苗景云 | 查看全文 | 浏览(1640) | 分类:IT技术&设计 | 评论(0) | 2016年11月20日
« 之后的文章苗景云的博客
<< 向左走,向右走 >>
更早的文章 »