幸运28彩票

  • <tr id='pePAnR'><strong id='pePAnR'></strong><small id='pePAnR'></small><button id='pePAnR'></button><li id='pePAnR'><noscript id='pePAnR'><big id='pePAnR'></big><dt id='pePAnR'></dt></noscript></li></tr><ol id='pePAnR'><option id='pePAnR'><table id='pePAnR'><blockquote id='pePAnR'><tbody id='pePAnR'></tbody></blockquote></table></option></ol><u id='pePAnR'></u><kbd id='pePAnR'><kbd id='pePAnR'></kbd></kbd>

    <code id='pePAnR'><strong id='pePAnR'></strong></code>

    <fieldset id='pePAnR'></fieldset>
          <span id='pePAnR'></span>

              <ins id='pePAnR'></ins>
              <acronym id='pePAnR'><em id='pePAnR'></em><td id='pePAnR'><div id='pePAnR'></div></td></acronym><address id='pePAnR'><big id='pePAnR'><big id='pePAnR'></big><legend id='pePAnR'></legend></big></address>

              <i id='pePAnR'><div id='pePAnR'><ins id='pePAnR'></ins></div></i>
              <i id='pePAnR'></i>
            1. <dl id='pePAnR'></dl>
              1. <blockquote id='pePAnR'><q id='pePAnR'><noscript id='pePAnR'></noscript><dt id='pePAnR'></dt></q></blockquote><noframes id='pePAnR'><i id='pePAnR'></i>
                加入vip [签到送金币]
                注册 登录 QQ登录
                织梦无忧,用心做好源码!7年品牌,值得信赖! 织梦无忧,个个精品,宁缺毋滥!每月购买不少〖于3000元精品源码免费分享,早开通,早享受!终身会员临时大促,只需要128元!新会员开通,直接进入ζ 会员中心--购买会员--直接开ζ 通即可。

                织梦DEDECMS二次开发的一些经验之谈

                摘要: 如果您想从此贴直接获得一些有用的插件、模块、或代码,请绕道~~ 授人以鱼还是授人以渔,此贴是后者,希望对你有所帮助 * 提示:如果你是PHP编程有比较深入经验了,请只读红字内容即可,其它跳过。 如果你是PHP初学者,请仔细阅读所有文字,别嫌繁琐,对你提
                如果您想从此贴直接获得一些有用的插件、模块、或代码,请绕道~~ “授人以鱼”还是“授人以渔”,此贴是后者,希望对你有所帮助…… * 提示:如果你是PHP编程有比较深入经验了,请只读红字内容即可,其它跳过。 如果你是PHP初学者,请仔细阅读所有文字,别嫌繁琐,对你提高有「好处!     1、执行header()前输出的空格、空行、任何字符,都会导致header()跳转失效!    前几天,帮一个客户做了一些修改,把代码发给对方之后,对方后来反映说“后台栏目查看文章列表不行了”,我去查看果真如此,点击了栏目后面的“内容”进去,一片空白!这一点我当时百思▆不得其解,因为我做修改的代码,和这个功能完全没有关系!于是不得已,只好一步╲步做跟踪调试:      首先要排查的是语法错误(如果当php.ini里设置是不显示任①何错误的话,语法错也会导致一片空白),这个文件是dede/catalog_do.php(怎么知道是这个文件呢,很简单,在那个一片空白的页面上,点右键,看属性,就有地址URL和传№递的参数),我把一行die("aa"); 放在了代码第一行,这个做法就可以测试有无语法,因为语法错不单可以发生在catalog_do.php文件本身,还可以发生在 catalog_do.php文件所引用的文件里(包括这些文件里再引用的任何一级文件里),所以如※果这个第一行die("aa"); 也不能执行,就必然是语法错。因为能输出aa,也就是说语法没有︾错,就必定是某种程序上的逻辑错。       然后进一步寻找逻辑错误发生的文件,这就需要跟踪代码的所执行到的地方,由于没有任何提示,也还是利用die("aa"); ,把这一行往下挪到catalog_do.php文件的include、require等语句々之后,如果不能执行,说明在include、require 所引用的文件里,代码执行就停止了,反之说明那些文件执行是正常的。这一步,依然能显示aa,说明错误是发生在catalog_do.php文件里(如果是发生在其他所引用的文件里,就用此法打开那些文件去如是调试)       然后再⊙此文件里一步步寻找发生错误的具体代码段,首先要看□链接此文件时候的参数(在那个一片空白的页面上,点右键,看属性,就有地址URL和传递的参数),而点击“内容”时链接此文件的URL为 catalog_do.php?cid=3&dopost=listArchives(它的意思,我们可以猜测它cid是栏目ID,而最←重要的是 dopost=listArchives这个参数,因为我们在catalog_do.php文件里,可以看到接下来的代码,就是一连串的if (dopost=="...."){   }else if(dopost=="...."){  }else.....的判断,它就是让程序运行,根据过来【的dopost=参数的不同,进入不同的处理),好,我们就直接找到if (dopost=="listArchives"){ 这里,把die("aa"); 放到紧接着它的第一行,看看还能否输出aa,如果可↓以输出,说明程序正确进入了目标程序段,否则就说明dopost=="listArchives"这个判断没有达到预期的效果(如果是这个情况,你就要好〖好对照刚才的URL和这个dopost=="listArchives",有没有写错参数名、大小写有『没有弄错了,还有就是dopost值有没有在前面就被改变了,最常见的错就是类似写成了dopost=="listarchives",或者在前头某个判断里写成了dopost="..."),好,依然能输出aa,说明⌒ 程序也进来这里了。        然后继续寻找发生错误的代码行,继续挪动die("aa"); 的玉步,每次挪动完,刷新那个空白页面,看看能否输☆出aa(这里有技巧,想快,就不要逐行挪动,而是利用折半查找,或者在关键代码前后插入,这个就需要比较强的代码阅读能力和一定的编程经验了,不展开了),最后,我发现在header("location:{$gurl}?channelid= {$channelid}&cid={$cid}"); 这一行之前能ㄨ输出aa,这一行之后也能输出aa,而我是很清楚,这一行本该跳转到某个指定的页面上的,后面不应该输出aa,同时我也知♂道造成这个问题,通常是因为程序执行在之前就输出过字符(如果你不◥清楚,就查google或手册)!        接下来的工作,就是找哪个文件有这个输出了,天啊,这太难找了!于是我换了另外一个做法“修改排查法”,我在本地把我那些修改的代码,也换上去,发现没有出现这样的问题,也就是说,我写的文件没有问题。然后我把客户所有文件〗,都列出来,按修改时间排序,并询问了客户最后可以正常使用这个功能的时间,发现了一堆在此时间之后修改的php文件,除去我修改的那些文件,就剩下两个文件了,其中一个是include/extend.func.php文件,我很清楚这个文件是一个dede提供给客户做函数扩展的文件,它被 common.func.php所引用,而common.func.php又是被全站所有文件所引用的文件!  于是我打开这个文件,赫然在最后?>之后,有两个空格一个空行!!!!!!        把这些空格空行删除,至此功能就全部正常了(包括我在模块表里自定义了一个模块链接,它在这个错误的情况下,不能显示在模块列表里,现在也正常了)!      以上文字,对于初级PHPer,可以学习领会一点点PHP调试技术;对于PHP已经比较熟的,而对DEDE还有□ 有点陌生的,这里提∮供的一条经验就是:修改DEDE的所有PHP文件,千万不要在头尾两行的 <?  ?>之外,写入任何字符,包括空格和空行!!   

                本文链接:/g61cg2/dedecmsjiaocheng/chengxukaifa/152557.html

                版权声明:本站资源均来自互联网或会员发布,如果侵犯了您的权益请与我们联系,我们将在24小时内▓删除!谢谢!

                公众号二维码

                微信公众号

                //自动推送