今天给客户弄WP模板的时候发现作者把页脚加密了
我还以为直接ECHO就可以出来了,结果却得到更乱的乱码
上网一查,如来是所谓N层加密的办法
然后我从网上找到了一些办法,最后只有这个通过了考验,解出我要的东西
附上代码
<?php
/**********************************************************************
*PHP eval gzinflate base64_decode str_rot13加密解密脚本 By:Neeao
*目前只写了针对四种组合的,其他组合的可参考注释自行修改:
*1.eval(gzinflate(str_rot13(base64_decode(
*2.eval(gzinflate(base64_decode(
*3.gzinflate(base64_decode(base64_decode(str_rot13(
*4.eval(gzinflate(base64_decode(str_rot13(
*Http://Neeao.com
*2009-09-28
***********************************************************************/
$filename=’coded.txt’;//要解密的文件
$handle = fopen($filename, “r”);
$contents = fread($handle, filesize ($filename));
$contents_arr=explode(‘NeeaoNeeao’,htmlspecialchars(decode($contents)));
echo “此代码被加密了”.$contents_arr[0].”层,内容如下:<br>\n”;
echo $contents_arr[1];
/*
解密主函数
$Str,要解密的文件内容
*/
function decode($str,$i=0)
{
$content=””;
//eval(gzinflate(str_rot13(base64_decode(
//先正则查找是否相关组合加密的,base64编码后的正则是:[A-Za-z0-9\/\+=]
if(preg_match(“/(eval\(gzinflate\(str_rot13\(base64_decode\(‘)([A-Za-z0-9\/\+=]*)’/”,$str,$x))
{
//替换掉没用的字符,获取加密后的密文
$content=str_replace(“eval(gzinflate(str_rot13(base64_decode(‘”,””,$x[0]);
$content=str_replace(“‘”,””,$content);
//变量i是用来判断加密层数的,初始值为0,解密一次,层数加一
$i++;
//采用相关组合解密
$content=gzinflate(str_rot13(base64_decode($content)));
//递归判断下是不是已经结束了,没结束继续重复解密
$content=decode($content,$i);
}
//eval(gzinflate(base64_decode(
elseif(preg_match(“/eval\(gzinflate\(base64_decode\(‘[A-Za-z0-9\/\+=]*’/”,$str,$y))
{
$content=str_replace(“eval(gzinflate(base64_decode(‘”,””,$y[0]);
$content=str_replace(“‘”,””,$content);
$i++;
$content=gzinflate(base64_decode($content));
$content=decode($content,$i);
}
//gzinflate(base64_decode(base64_decode(str_rot13(
elseif(preg_match(“/eval\(gzinflate\(base64_decode\(base64_decode\(str_rot13\(‘[A-Za-z0-9\/\+=]*’/”,$str,$z))
{
$content=str_replace(“eval(gzinflate(base64_decode(base64_decode(str_rot13(‘”,””,$z[0]);
$content=str_replace(“‘”,””,$content);
$i++;
$content=gzinflate(base64_decode(base64_decode(str_rot13(($content)))));
$content=decode($content,$i);
}
//eval(gzinflate(base64_decode(str_rot13(
elseif(preg_match(“/eval\(gzinflate\(base64_decode\(str_rot13\(‘[A-Za-z0-9\/\+=]*’/”,$str,$m))
{
$content=str_replace(“eval(gzinflate(base64_decode(str_rot13(‘”,””,$m[0]);
$content=str_replace(“‘”,””,$content);
$i++;
$content=gzinflate(base64_decode(str_rot13(($content))));
$content=decode($content,$i);
}
else
{
$content=$i.”NeeaoNeeao”.$str;
}
return $content;
}
?>
当然,也不是一帆风顺,中间某个步骤说是解了67层的时候,还是乱码,但是这个脚本却提示已经解出来了,我还以为这个脚本没用
结果我把他显示的结果再存入需要解密的文件那里,再解了几十层之后,我要的代码终于出来了,就几个简单的DIV加一些版权东东
让我大呼上当,还以为他加密了啥函数在里面呢
阅读全文
IE6,IE7,Firefox兼容的css hack
第一种办法:
body
{
background:red;
*background:blue !important;
*background: green;
}
第一排给Firefox以及其他浏览器看;
第二排给IE7,IE7既能能识别*号,也能识别important;
第三排给IE6也能识别*号;
第二种办法,使用_来区分IE6:
body
{
background:red;
*background:blue;
_background: green;
}
第一排给Firefox以及其他浏览器看;
第二排给IE7,IE7既能能识别*号;
第三排给IE6能识别下划线;
CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。
常见兼容问题:
1.DOCTYPE 影响 CSS 处理(但这个声明对于WEB标准的验证是非常重要的)
2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行
3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中
4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width
5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式
6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以
8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。
9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:
div{margin:30px!important;margin:28px;}
注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:
div{maring:30px;margin:28px}
重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;
10.IE5 和IE6的BOX解释不一致
IE5下
div{width:300px;margin:0 10px 0 10px;}
div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改
div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}
关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)
11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义
ul{margin:0;padding:0;}
就能解决大部分问题
阅读全文
临时处理方法:
修改/include/customfields.func.php
254 行
else if($dtype==’img’ || $dtype==’imgfile’)
{
if($admintype==’diy’)
改成
else if($dtype==’img’ || $dtype==’imgfile’)
{
return $dvalue;
if($admintype==’diy’)
322 行? $dvalue = MemberUploads($fieldname,”, 0, ‘addon’, ”, -1, -1, false);
改成
//$dvalue = MemberUploads($fieldname,”, 0, ‘addon’, ”, -1, -1, false);
注释掉
477 行 到 488 行也注释一下 要不然修改时候数据默认值会丢失
$ndtp = new DedeTagParse();
$ndtp->LoadSource($fvalue);
if(!is_array($ndtp->CTags))
{
$ndtp->Clear();
$fvalue =? “”;
}
else
{
$ntag = $ndtp->GetTag(“img”);
$fvalue = trim($ntag->GetInnerText());
}
改成
/*
$ndtp = new DedeTagParse();
$ndtp->LoadSource($fvalue);
if(!is_array($ndtp->CTags))
{
$ndtp->Clear();
$fvalue =? “”;
}
else
{
$ntag = $ndtp->GetTag(“img”);
$fvalue = trim($ntag->GetInnerText());
}
*/
阅读全文
早就听说过,就是没用过
今天LVGE的网站又出问题了~
结果主机那边说是服务器在升级
这个期间FTP用不了,说如果急用就开SSH,于是我就像被赶上架的鸭子
根据教程自己生成密匙,然后下软件登录
教程备份一份,以备不时之需
http://bbs.8-host.net/read.php?tid=2808#4060
阅读全文
最近使用了dedecms5.6,当制作模板时,调用channel标签需要增加行数序号属性,但官方却没有提供这样的底层标签可供选用,这相比ASP的科汛CMS差了不少,不过通过自己的DIY,行号还是可以使用的,DIY方法如下:
要实现的效果
<ul>
<li class=”list1″></li>
<li?class=”list2″></li>
<li?class=”list3″></li>
<li?class=”list4″></li>
<li?class=”list5″></li>
</ul>
因为需要给class属性值list后面的序号自增,默认的{dede:channel标签没有提供序号功能,所以想到进行修改这个标签,来完善这个功能
以下是默认dede:channel标签的使用方法:
<ul>
{dede:channel type=’top’ row=’5′}
<li><a href=”[field:typeurl/]” [field:rel/] title=”[field:typename/]“>[field:typename/]</a></li>
{/dede:channel}
</ul>
改进后,我们要实现如下代码:
<ul>
{dede:channel type=’top’ row=’5′}
<li class=”list[field:line/]“><a href=”[field:typeurl/]” [field:rel/] title=”[field:typename/]“>[field:typename/]</a></li>
{/dede:channel}
</ul>
修改步骤如下:
1.修改/include/taglib/channel.lib.php文件的lib_channel函数,把如下代码
$attlist = “typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|”;
修改成:
$attlist = “typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|,line|1″;
2.修改/include/taglib/channel.lib.php文件的lib_channel函数,在第9行附近追加如下代码:
//默认属性里设置的行数
$default_line = $ctag->CAttribute->Items[“line”];
3.修改/include/taglib/channel.lib.php文件的lib_channel函数,把如下代码:? $row[‘sonids’] = $row[‘rel’] = ”;
修改成如下代码:
$row[‘sonids’] = $row[‘rel’] = ”;
$row[‘line’] = $default_line+$i;
就OK了.
阅读全文
给客户修改会员系统,发现DEDE的竟然有自定义会员模型功能
真是非常方便啊~
每种类型的会员都可以单独设置附加表,里面可以放一些特殊的字段,比如普通会员可以留QQ,电话什么的,但是并不需要 荣誉证书什么的
而企业会员可以有荣誉证书,企业介绍等自定义字段
我是用的的后台给的html文本字段创建上述值
但是给我发现一个小小的问题,就是这些字段编辑的时候,竟然会显示源码,而不是我们所希望的所见即所得
然后我找了一下,结果发现在\include\FCKeditor文件夹里的fckeditor.php修改一下就可以了
找到这个函数 function CreateHtml()
然后修改 $HtmlValue =htmlspecialchars( $this->Value ) ;
为$HtmlValue = $this->Value ;
我查了一下,
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。语法为:htmlspecialchars(string,quotestyle,character-set)
也就是其中一些字符变了
预定义的字符是: &(和号) 成为& ” (双引号) 成为 ” ’ (单引号) 成为 ‘ < (小于) 成为 < > (大于) 成为 >
结果在FCK里就不能正常显示我们需要的东西
所以干脆把这个函数去掉
阅读全文
DEDE里面内容也隐藏某些信息
比如联系信息
只有VIP会员可以查看
我原来想用ajax,结果客户给我个演示
直接就是JS调用,呵呵
那就更加简单了
在MEMBER里选个文件一改就可以了
阅读全文
接的两个单弄完了
一个修改114啦~
一个用DEDE做私服发布的~
第2个还没验收~
估计不用修改多少了的
今天上午又聊了一单,说是星期一联系~不知道能不能成,能成的话又可以赚一点了
唉~几千块的债不是那么容易还的~
有活得做最好~
阅读全文
帮客户修改114啦的时候,发现广告位置都是定死的,不能添加新的广告位
特别是头部,客户要求放很多的广告,可是114啦的程序只有广告轮播功能,我都不知道怎么添加
只好去修改源码了
把广告轮播拆成N条广告
从后台可知编辑首页广告调用的是ADMIN文件夹里的mod_advise_index.php
打开查找发现这个函数advise_index_display,里面调用了mod_advert里面的update_cache_main_advert函数
打开同文件夹里的mod_advert.php查找update_cache_main_advert这个函数就是读取数据库里的广告信息
在
if (!empty($conf[‘style’]) && $conf[‘style’] == ‘code’)
{
$code = $conf[‘htmlcode’];
后面把标题参数给读出来
$conf[‘title’]=$row[‘title’];
然后找到生成JS的地方update_cache_advert_js
把header给独立出来
if ($key != ‘index_txt’ && $key != ‘page_baidu’ && $key != ‘header’)
然后自己写header的处理程序
//小货修改,重新设置顶部广告的形式
if ($key == ‘header’)
{
//echo $key.”<br>”;
$tmp = ”;
foreach ($val as $value)
{
$value[‘code’] = trim($value[‘code’]);
$tmp=”;
foreach (explode(“\r\n”, $value[‘code’]) as $value2)
{
$value2 = str_replace(array(‘”‘, ‘/’), array(‘\”‘, ‘\/’), $value2);
$tmp .= ‘document.writeln(“‘ . $value2 . ‘”);’ . “\r\n”;
}
mod_file::write(PATH_ROOT . ‘/static/js/’ . $key .’_’.$value[‘title’]. ‘.js’, $tmp);
}
}
//小货修改,重新设置顶部广告的形式
就可以生成hearder_标题名.js的形式的广告
然后调用就可以了
阅读全文
空间用了3G,超出了限制
我第一念头就是,是不是网站被黑了,或者被人上传了N多大文件
然后我查看了一下附件文件夹,发现附件很少,不太可能占用大量空间
仔细再想了一下,唯一可能的就是DEDE的淘宝客程序了
进入它的安装文件夹后看了看缓存文件,天!!!N多文件夹
我无法估计使用的空间的大小
于是想到进CP备份一下,再下载下来,解压后就知道到底是哪个文件夹出问题
花了10来分钟下了备份压缩包,一共300多M,解压一看,淘宝客临时文件夹就占了差不多2G
毫不犹豫,删除它
发现FTP删除实在是慢~用CP提供的文件管理器却没反应
没办法,只能使用以前我收集的一个PHP小程序去操作
却发现老是提示错误
天啊,删除都是个大问题
阅读全文