Archive for the ‘代码调试’ Category

站外JS调用

Sunday, September 28th, 2008

调用外站JS很可能导致页面加入延迟,甚至出错(不能正常连通),能用静态调用就静态调用(比如文字链接)!

升级Hdwiki4.0遇到的俩问题

Saturday, August 23rd, 2008

第一个问题:从"Form"获取的字符非得经历从gbk转到utf-8或者从utf-8转到gbk一次吗? hdwiki4.0版本(8.21发布)的 string.class.php中的字符编码转换函数 function hiconv($str,$to='',$from='') { global $encoding; if(empty($to))$to=$encoding; if(empty($from)){ if( strtolower($encoding)=='gbk' ){$from='utf-8';}else{$from='gbk';} } $to=strtolower($to); $from=strtolower($from); $isutf8=preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $str ); if( $isutf8 && $to=='utf-8' ) return $str; if( !$isutf8 && $to=='gbk' ) return $str; require_once('Chinese.class.php'); $ch = new chinese($from,$to); $str= $ch->convert($str); return $str; } 为啥   if( strtolower($encoding)=='gbk' ){$from='utf-8';}else{$from='gbk';} 这样呢,非得经历从gbk转到utf-8或者从utf-8转到gbk一次吗?为什么呢? 相关帖子: http://kaiyuan.hoodong.com/bbs/viewthread.php?tid=2870&extra=page%3D6 第二个问题:hdwiki的ie下查看页面源码出现“中文乱码”现象! 另外hdwiki的ie下查看页面源码出现“中文乱码”现象,问题原来越清晰啦,就是获取到多余的字符,最初发现是在页脚处的“友情链接说明”内容过多(两个未知字节),造成页脚错位,而后发现词条页面过多的“摘要”内容(同样是两个未知字节)导致词条页面,使用ie查看页面源码出现“中文乱码”现象(再重新编辑摘要,刷新页面后验证正常),目前首页剩下最后一处可能造成“错误”原因就是还有一处乱码没有清理(移到友情链接中间的一个友情链接的(多两个字节)说明内容)。 就目前来看问题应该是出在没有处理好读取到的多余的两个字节上。 PS:另外可能出问题的关键字可能还有:站名,文章标题,标签,分类说明 PS:从原来有数据并且编写的都不怎么规范升级到4.0就可能出现这个情况 PS:$summary默认的数据库长度是250字节(从upgrade13.php中得知)。。。 在doc.php中 $doc['summary']=trim(string::convercharacter(string::substring(strip_tags($doc['summary']),0,100))); 是不是说明$summary只正常接收100个字节呢, 顺便提一下,这个$summary在入库前没有经过检查,并且这个是管理员不可以控制的部分(只要是有编辑权限的都可以去写摘要吧),同时他会导致页面代码错乱(字符编码问题?还是字节超出问题?),那么有没有可能构造异常的摘要,而在其后放入不正常的代码呢?(因为数据库中的$summary部分还可以存入150字节呢),如果想办法让substring处理异常会有这个可能吧!! doc.php中docreate函数 行108到124 if(@!(bool)$this->post['summary']){ $doc['summary']=trim(strip_tags($_ENV['doc']->replace_danger_word($this->post['summary']))); } $doc['letter']=string::getfirstletter($this->post['title']); $doc['category']=$this->post['category']; $doc['title']=string::substring(string::stripspecialcharacter(trim($this->post['title'])),0,80); $doc['tags']=$_ENV['doc']->jointags($this->post['tags']); $doc['content']=string::stripscript($_ENV['doc']->replace_danger_word($this->post['thcTextarea'])); $doc['summary']=trim(strip_tags($_ENV['doc']->replace_danger_word($this->post['summary']))); $doc['summary']=(bool)$doc['summary']?$doc['summary']:$doc['content']; $doc['summary']=trim(string::convercharacter(string::substring(strip_tags($doc['summary']),0,100))); $doc['images']=util::getimagesnum($doc['content']); $doc['time']=$this->time; $doc['words']=string::hstrlen($doc['content']); $doc['visible']=$this->setting['verify_doc']?'0':'1'; $result=$_ENV['doc']->add_doc($doc); doc.class.php中add_doc函数 行107到123 function add_doc($doc) { $this->db->query("insert into ".DB_TABLEPRE."doc (cid,letter,title,tag ,summary ,content,author,authorid,time,lastedit,lasteditor,visible) values ('".$doc['category']."','".$doc['letter']."','".$doc['title']."','".$doc['tags']."','".$doc['summary']."','".$doc['content']."', '".$this->base->user['username']."','".$this->base->user['uid']."', ".$doc['time'].",".$doc['time'].",'".$this->base->user['username']."','".$doc['visible']."')"); $did=$this->db->insert_id(); $this->db->query("insert into ".DB_TABLEPRE."edition (cid,did,author,authorid,time,ip,title,tag,summary,content,words,images ) values ('".$doc['category']."',$did,'".$this->base->user['username']."','".$this->base->user['uid']."', '".$doc['time']."','".$this->base->ip."','".$doc['title']."','".$doc['tags']."','".$doc['summary']."','".$doc['content']."','".$doc['words']."','".$doc['images']."')"); return $did; } 苦于对php不了解,上边的俩问题如果遇到大虾就别笑我呢!! wiki地址:http://wiki.clin003.com/wiki/Hdwiki4

Mediawiki允许图片上传设置

Saturday, August 2nd, 2008

