Archive for 01月, 2009
解决discuz论坛无法显示短消息及Access denied for agent changed
discuz论坛无法显示Access denied for agent changed了,登录的时候也提示了这个错误。到disucz上查看帮助,原来是通讯密钥的关系。我重新安装的时候,通信密钥改掉了,恢复后,数据库中的密钥和配置文件中的密钥不同。此时,将应用中的密钥和配置文件中的密钥同步一下就可以了。再查看短消息,OK了!
Access denied for agent changed解决方法:
1.检查DZ目录下config.inc.php文件中define(’UC_KEY’,’通讯密码’)的通讯密码。这里的通讯密码要和UC中的密码一致。
2.检查config.inc.php里define(’UC_APPID’, ‘1′)里的ID。这个ID表明在uc里指定应用程序的应用id为1,uc使用应用来整合各个产品.把这个ID值和UC中的ID值保持一致。
修改了这两处后,Access denied for agent changed提示就消失了。
编译式安装的标准流程
编译式安装的标准流程分为以下四个步骤:
(1) 软件解压 (2)检测环境 (3)编译软件 (4)安装软件
1>解压软件压缩包;
在linux环境中常见的压缩文件格式为bz 与gz ,既可以通过命令行方式,也可以使用图形界面方式解压文件.
2> 检测环境
检测软件的安装环境需要使用以下命令:?
./configure
在检测过程中程序会根据” configure “ 这个可执行脚本预设的步骤检测用户是否安装了编译器 ,支持软件的开发库及文件等, 并在检测结束后生成 ” makefie “文件,为编译做好准备工作,.
由于检测使用的程序不同,其检测结果也不完全相同.一般情况下.检测完毕如发现,便会提示”configure finshed ”表示检测完成. 如果发现未能满足的条件, 程序将会检测出来的问题汇集到一起,步兵报告给用户,
为了避免软件有特殊的要求,在执行 ./configure 命令前,建议先浏览 “ install.txt ” 与 “ readme.txt ” 两个文件的内容, 简单了解软件的特点以及如何配置 configure 以便更好的定制软件,
3>编辑软件
完成检测后,说名系统已经达到软件安装的要求,接下来,需要将源代码编译成可执行程序,
编译时,应执行以下命令 ;
make clean
make
第一行命令用于清除以前编译时留下的垃圾文件. 为了避免因垃圾文件而引起的问题,建议在正式编译前先执行次命令.
第二行命令为编译命令,他会调用检测环境流程中生成的 “makefile” 文件,使用指定的编译器对源程序进行编译,从而产生程序及附属二进制文件.
4 安装软件
软件完成编译后,为了让这些程序存放在系统常用的程序目录里,并且完成添加启动链接等,工作 ,还需要执行以下安装命令,
make install
到此为止,编译式安装终于大功告成了,软件已经安装到指定的目录,在 软件应用 菜单中可以找到已经安装的程序.
使用array_key_exists检查键名或索引是否存在于数组
array_key_exists() 在给定的 key 存在于数组中时返回 TRUE。
key 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。
<?php
$search_array = array(’first’ => 1, ’second’ => 4);
if (array_key_exists(’first’, $search_array)) {
echo “The ‘first’ element is in the array”;
}
?>
array_key_exists() 与 isset() 对比
isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。
<?php
$search_array = array(’first’ => null, ’second’ => 4);
// returns false
isset($search_array['first']);
// returns true
array_key_exists(’first’, $search_array);
?>
discuz被黑详解
[该漏洞由ring04h发现并且投递,thx]
由于Discuz!的1_modcp_editpost.tpl.php里$orig['message']未过滤,导致一个xss漏洞.
一 分析
在文件1_modcp_editpost.tpl.php里代码:
<? } elseif($action == ‘editmessage’) { ?>
<textarea type=”text” id=”message_<?=$pid?>” name=”message_<?=$pid?>” style=”width: 80%; height: 200px; overflow: visible” ondblclick=”doane(event)”><?=$orig['message']?></textarea>
<p style=”margin: 5px; text-align: center;”>
<button type=”button” value=”true” class=”submit” onclick=”submitmessage(’<?=$pid?>’);this.disabled=true”>提交</button>
<button type=”button” class=”submit” onclick=”ajaxget(’modcp.php?action=editmessage&pid=<?=$pid?>&tid=<?=$tid?>&editmessagesubmit=yes&inajax=1&do=notupdate’, ‘postmessage_<?=$pid?>’)”>取消</button>
</p>
<script type=”text/javascript”>
<?=$orig['message']?>没有过滤导致xss.
进入以上的代码的有2处:
1. 1_viewthread.tpl.php里:
<td class=”postcontent” <? if($forum['ismoderator'] && ($thread['digest'] >= 0 || !$post['first'])) { ?> ondblclick=”ajaxget(’modcp.php?action=editmessage&pid=<?=$post['pid']?>&tid=<?=$post['tid']?>’, ‘postmessage_<?=$post['pid']?>’)”<? } ?>>
<div class=”postinfo”>
通过ondblclick事件触发ajaxget去访问.
2. \Beijing2008\forumdisplay.htm
</td>
<th class=”$thread[folder]” {if $forum['ismoderator']} ondblclick=”ajaxget(’modcp.php?action=editsubject&tid=$thread[tid]‘, ‘thread_$thread[tid]‘, ’specialposts’);doane(event);”{/if}>
<label>
同上下面的利用是用的1_viewthread.tpl.php里的方法.
如何利用:
1.发表新贴 [...]
如何使用PHP得到当前时间戳
php的strtotime() 函数用来将任何英文文本的日期时间描述解析为 Unix 时间戳。
它接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于now参数给出的时间,如果没有提供此参数,则用系统当前时间。
举例说明:
<?php
echo(strtotime(”now”));
echo(strtotime(”3 October 2005″));
echo(strtotime(”+5 hours”));
echo(strtotime(”+1 week”));
echo(strtotime(”+1 week 3 days 7 hours 5 seconds”));
echo(strtotime(”next Monday”));
echo(strtotime(”last Sunday”));
?>
如何使用Apache设置图片防盗链
在你需要保护的网站域名定义字段内添加
NameVirtualHost *:80
在此添加
DocumentRoot X:/你网站所在目录/X
ServerName www.murray.cn
SetEnvIf Request_URI “/logo(.)+” local_ref=0
SetEnvIfNoCase Referer “^http://www.murray.cn” local_ref=1
Order Allow,Deny
Allow from env=local_ref
第一行是定义文件名为logo.*的文件可以排除在防盗链之外,这样可以和联盟网站传输logo图片。
第2-6行是定义排除的网站,在这里排除的网站不受防盗链影响。
第7行是定义文件类型,参照上面的防止特定文件禁止下载


