系统后台默认地址为 http://你的域名/admin.php
为了网站安全,请远程登录服务器或者连接FTP修改网站根目录admin.php文件名。
例如修改为 abc.php ,则新的管理地址为 http://你的域名/abc.php
这样即使管理密码被盗,盗号者在不知道后台地址的情况下也无法登入后台。
我站在青青的牧场
系统后台默认地址为 http://你的域名/admin.php
为了网站安全,请远程登录服务器或者连接FTP修改网站根目录admin.php文件名。
例如修改为 abc.php ,则新的管理地址为 http://你的域名/abc.php
这样即使管理密码被盗,盗号者在不知道后台地址的情况下也无法登入后台。
因为百度ip转换增加了密匙验证,所以导致之前的接口无法再转换ip地址的信息,通过更换淘宝的API进行修复。具体方法如下:
打开includecloud.func.php文件
找到function iplookup($ip) {
修改iplookup函数为
function iplookup($ip) {
$url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
//$url = 'http://apistore.baidu.com/microservice/iplookup?ip='.$ip;
$rec = dcurl($url);
$area = '';
if(strpos($rec, 'data') !== false) {
//if(strpos($rec, 'retData') !== false) {
$tmp = json_decode($rec, true);
$arr = $tmp['data'];
//$arr = $tmp['retData'];
if(base64_encode($arr['country']) != '5Lit5Zu9') {
if(isset($arr['country'])) $area .= $arr['country'];
if(isset($arr['area'])) $area .= $arr['area'];
}
if(isset($arr['region'])) $area .= $arr['region'];
//if(isset($arr['province'])) $area .= $arr['province'];
if(isset($arr['city']) && $arr['city'] != $arr['province']) $area .= $arr['city'];
if(isset($arr['district'])) $area .= $arr['district'];
if(isset($arr['carrier'])) $area .= ' '.$arr['carrier'];
}
return $area ? convert($area, 'UTF-8', DT_CHARSET) : 'Unknown';
}
再登录后台,即可看到问题已解决。
打开dede根目录下载的
include/dedesql.class.php
将第51行的
$this->safeCheck = TRUE;
改为
$this->safeCheck = FALSE;
安装成功后,建议再修改回来,以保证安全.
2 015年6月18日更新的新版本的织梦5.7,为了兼容php5.4+,修改了common.func.php,可能有些模板也改动过这个文件,这样会导致在安装模板时,common.fuc.php文件被覆盖,从而在发布文章时,编辑框的位置出现“Call to undefined function dede_htmlspecialchars()”这样的错误提示。
解决办法如下:
打开common.func.php,搜索“function RunApp”,在这个函数的上面添加织梦新版本新增的函数:dede_htmlspecialchars
function dede_htmlspecialchars($str) {
global $cfg_soft_lang;
if (version_compare(PHP_VERSION, '5.4.0', '<')) return htmlspecialchars($str);
if ($cfg_soft_lang=='gb2312') return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');
else return htmlspecialchars($str);
}
DedeCMS自定义文件名重复问题的解决办法。
首先,进入你的后台管理目录(默认为dede),分别打开article_add.php(添加文章)和article_edit.php(编辑文章),查找如下代码:
$filename = trim(cn_substrR($filename,40));
接下来,在后面加上:
//DedeCMS自定义文件名重复解决方法
if(!empty($filename))
{
$checksql = $dsql->GetOne("SELECT * FROM `#@__archives` WHERE filename='".$filename."' and arcrank > -2");
if($checksql)
{
ShowMsg("你的自定义文件名已存在,请重写填写!","-1");
exit();
}
}
最后,保存article_add.php和article_edit.php.
这样就会在文件名重复时提醒,修改即可.
PHP中报Warning: Cannot modify header information - headers already sent by (output错误解决方法
检查以下两个方面:
一、在文件的第一个<?php之前不得有任何内容,包括空白、空行
二、在header('Location:news_list.php?message=$message');语句之前不得有任何的echo或者其它输出内容的语句
满足以上两点的情况下,就不会报告你这个错误。
灵活使用DedeCMS进行建站时,在判断字段内容进行个性输出,是建站者所必须掌握的一个持基。影子互联接合多年网站建设经验,分享如下:
方法一:
{dede:field name='array' runphp='yes'} if (@me['shorttitle']=='') @me=@me['title'];else @me=@me['shorttitle'];{/dede:field}
方法二:
[field:array runphp='yes'] if (@me['shorttitle']=='') @me=@me['title'];else @me=@me['shorttitle'];[/field:array]
这个方法可以在{dede:arclist}标签中套用。
方法三:
有时标题过长,全部显示会导致排版混乱,影响美观。但显示一部分又影响用户体验。我们希望当标题在一定长度范围内时,全标题显示,当标题过时,只显示一定长度,后面加省略号,然后当鼠标移上去时再显示标题的全部内容,这样就即做到了不影响版面的布局,又做到了标题内容的全部显示。
这里给出不需要修改程序,只修改模板的方法。举例,下面的标题列表,最长的标题50字节,只想显示30字节,模板代码如下:
<ul>
{dede:arclist titlelen='50' row='10'}
<li><a title="[field:title /]" href="[field:filename%20/]">[field:title function='( strlen("@me")>30 ? cn_substr("@me",30)."..." : "@me" )'/]</a></li>
{/dede:arclist}
</ul>
很明显,解决问题的关键在于用 [field:title function='( strlen("@me")>34 ? cn_substr("@me",30)."..." : "@me" ) ' /] 代替了原来的 [field:title /] ,在输出标题时多了一个判断的过程,先判断标题是否大于34字节,如果大于则只输出30字节的长度,并加上省略号。而title="[field:title /]" 则不受影响,鼠标移上去时显示标题的全部内容。
织梦通过dede_archives表中的arcrank和ismake两个字段控制文章的审核和状态。其中arcrank是审核控制字段,它有-1和0两个值;ismake是静态动态控制字段,它有三个值:0,1,-1。
另外,文章微表dede_arctiny中的arcrank字段与dede_archives表中的arcrank状态同步,也是审核控制字段,这两者需同步一致方可.
以上情况组合起来会有多种情况:
审核状态生成html:$arcrank=-1 $ismake = 0 (但是后台文章列表那里显示没有生成,点击修改文章是显示以生成,其实没生成,因为是未审核,一但审核,自动变成1)。
审核状态动态浏览:$arcrank=-1 $ismake = -1 ;
开放状态生成html:$arcrank=0 $ismake = 1 ;
开放状态动态浏览:$arcrank=0 $ismake = -1 ;
通过以上的情况,我们可以分析多种情况下出现的问题,以求解决.同时要注意微表dede_arctiny中的arcrank状态同步.
微表dede_arctiny是起到索引的作用,在前台列表中即可通过微表来显示文章的.
织梦有个定时审核插件,即是通过修改微表dede_arctiny中的arcrank字段与dede_archives表中的arcrank字段来实现的.
同时,在审核过程中,文章相关的标签表dede_taglist中的相关标签的arcrank字段也会通过审核状态.
以上,即是DedeCMS织梦文章审核机制的简单说明.
php版清除html标签代码片段
$content = preg_replace("/<script[sS]*?</script>/i","",$content,3); //第四个参数中的3表示替换3次,默认是-1,替换全部
$content = preg_replace("/<style[sS]*?</style>/i","",$content,-1);
$content = preg_replace("/<iframe[sS]*?</iframe>/i","",$content,-1);
$content = preg_replace("/<input.*?/>/i","",$content,-1);
$content = preg_replace("/<!--.*?-->/si","",$content,-1);
$content = preg_replace("/<([a-zA-Z]+)[^>]*>/","<1>",$content,-1);//过滤所有html标签的属性
ecshop在IIS7 8上的rewrite重写规则web.config,以下才是正确姿势:
其实iisrewrite配置成功后,相应的rewrite规则写到根目录的web.config文件中即可。ecshop2.7.3对应的规则如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Index" stopProcessing="true">
<match url="^index.html" />
<action type="Rewrite" url="index.php" />
</rule>
<rule name="Feed-C" stopProcessing="true">
<match url="^feed-c([0-9]+).xml" />
<action type="Rewrite" url="feed.php?cat={R:1}" />
</rule>
<rule name="Feed-B" stopProcessing="true">
<match url="^feed-b([0-9]+).xml" />
<action type="Rewrite" url="feed.php?brand={R:1}" />
</rule>
<rule name="Feed" stopProcessing="true">
<match url="^feed.xml" />
<action type="Rewrite" url="feed.php" />
</rule>
<rule name="Category6" stopProcessing="true">
<match url="^category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*)-([0-9]+)-(.+)-([_0-9a-z-]+).html" />
<action type="Rewrite" url="category.php?id={R:1}&brand={R:2}&price_min={R:3}&price_max={R:4}&filter_attr={R:5}&page={R:6}&sort={R:7}&order={R:8}" />
</rule>
<rule name="Category5" stopProcessing="true">
<match url="^category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-]*).html" />
<action type="Rewrite" url="category.php?id={R:1}&brand={R:2}&price_min={R:3}&price_max={R:4}&filter_attr={R:5}" />
</rule>
<rule name="Category4" stopProcessing="true">
<match url="^category-([0-9]+)-b([0-9]+)-([0-9]+)-(.+)-([_0-9a-z-]+).html" />
<action type="Rewrite" url="category.php?id={R:1}&brand={R:2}&page={R:3}&sort={R:4}&order={R:5}" />
</rule>
<rule name="Category3" stopProcessing="true">
<match url="^category-([0-9]+)-b([0-9]+)-([0-9]+).html" />
<action type="Rewrite" url="category.php?id={R:1}&brand={R:2}&page={R:3}" />
</rule>
<rule name="Category2" stopProcessing="true">
<match url="^category-([0-9]+)-b([0-9]+).html" />
<action type="Rewrite" url="category.php?id={R:1}&brand={R:2}" />
</rule>
<rule name="Category1" stopProcessing="true">
<match url="^category-([0-9]+).html" />
<action type="Rewrite" url="category.php?id={R:1}" />
</rule>
<rule name="Goods" stopProcessing="true">
<match url="^goods-([0-9]+).html" />
<action type="Rewrite" url="goods.php?id={R:1}" />
</rule>
<rule name="Cat3" stopProcessing="true">
<match url="^article_cat-([0-9]+)-([0-9]+)-(.+)-([_0-9a-z-]+).html" />
<action type="Rewrite" url="article_cat.php?id={R:1}&page={R:2}&sort={R:3}&order={R:4}" />
</rule>
<rule name="Cat2" stopProcessing="true">
<match url="^article_cat-([0-9]+)-([0-9]+).html" />
<action type="Rewrite" url="article_cat.php?id={R:1}&page={R:2}" />
</rule>
<rule name="Cat1" stopProcessing="true">
<match url="^article_cat-([0-9]+).html" />
<action type="Rewrite" url="article_cat.php?id={R:1}" />
</rule>
<rule name="Articles" stopProcessing="true">
<match url="^article-([0-9]+).html" />
<action type="Rewrite" url="article.php?id={R:1}" />
</rule>
<rule name="Brand4" stopProcessing="true">
<match url="^brand-([0-9]+)-c([0-9]+)-([0-9]+)-(.+)-([_0-9a-z-]+).html" />
<action type="Rewrite" url="brand.php?id={R:1}&cat={R:2}&page={R:3}&sort={R:4}&order={R:5}" />
</rule>
<rule name="Brand3" stopProcessing="true">
<match url="^brand-([0-9]+)-c([0-9]+)-([0-9]+).html" />
<action type="Rewrite" url="brand.php?id={R:1}&cat={R:2}&page={R:3}" />
</rule>
<rule name="Brand2" stopProcessing="true">
<match url="^brand-([0-9]+)-c([0-9]+).html" />
<action type="Rewrite" url="brand.php?id={R:1}&cat={R:2}" />
</rule>
<rule name="Brand1" stopProcessing="true">
<match url="^brand-([0-9]+).html" />
<action type="Rewrite" url="brand.php?id={R:1}" />
</rule>
<rule name="Search" stopProcessing="true">
<match url="^tag-([_0-9a-z-]+).html" />
<action type="Rewrite" url="search.php?keywords={R:1}" />
</rule>
<rule name="Snatch" stopProcessing="true">
<match url="^snatch-([0-9]+).html" />
<action type="Rewrite" url="snatch.php?id={R:1}" />
</rule>
<rule name="Group_Buy" stopProcessing="true">
<match url="^group_buy-([0-9]+).html" />
<action type="Rewrite" url="group_buy.php?act=view&id={R:1}" />
</rule>
<rule name="Auction" stopProcessing="true">
<match url="^auction-([0-9]+).html" />
<action type="Rewrite" url="auction.php?act=view&id={R:1}" />
</rule>
<rule name="Exchange5" stopProcessing="true">
<match url="^exchange-id([0-9]+).html" />
<action type="Rewrite" url="exchange.php?id={R:1}&act=view" />
</rule>
<rule name="Exchange4" stopProcessing="true">
<match url="^exchange-([0-9]+)-min([0-9]+)-max([0-9]+)-([0-9]+)-(.+)-([_0-9a-z-]+).html" />
<action type="Rewrite" url="exchange.php?cat_id={R:1}&integral_min={R:2}&integral_max={R:3}&page={R:4}&sort={R:5}&order={R:6}" />
</rule>
<rule name="Exchange3" stopProcessing="true">
<match url="^exchange-([0-9]+)-([0-9]+)-(.+)-([_0-9a-z-]+).html" />
<action type="Rewrite" url="exchange.php?cat_id={R:1}&page={R:2}&sort={R:3}&order={R:4}" />
</rule>
<rule name="Exchange2" stopProcessing="true">
<match url="^exchange-([0-9]+)-([0-9]+).html" />
<action type="Rewrite" url="exchange.php?cat_id={R:1}&page={R:2}" />
</rule>
<rule name="Exchange1" stopProcessing="true">
<match url="^exchange-([0-9]+).html" />
<action type="Rewrite" url="exchange.php?cat_id={R:1}" />
</rule>
<rule name="Topic" stopProcessing="true">
<match url="^topic-([0-9]+).html" />
<action type="Rewrite" url="topic.php?topic_id={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
一开始网站试了很多规则,都提示某行错误,白色不得其解,后来发现是“&”搞的鬼,把对应的“&”都修改为“&”即可。