首页
关于本站
网站模板
代码教程
Emlog教程
米拓教程
SEO优化教程
Ecshop教程
zblog教程
Excel技巧
电脑软件教程
互联网
免费资源
网络新闻
留言咨询
在线问答
申请友链
网址导航
联系舍力
搜索
舍力
登录
搜索
舍力
静以修身。
累计撰写
1140
篇文章
累计收到
3657
条评论
首页
栏目
首页
关于本站
网站模板
代码教程
Emlog教程
米拓教程
SEO优化教程
Ecshop教程
zblog教程
Excel技巧
电脑软件教程
互联网
免费资源
网络新闻
留言咨询
在线问答
申请友链
网址导航
联系舍力
Emlog教程
2014-8-25
emlog模板防止跨站漏洞教程(所有模板作者请务必阅读)
进过我的调查,发现大家贡献很多的模板中都没有对URL中的参数进行必要的过滤,从而给黑客留下跨站攻击的空子。 在这里我举一个典型的例子供大家参考,下面是某个CMS模板输出搜索关键词的代码, ?php }elseif($params=='keyword'){ ?> 关键词 <b><?php echo urldecode($params);?></b> 的搜索结果 请 注意$params变量没有任何过滤的就直接输出了,而我们可以构造/index.php?keyword=8<img src=1 width=500 height=500 onerror=alert(1)>在页面上运行javascript代码alert(1). 黑客在攻击时可以把alert(1)替换为攻击代码(比如获取访问者的cookie信息)后发给站长。如果站长不小心点了链接,那么黑客就能获取站长登陆 状态的cookie,有了cookie,就能冒充站长登陆站点后台做他想做的任何事情了。 综上所述,为了各位用户的安全着想,请各位模板作者在输出URL参数时使用PHP的htmlspecialchars函数来进行过滤,防止XSS攻击,像上面例子中的代码可以修改为 ?php }elseif($params=='keyword'){ ?> 关键词 <b><?php echo htmlspecialchars(urldecode($params));?></b> 的搜索结果 最后还是要感谢各位模板的作者为emlog的无私付出,希望这篇教程能给大家做出安全好用的模板提供一定的帮助。 本文来源于emlog论坛,由em管理员:朦胧之影 发布
2014年8月25日
8691 阅读
4 评论
Emlog教程
2014-8-22
Emlog 实现文章列表实现有图片则显示,没图片则不显示的方法
Emlog 实现文章列表实现有图片则显示,没图片则不显示的方法,直接把下面代码放入log_list.php中即可
2014年8月22日
8258 阅读
10 评论
Emlog教程
2014-6-19
emlog手机版如何调用文章title方法
安装emlog之后发现手机版的文章标题和首页标题是一样的,这样貌似不利于在朋友圈里面分享,舍力找了一个简单的方式实现调用文章title方法: 第一步:打开emlog的/m/view/,在里面创建一个文件wzhead.php(名字可以自己更改),内容和默认的head.php一样,把其中 <title><?php echo Option::get('blogname'); ?></title> 的改为 <title><?php echo $log_title; ?></title> 然后保存; 第二步:打开/m/index.php,找到 include View::getView('head'); 大概在65行,更换成你刚刚建立的文件 include View::getView('wzhead'); 保存就搞定了,如果要加入关键、描述等在建立的这个文件上设置就好! 演示地址:http://www.shuyong.net/m/?post=232
2014年6月19日
8294 阅读
4 评论
Emlog教程
2014-6-18
emlog修默认改导航栏地址
如果EMLOG使用的是Windows的服务器,点击前台的登录,经常会出现404问题。 因为服务器无法判定admin的路径是文件还是目录,如果访问www.shuyong.net/admin/,后面加上斜杠,指明是目录,则不会出现404的问题。 进入EMLOG后台,导航,选择登录的导航,修改,会提示默认导航无法修改,出现这种问题,需要修改程序文件。 使用编辑工具(不能使用记事本),打开admin/navbar.php文件后 查找并删除 if ($type != Navi_Model::navitype_custom) { $url = '该导航地址由系统生成,无法修改'; } 此段代码是为了判定,导航是否是默认导航,如果是的话,就不显示导航地址,只显示这段文字。 删除了上面一段代码之后,发现文本框虽然显示了导航地址,但还是不可修改状态, 继续查找并删除 $conf_isdefault = $type != Navi_Model::navitype_custom ? 'disabled="disabled"' : ''; 此段代码设定了,如果是默认导航的话,那文本框就不可修改。 以上步骤搞定了以后,虽然文本框可以修改,可以提交,但发现修改后还是不能生效 最后,查找以下代码: if ($isdefault == 'n') { $navi_data = $url; } 留下中间一行,修改为: $navi_data = $url; 此段代码是在提交的时候判断导航是否为默认导航,如果不是默认导航才修改,去掉修改条件就OK。 这下,把登录的地址,加个“/”改为“admin/”就搞定了~
2014年6月18日
13160 阅读
0 评论
Emlog教程
2014-6-16
如何解决emlog列表分页标题相同的问题
Emlog程序默认的分页title都一模一样,造成很多同名页面,关键词冲突;以下是解决这个问题的方法。 第一步:写一个从第二页开始显示分页标题的函数,放在模版文件的module.php里面,代码如下: <?php //分页标题后面加 - 第几页 function page_tit($page){ if ($page>=2){ echo ' - 第'.$page.'页'; } } ?> 第二步:把代码放入header.php文件里面的<title></title>之间(如果你的头部文件修改过的话,就要找到对应的头部文件) <?php echo page_tit($page); ?> 演示:
2014年6月16日
10209 阅读
2 评论
Emlog教程
2014-6-14
emlog简单2步实现会员投稿审核功能!
此方法并不涉及内核代码修改,仅仅是利用权限判断实现投稿审核功能。 说明: 1.会员发稿后自动转存到草稿箱; 2.会员发稿不显示置顶选项; 3.待审核的文章和已经发布的文章,会员不能编辑; 4.“草稿箱”和“管理”,只保留会员删除权限; 管理员权限不变! 需要修改的文件有二个,位于 \admin\views\文件夹内, “admin_log.php”,“add_log.php”。 先来看第一:“admin_log.php” 将: <a href="write_log.php?action=edit&gid=<?php echo $value; ?>"><?php echo $value; ?></a> 改: <a href="<?php if (ROLE == 'admin'):?>write_log.php?action=edit&gid=<?php echo $value; ?> <?php endif;?> <?php if (ROLE != 'admin'):?> # <?php endif;?> " <?php if (ROLE != 'admin'):?> title="提交过的文章不能编辑" <?php endif;?>> <?php echo $value; ?> </a> 将: | <?php if($pid == 'draft'): ?> <a href="javascript:logact('pub');">发布</a> <?php else: ?> <a href="javascript:logact('hide');">转入草稿箱</a> | <?php if (ROLE == 'admin'):?> <a href="javascript:logact('top');">置顶</a> | <a href="javascript:logact('notop');">取消置顶</a> | <?php endif;?> 改: <?php if (ROLE == 'admin'):?> | <?php if($pid == 'draft'): ?> <a href="javascript:logact('pub');">发布</a> <?php else: ?> <a href="javascript:logact('hide');">转入草稿箱</a> | <?php endif;?> <?php if (ROLE == 'admin'):?> <a href="javascript:logact('top');">置顶</a> | <a href="javascript:logact('notop');">取消置顶</a> | <?php endif;?> 第二步:“add_log.php” 将: <input type="checkbox" value="y" name="top" id="top" /> <label for="top">文章置顶</label> 改: <?php if (ROLE == 'admin'):?> <input type="checkbox" value="y" name="top" id="top" /> <label for="top">文章置顶</label> <?php endif;?> 将: <input type="hidden" name="ishide" id="ishide" value=""> <input type="submit" value="发布文章" onclick="return checkform();" class="button" /> <input type="hidden" name="author" id="author" value=<?php echo UID; ?> /> <input type="button" name="savedf" id="savedf" value="保存草稿" onclick="autosave(2);" class="button" /> 改: <input type="hidden" name="ishide" id="ishide" value=""> <?php if (ROLE == 'admin'):?> <input type="submit" value="发布文章" onclick="return checkform();" class="button" /> <?php endif;?> <input type="hidden" name="author" id="author" value=<?php echo UID; ?> /> <input type="button" name="savedf" id="savedf" value="保存待审" onclick="autosave(2);" class="button" /><br /> <?php if (ROLE != 'admin'):?> <span style="color:#FF0000">请仔细检查文章内容,提交后不能再次编辑。</span> <?php endif;?>
2014年6月14日
8673 阅读
3 评论
Emlog教程
2014-6-6
Emlog程序修改或去除链接中“post-”的方法
首先确认你的站点支持Rewrite;必须是开启 文件形式 伪静态默认,否则后果怎样请自行测试...伪静态格式必须是第2种形式,文件形式:http://www.shuyong.net/post-1.html方可更改 确认支持Rewrite后进行如下操作: 修改\include\lib\url.php文件,找到 $logUrl = BLOG_URL . 'post-' . $blogId . '.html'; 并修改为 $logUrl = BLOG_URL . '' . $blogId . '.html'; 保存替换就搞定。 推荐文章:修改Emlog默认动态链接?post=xxx的方法
2014年6月6日
11654 阅读
6 评论
Emlog教程
2014-5-26
Emlog去除分类目录前的sort,请先开启伪静态
把sort去掉,直接显示网址/分类别名 的形式,这样有利于搜索引擎收录,也使网址更加简明。 例如: 原网址:http://www.shuyong.net/sort/iemlog 更改后:http://www.shuyong.net/iemlog emlog去除分类目录前的sort修改方法: 首先确认你的站点支持Rewrite,确认支持Rewrite后开启伪静态,进行如下操作: 1.修改include\lib\url.php文件,删除大概第102行和第104行的 sort/ 2.修改include\lib\dispatcher.php文件中 return $path; 替换成 if($path!="/"&&substr($path,0,6)!="/sort/"&&substr($path,0,2)!="/?") { return "/sort".$path; } else { return $path; } 3.修改include\lib\dispatcher.php文件中 $path = str_ireplace('index.php', '', $path); 替换成 $path = str_ireplace('/index.php', '', $path);
2014年5月26日
15106 阅读
12 评论
Emlog教程
2014-5-4
EMLOG 实现文章自动加版权代码
EMLOG博客程序不错,各个方面都是非常简单的。现在分享给文章加版权的方法,高手们就飘过吧!先看看效果。添加方法:找到模板里的阅读页文件echo_log.php;如果你想让版权信息直接显示在文章内容后面的话那么就要把版权代码增加到<?php echo $log_content; ?>后面,这个标签是显示日志内容的。EMLOG版权代码:里面有些参数请自行修改 <div align="center"><span class="sm" style="color: #F00">本文发布于<?php echo $blogname; ?><?php echo BLOG_URL; ?>,转载请保留此版权信息!</span></div> 帶文章地址版权代码(帶链接) 版权所有:本文发布于<a href="<?php echo BLOG_URL; ?>"><?php echo $blogname; ?></a>; <br> 转载请保留原文链接:<a href="<?php echo Url::log($logid); ?>"><?php echo Url::log($logid); ?></a> 帶文章地址版权代码(不帶链接) 版权所有:本文发布于<?php echo $blogname; ?>; <br> 转载请保留原文链接:<?php echo Url::log($logid); ?>
2014年5月4日
9821 阅读
1 评论
Emlog教程
2014-4-13
emlog官方缓存类统计代码
先说调用代码:<?php $sta_cache = Cache::getInstance()->readCache('sta');?> <?php echo $sta_cache;?> 例如调用日志数量 <?php echo $sta_cache;?> 注意了这里的日志数量是前台显示出来的日志数量,未包含未审核以及隐藏的文章数量。 lognum 游客可见日志总数 draftnum 草稿,也就是隐藏文件数量 comnum 未隐藏的评论数量 comnum_all 所有评论数量 hidecomnum 被隐藏的评论数量 twnum 微语数量 checknum 未审核的文章数量 博客访问次数: 2014-8-13更新,来源于em论坛,缺点加载比较慢,把下面代码放入到模板module.php文件中 <?php //统计文章总数 function count_log_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE type = 'blog'"); return $data; } //置顶文章数 function count_log_top(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE top = 'y' or sortop = 'y' AND type = 'blog'"); return $data; } //隐藏文章数 function count_log_hide(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE hide = 'y' AND type = 'blog'"); return $data; } //未审核文章数 function count_log_check(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE checked = 'n' AND type = 'blog'"); return $data; } //加密文章数 function count_log_pass(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE password !='' AND type = 'blog'"); return $data; } //统计页面总数 function count_page_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "blog WHERE type = 'page'"); return $data; } //统计评论总数 function count_com_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "comment"); return $data; } //统计友链总数 function count_link_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "link"); return $data; } //统计微语评论总数 function count_treply_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "reply"); return $data; } //统计分类总数 function count_sort_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "sort"); return $data; } //统计子分类数 function count_sort_mod(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "sort WHERE pid != 0"); return $data; } //统计标签总数 function count_tag_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "tag"); return $data; } //统计微语总数 function count_tw_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "twitter"); return $data; } //统计用户总数 function count_user_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "user"); return $data; } //统计管理员总数 function count_user_admin(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "user WHERE role = 'admin'"); return $data; } //统计作者总数 function count_user_writer(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "user WHERE role = 'writer'"); return $data; } //统计附件总数 function count_att_all(){ $db = MySql::getInstance(); $data = $db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "attachment"); return $data; } //最后发表文章时间 function last_post_log(){ $db = MySql::getInstance(); $sql = "SELECT * FROM " . DB_PREFIX . "blog WHERE type='blog' ORDER BY date DESC LIMIT 0,1"; $res = $db->query($sql); $row = $db->fetch_array($res); $date = date('Y-n-j H:i',$row); return $date; };?> 在对应的位置插入<?php echo count_link_all();?>其中count_link_all()代表友链数量
2014年4月13日
9348 阅读
0 评论
Emlog教程
2013-9-17
emlog伪静态设置方法及伪静态规则
今天刚把emlog装好,听朋友说的,这个博客系统简单好用,还能生成伪静态呢。装好了才发现,设置伪静态后,好像链接打不开,乐兮在网上搜索了下方法,千万篇网页里就找到一个能用的,下面把方法写给大家,希望能帮助你们。 首先,你要弄清楚你的主机空间是windows系统呢,还是unix系统。因为国内大多数空间商都用的是win主机,所以咱们就着重说这个吧,把下面复制下来保存在记事本里面,然后把名字改成httpd.ini。传到空间根目录试试,一般来说,都能直接访问了,如果还不行,说明你没有权限,那只好联系你的空间商了。 伪静态代...
2013年9月17日
17604 阅读
1 评论
Emlog教程
2013-9-13
emlog数据调用 外部html调用 非js调用 静态调用
相信用过emlog博客系统的朋友应该都知道emlog有个数据调用插件(内部调用和外部js调用),最新升级的插件新增了外部调用增加html的调用方 式,内部调用和外部js调用的方法都很简单,相信大家都知道的,今天主要给大家讲讲外部html的调用方法,为什么要用html调用,做SEOer都知 道,便于优化就要使用静态化调用,而emlog数据调用插件的外部html调用正是静态化调用。 我在这里用一个具体的例子来演示一下,大家看我博客侧边栏最上面那“最新文章”部分,就是用html方式来调用的,大家可以查看一下源代码。
2013年9月13日
13035 阅读
4 评论
Emlog教程
14
15
16