开放图片上传功能 编辑LocalSettings.php,修改下面这一行为true即可(去掉前边的“#”)。 请不要使用windows自带的记事本改程序!mediawiki使用utf-8格式保存程序,记事本会在文件开始多出三个字节,而这会导致网站运行出错。推荐使用EmEditor进行编辑(另存为utf-8,不要unicode标记)。 (如果服务器上安装了ImageMagick库,可再取消$wgUseImageMagick行的注释。据说ImageMagick比GD库的缩略图效果稍好) #$wgEnableUploads       = true; 单击左侧的“工具箱”中的“上传文件”即可上传文件。 如果上传png格式的图片,会发现,png类型的文件被系统禁止了。调查includes/DefaultSettings.php的$wgFileExtensions 变量,可以看到png格式是允许的。为什么呢?JPG和GIF都正常上传啊。 原因是MediaWiki会判断上传文件的MIME Type,并禁止某些类型的MIME Type上传。而文件的MIME Type获取是通过php的mime_magic模块进行的,默认情况下这个模块无法正确识别png格式,所以png图像就无法得到正确的MIME Type,于是上传失败。 在phpinfo()中可以看到这样几行文字: mime_magic support    enabled Directive    Local Value    Master Value mime_magic.debug    Off    Off mime_magic.magicfile    /etc/httpd/conf/magic    /etc/httpd/conf/magic 得知mime_magic的配置文件是 /etc/httpd/conf/magic。打开此文件就可以发现其中并没有PNG格式。 在GIF和JPG文件的附近添加这样一行: # PNG 1 string PNG image/png 然后重新启动httpd。这样PNG文件就可以正常上传了。 参考:http://tech.idv2.com/2008/07/25/file-upload-in-mediawiki/ 引用外部图片(直接在页面中放入图片url链接保存就可以看到图片) 在localsettings.php增加下面一行即可(可能引起安全问题): $wgAllowExternalImages = true; 通过图片URL进行上传(使用可被公开访问的图片链接进行远程图片上传(这个功能很酷,:) 不过只有操作员才可以用,嘿嘿,安全考虑,这样很有必要呢)) 在localsettings.php增加下面一行(可能引起安全问题): $wgAllowCopyUploads = true; 在就是限制上传文件大小啦 在localsettings.php增加下面一行 $wgMaxUploadSize = 5020; 单位为字节,这个在新(versions 1.9.3 到 1.12)版本中已经不起作用啦。 需要在php环境中进行限制 那么还有个警告大文件上传的警示大小是在DefaultSetting.php中的,默认为150k,如果嫌烦,可以调大些(建议不用调)。 补充: mediawiki中文件上传的尺寸主要受限于php环境和mediawiki本身环境: 受php环境pnp.ini的限制:涉及memory_limit、post_max_size和upload_max_filesize。按照php文档说明,这三者应当是memory_limit> post_max_size > upload_max_filesize 受mediawiki中LocalSetting.php限制:涉及$wgMaxUploadSize 参考:http://www.sogg.name/archives/tag/mediawiki ok,myblog:http://clin003.com/

Mediawiki代码高亮显示GeSHiHighlight扩展安装使用

Saturday, August 2nd, 2008

GeSHi - Generic Syntax Highlighter 是一个非常优秀的代码格式高亮显示的PHP的东东(扩展,库,) 如果你对英文安装说明比较闹心,那么可以参考下我这里的安装经验 ok,myblog:http://clin003.com/ 下边来看看怎样在Mediawiki中安装使用吧 :) mediawiki的介绍地址在:http://www.mediawiki.org/wiki/Extension:GeSHiHighlight#Installation Installation Install GeSHi per the GeSHi install instructions (link above) Cut & paste the above code to a file called GeSHiHighlight.php Put GeSHiHighlight.php in your MediaWiki installations' extensions folder Add: include("extensions/GeSHiHighlight.php"); to LocalSettings.php 介绍很简单的,只是如果仅仅是按照上边的操作还是会有机会出错的(不会提示出错信息,但却没有高亮显示代码效果!) 下边说下我具体怎么做的: 下载最新的GeSHi(http://qbnz.com/highlighter/)。 解压,然后复制或剪切geshi(geshi-1.0.7.22\geshi)目录到你的mediawiki的扩展目录(extensions)下(建议删除contrib和docs两个目录及其内容)。 接着复制这里的代码(http://www.mediawiki.org/wiki/Extension:GeSHiHighlight#MediaWiki_and_GeSHi)到(可以新建个记事本文件重命名)GeSHiHighlight.php中。 然后把GeSHiHighlight.php放到mediawiki的扩展目录(extensions)下。 然后打开mediawiki根目录下的LocalSettings.php,添加include("extensions/GeSHiHighlight.php");(放到定义$wgSitename($wgSitename         = "Clin003";)的上边一行)。 然后就ok啦,可以去添加的代码看看效果。 :o 添加高亮代码的格式为: <code>把代码放放在这里</code> 比如放段php的代码 <php>echo "hello word"</php> 这样就ok啦。

UCH怪异的页脚文件footer.htm

Thursday, July 31st, 2008

明明两个文件内容一模一样,但一个会导致,输入验证码正确或用户名正确,提示sucess! [gallery] 如图。。 解决办法:使用原始footer.htm文件覆盖或者使用不影响编码的工具对原始footer.htm进行修改保存即可 怪异的是,对发生错误提示的footer.htm进行utf-8另存为也不起作用!!(PS:缓存是更新过的,每次试验都要先清理缓存的,所以肯定不是缓存原因)