29

include、include_once与require函数区别

三个函数有相同又有不同,相同点是都可以包含文件,不同点看以下分析。

include "function.inc.php";
include_once "function.inc.php";
require "function.inc.php";

include()

如果被包含内容有问题或不存在,系统则产生一个警告(系统跳过错误,执行以下内容)。

include_once()

比include()功能强,多了一次判断被包含是否被包含过,如果使用include_once()包含多次则执行一次。

require()

如果被包含内容有问题或不存在,系统则产生一个致命的错误(系统崩溃停止)。

比较:

include_once()比include()功能强,功能越强就越多一些算法,效率就没有include()高,所以如果不是绝对必要使用include_once()时,则使用include()。

include()与require():include()根据情况择机去包含文件时使用,也就是说如果被包含文件不存在也不会对脚本的以下执行造成多大的影响;require()固定包含文件时使用,也就是说如果被包含文件不存在则以下程序无法正常运行时,使用require()。

29

实现IE兼容效果引入CSS及文件方法

万恶的IE,但总算有个解决的方法。以前我也看别人的博客中说过,写CSS不一定非要兼容IE所有版本,最多也就是兼容它主流的一两种版本。我也是这个见解,再说了,也不是人人都用IE的,虽然它很牛,但这是中国。360浏览器、QQ浏览器等,虽然使用得也是IE的内核,但是在显示方面是与IE有所区别的,当然,在网站开发中,还是使用火狐为主开发浏览器的,最主要的是他的执行标准还是相对标准的;还有一点,是个人偏好问题,喜欢他自带的开发工具,已经是习惯了。

方法一:
<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if lt IE 6]> IE6以下(不包含IE6)版本可识别 <![endif]-->
<!--[if gte IE 6]> IE6以上(包含IE6)版本可识别 <![endif]-->
<!--[if IE 7]> 仅IE7可识别 <![endif]-->
<!--[if lt IE 7]> IE7以下(不包含IE7)版本可识别 <![endif]-->
<!--[if gte IE 7]> IE7以上(包含IE7)版本可识别 <![endif]-->
<!--[if IE 8]> 仅IE8可识别 <![endif]-->
<!--[if IE 9]> 仅IE9可识别 <![endif]-->

方法二:
<!DOCTYPE html>
<!--[if IE 6 ]> <html class="ie6 lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 6 ]> <html class="lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 7 ]> <html class="lte_ie7 lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if lte IE 8 ]> <html class="lte_ie8" lang="zh-CN"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="zh-CN"><!--<![endif]-->

实例:IE6及以上版本引入ie.css,增加在head区。
<!--[if gte IE 6]><link href="css/ie.css" rel='stylesheet' type='text/css' /><![endif]-->

<!--[if gte IE 6]><style>.body{margin:0;padding:0}......</style><![endif]-->

<!--[if IE 6]> <html id="ie6" lang="zh-CN"> <![endif]-->

个人还是喜欢使用IE可识别标签引入CSS的方法,html页面不至于看着很乱,如果CSS代码不多,也可以直接写在html中,实例中的第三种方法是最不建议使用的,写出来只为了了解,它会造成大量的HTTP请求。

**************************************************************

CSS hack由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack!

目前IE内核浏览器仍然是国内主流浏览器,占据着PC浏览器的大部分市场份额,版本从IE6到IE10,所有前段工作者都必须面对和解决多个ie浏览器对代码的兼容性问题。在很多情况下,我们需要专门针对IE写css样式,即针对IE的css hack,下面将详细介绍这些内容:

1、常见的特殊符号的应用:

IE6:

_selector{property:value;}

selector{property:value;property:value !important;} //IE6 不支持同一选择符中的 !important

IE7:

+selector{property:value;}

IE8:

selector{property:value\0;}

IE6 & IE7:

*selector{property:value;}

IE6 & IE7 & IE8:

selector{property:value\9;}

总结起来,如下:

其中,S表示Standards Mode即标准模式,Q表示Quirks Mode,即兼容模式。

(了解更多Quirks模式、Strict(Standars)模式?)

hack 示例 IE6(S) IE6(Q) IE7(S) IE7(Q) IE8(S) IE8(Q)
* *color Yes Yes Yes Yes No Yes
+ +color Yes Yes Yes Yes No Yes
- -color Yes Yes No No No No
_ _color Yes Yes No Yes No Yes
# #color Yes Yes Yes Yes No Yes
\0 color\0 No No No No Yes No
\9 color\9 Yes Yes Yes Yes Yes Yes
!important color:blue !important;
color:green;
No No Yes No Yes No

2、条件注释语句(<!–[if IE]> <![endif]–>)

所有的IE可识别

仅IE6可识别

IE6以及IE6以上版本可识别

IE7以下版本可识别

lt 表示less than 当前条件版本以下的版本,不包含当前版本。

gte 表示greeter than or equal 当前版本以上版本,并包含当前版本。

lte 表示less than or equal 当前版本以下版本,并包含当前版本。

3、meta声明

由于IE8 可能会将页面按照 IE7 模式进行渲染,针对 多版本IE的现状,通常会采用设置 X-UA-Compatible HTTP 头的方式将页面在IE中采用统一的渲染模式。

4、其他(/*\**/注释法)

网上也流传着这样一种ie hack方法

.color1{ color:#F00; color/*\**/:#00F /*\**/}/*IE6,IE7,IE8,FF,OP,SA识别*/
.color2{ color:#F00; color /*\**/:#00F /*\9**/}/*IE7,IE8,FF,OP,SA识别*/
.color3{ color:#F00; color/*\**/:#00F \9}/*IE6,IE7,IE8识别*/
.color4{ color:#F00; color /*\**/:#00F\9}/*IE7,IE8识别*//*“color”和“/*\**/”之间有个空格*/

分析下:
background-color:blue; 各个浏览器都认识,这里给firefox用;
background-color:red\9;\9所有的ie浏览器可识别;
background-color:yellow\0; \0 是留给ie8的,但笔者测试,发现最新版opera也认识,汗。。。不过且慢,后面自有hack写了给opera认的,所以,\0我们就认为是给ie8留的;
+background-color:pink; + ie7定了;
_background-color:orange; _专门留给神奇的ie6;
:root #test { background-color:purple\9; } :root是给ie9的,网上流传了个版本是 :root #test { background-color:purple\0;},呃。。。这个。。。,新版opera也认识,所以经笔者反复验证最终ie9特有的为:root 选择符 {属性\9;}
@media all and (min-width:0px){ #test {background-color:black\0;} } 这个是老是跟ie抢着认\0的神奇的opera,必须加个\0,不然firefox,chrome,safari也都认识。。。
@media screen and (-webkit-min-device-pixel-ratio:0){ #test {background-color:gray;} }最后这个是浏览器新贵chrome和safari的。

好了就这么多了,特别注意以上顺序是不可以改变的。css hack虽然可以解决个浏览器之间css显示的差异问题,但是毕竟不符合W3C规范,我们平时写css最好是按照标准来,这样对我们以后维护也是大有好处的,实在不行再用。

区别不同浏览器的CSS hack写法:

区别IE6与FF:
background:orange;*background:blue;

区别IE6与IE7:
background:green !important;background:blue;

区别IE7与FF:
background:orange; *background:green;

区别FF,IE7,IE6:
background:orange;*background:green !important;*background:blue;

注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;

IE6 IE7 FF
* ×
!important ×

——————————————————
另外再补充一个,下划线”_”,
IE6支持下划线,IE7和firefox均不支持下划线。

IE6 IE7 FF
* ×
!important ×
_ × ×

于是大家还可以这样来区分IE6,IE7,firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。

28

改写响应式网站常用CSS属性及使用方法总结(未完)

其实这些属性即使平时也是常用的,只是在改写响应式网站时,个人认为是更为常用的。由于响应式网站要适应各种屏幕宽度,所以要求制作者在使用CSS时能更强的运用好CSS的各种属性,处理好网站中的文本、图片、背景图片等。改写响应式网站,尤其是现有的PC网站强改响应式网站,要达到尽量好的适应效果,必须灵活运用CSS的各种属性。
下面内容一些通俗易懂的语言做了解释,非那些大网站写得好像不是给我这种文化水平低的人看的内容似的,都是给专业人士看的似的,可还有几个专业人士去查看你那些大学没毕业就看不懂的语言。生气…

一、CSS文本类

text-overflow 属性

默认值:clip
继承性:no
版本: CSS3
JavaScript语法:object.style.textOverflow=”ellipsis”
语法:text-overflow: clip|ellipsis|string;
以下值的前提是行定了宽度和高度。
clip 多余部分剪切(或者叫隐藏)。
ellipsis 如有多余文本,在行最末处以省略号显示(占一字宽度)。
string 按上一个值去理解,也就是把上一个值显示省略的部分换成你自己设定的内容(没使用过,看解释感觉我个人感觉没什么太大的实际意义,没研究)。

在使用ellipsis值时,要使用white-space: nowrap;和overflow: hidden;联合使用才能达到效果。
而clip值我一般是在写响应式时强制解除ellipsis的时候使用,也可能是我对它的理解还不够没感觉还有别的什么用处。

CSS示例:
div.test
{
text-overflow:ellipsis;
white-space: nowrap; //文字不换行
overflow: hidden; //溢出隐藏
}

ellipsis效果:

织梦先生

transform 属性
默认值: none
继承性: no
版本: CSS3
JavaScript 语法: object.style.transform=”rotate(7deg)”

CSS示例:
div
{
transform:rotate(-45deg);
-ms-transform:rotate(-45deg); /* IE 9 */
-moz-transform:rotate(-45deg); /* Firefox */
-webkit-transform:rotate(-45deg); /* Safari 和 Chrome */
-o-transform:rotate(-45deg); /* Opera */
}

效果:

织梦先生

二、CSS背景图片类

background 属性

默认值: not specified
继承性: no
版本: CSS1 + CSS3
JavaScript 语法: object.style.background=”white url(paper.gif) repeat-y”
background-color 规定要使用的背景颜色。
background-position 规定背景图像的位置。
background-size 规定背景图片的尺寸。 (CSS3属性)
background-repeat 规定如何重复背景图像。
background-origin 规定背景图片的定位区域。 (CSS3属性)
background-clip 规定背景的绘制区域。 (CSS3属性)
background-attachment 规定背景图像是否固定或者随着页面的其余部分滚动。
background-image 规定要使用的背景图像。
inherit 规定应该从父元素继承 background 属性的设置。

CSS示例:
body
{
background: #00FF00 url(bgimage.gif) no-repeat fixed top;
}

background-position 属性

默认值: 0% 0%
继承性: no
版本: CSS1
JavaScript 语法: object.style.backgroundPosition=”center”
值:
top left
top center
top right
center left
center center
center right
bottom left
bottom center
bottom right
如果只规定了一个关键词,那么第二个值将是”center”。
第一个值是水平位置,第二个值是垂直位置。
左上角是 0% 0%。右下角是 100% 100%。
可以使用百分比(%),也可以使用像素(px)

CSS示例:
body
{
background-image:url(‘bgimage.gif’);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:center;
}

提示:您需要把 background-attachment 属性设置为 “fixed”,才能保证该属性在 Firefox 和 Opera 中正常工作。

三、图片类

opacity属性

默认值: 1
继承性: no
版本: CSS3
JavaScript 语法: object.style.opacity=0.5
值:
value 规定不透明度。从 0.0 (完全透明)到 1.0(完全不透明)。
inherit 应该从父元素继承 opacity 属性的值。

CSS示例:
div{opacity:0.5;}

效果:

织梦先生
织梦先生
织梦先生
织梦先生
织梦先生
23

sdcms常用手册汇总

一、sdcms模板语法规则

1.变量表示(或常量)
{name}将被解析成<%=name%><%=name%><%=name%>,表示显示变量name的值,其中的“name”由英文字母、数字和下划线组成首字母必须是英文字母或者下划线。

2.条件判断
{if *}{elseif *}*{else}*{/if} 或{if *}{/if} 其中{if *}中的*就是此判断语句的条件表达式,符合Asp的表达式。

3.模板包含
格式:{sdcms:include(“路径+模板名称+后缀”)}
示范:{sdcms:include(“sdcms_head.asp”)}
说明:上述示范表示包含当前模板所在文件夹的“sdcms_head.asp”文件

4.定义变量
{dim a:a=1}将被解析为<%dim a:a=1%><%dim><%a=1%>

如果您不习惯这套语法,也可以直接在模板中书写Asp代码,例如:<%=now()%><%response.write><%=test%>
<%dim a:a=”1%”>,相当于定义了个变量a,且值为1
<%=name%>

二、sdcms全局标签

什么是全局标签?
全局标签意思是在SDCMS的任何模板页面均可正常调用的标签。
Continue reading

18

个人总结的织梦手册(实用一)

//作者:莪叆啰    整理:织梦先生    QQ:1234567

//织梦的网站查询手册

//红色为问题集  //橄榄色为注释  //紫色为拓展

 

1.网站标题(优化):
{dede:field.title/}_{dede:global.cfg_webname/}

 

2.当前名称:

{dede:field name='typename'/}

 

3.导航条(父类、子类):

 

4.面包屑:

生成的代码为 <a href=”#”>首页</a> > <a href=”#”>新闻动态</a>

函数的位置 include/typelink.class.php
Continue reading

13

发带有SQL语句的文章时被百度云加速拦截的解决方法

今天又碰到新问题了,从昨天就开始研究怎么禁用WordPress的自动保存和修订版本问题,在网上找了很多方法,也只是禁用了自动保存功能,禁用修订版本还是没有实现,在测试这两项功能时,由于发布修改的文章内容中带我SQL语句(当时的提示语:问题描述  mrdede.com开启了安全防护策略。您刚才的操作被安全防护策略禁止,可能的操作是:提交某个语句、SQL命令、异常数据提交等),点击“发布”或“更新”后,出现如下图跳转,也就是发布更新不成功,被拦截。

被百度云加速拦截

自已发带有SQL语句的文章时被百度云加速拦截的解决方法

我也看到了提示页下的百度云加速的提示,但是刚开始一直以为就是服务器上安装的安全狗的问题,之后在服务器上就是各种修改安全策略等等,还是不行,最后没招儿了,就研究一下百度云加速方面吧(现在想想,可能我真是有些脑钝啊!)。

在百度云加速中找来找去,发现一个添加IP白名单的位置(我的网站>>对应网站的“配置选项”>>安全>>Web应用防火墙(WAF防护)>>),如下图:

百度云加速安全策略白名单在此处添加自己的IP或IP段,一分钟后,测试发布更新带有SQL语句的文章,成功!!! Continue reading

12

忘记织梦管理员密码怎么修改

织梦CMS网站内容管理系统,是国内用户最多的网站程序,可再开发性强,深受广大站长朋友的喜爱。那么我们在初装的时候,由于某些问题或者是莫名的出错,造成织梦后台无法修改管理员密码,总是提示密码不正确。以前我也时不时的会碰到这种问题,现在把修改方法写出来,希望能帮助到个位和我一样喜爱织梦CMS的朋友。

分析:

织梦管理员密码存储表:dede_admin(“dede_”,这是默认表前缀)

织梦管理员密码加密方式:MD5

织梦管理员密码取位方法:MD5(32位小写)后,去掉前去5位,去掉后去7位,取中间20位

修改方法一:

MD5(32位小写)加密“admin”(不含引号)后,得21232f297a57a5a743894a0e4a801fc3,按上面的取位方法,得f297a57a5a743894a0e4

进入数据库,找到dede_admin表,浏览进入,编辑ID为1的条目,修改字段为pwd下的值为f297a57a5a743894a0e4

点击“执行”或“保存”,写成(现在管理员密码即为admin)。

修改方法二:

使用织梦cms后台的SQL语句功能修改管理员密码

织梦后台>>系统>>SQL命令行工具>>运行SQL命令行>>单行命令(支持简单查询)

在表单处输入

点击“确定”,完成(现在管理员密码即为admin)。

注:这只是两个基本的修改管理员密码的方法,具体你想怎么修改,扩展一下思维也是可以的。

12

禁用WordPress自动保存与修订历史功能

在新版本的WordPress博客程序中,避免数据丢失,添加了自动保存功能,默认开启了这一功能。用户在使用WordPress撰写博文时,每隔一段时间,WordPress都会将用户所添加的内容进行保存。

有利就有弊,与此对应的弊端是,一旦WordPress保存一次,WordPress的MySQL数据库中的wp_posts表里就会增加一行无用数据,一段时间后,此举会使得用户的数据库里含有大量的垃圾内容,使得数据库不停的增大,最后性能也会下降。

现在开始看看如何关闭wordpress的自动保存功能,具体步骤如下:

一、修改post-new.php文件

禁用自动保存 WordPress程序下wp-admin文件夹中找到post-new.php和post.php文件

在post-new.php文件中搜索以下代码:

在post.php文件中搜索以下代码:

搜索到结果,然后在其前面加上“//”(不含引号)注释掉即可;

切记:在post.php文件搜索结果上一行判断代码的末尾加一个英文分号,否则发布会出错。

或者把post.php文件搜索结果上一行的if ( 'attachment' !== $post_type )也注释掉。我不懂PHP,但是我用我的笨脑瓜去想:判断的结果都不要了,那还要那个判断有什么用。你说呢?

二、修改wp-config.php文件
Continue reading

10

出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常

症状:

在使用Discuz3.2搭建论坛时,所有安装正确的完成后,在应用的插件中开启QQ互联后,出现了假开启现象。之后到 工具>>云平台诊断工具 中,查看到没有显示ID和KEY。

在百度上搜索了好一会,看到了各种解决办法,主要分为两种方法:1.在应用中关闭QQ互联,云平台诊断工具中删除ID和KEY并改为未注册,后重新开启QQ互联;2,使用SQL操作数据库。由于本人对数据库的SQL语句不是很了解,所以没有使用那种方法,开始研究第一种方法,可是在关闭QQ互联时,又出问题了,具体的提示内容忘记了,反正意思就是出错。

结果又搜索了好一会,无解。最后,通过我的另一种思路,修改成功。

修改思路:

现在是在后台无法关闭QQ互联,那么我可以通过直接进入数据库,修改对应数据表中记录的插件开关(1或0)。

修改方法:

进入本站对应的数据库,找到数据表pre_common_plugin(“pre_”这是默认的表前缀),点击“浏览”此表,进入后找到name字段值为“QQ互联”的内容,这时看他的available字段值,应该是“1”,点击“编辑”,把available的字段值修改为0,点击“保存”或“执行”。

回到论坛后台,应用>>插件,这时,看QQ互联就是未开启状态,点击开启,同意协议……之后按提示操作;

再到“云平台诊断工具”看一下,这时ID和KEY就出现了,应该是已经正常了。

注:此博客中多为我亲身经历的程序问题,所以修改方法也都是自己在实际中运用过的。如有疑问可联系本人(织梦先生),互相交流学习。

09

织梦网站搬家还原数据库后不能正常链接到模板或CSS文件

今天一个朋友由于原来的服务器公司的误操作,造成VPS上网站的数据大量丢失,一气之下找了服务商。

网站搬家后,在织梦后台还原数据,生成首页、栏目和文档,之后显示不正常,结果找我去帮忙。

我看了下源码,显示CSS的链接地址是/templets/default/style/***.css。

检查了一下,系统设置的模板文件夹是zs,是正确的;又看了下“生成”>>首页模板文件,也是正确的。使用动态查看首页,还是不正常。

弄了好一会,后来想起来织梦猫的模板详情页写过一句话,还原数据库后无论模板文件夹输入是否正确,都要重新点击一下确定(不是原话,但大体是这个意思)。

我就把在织梦的系统设置下改了下模板文件名,发现页面链接中显示了我新改的文件名,我又改回原来的zs,结果,正常显示了。

这是亲身经历,让我印象深刻。

在帮别人修改织梦模板或者是织梦后台程序的过程中,也是自己学习和进步的好机会。

总结:无论是在织梦网站搬家后还原数据库,还是新织梦网站还原下载来的带数据库的模板,在出现显示不正常的情况下,首先进入织梦后台,系统>>系统基本参数,查看“模板默认风格”是否正确,不正确的修改为正确的文件夹名,正确的也要点一下“确定”;其次,生成>>更新主页HTML,查看“选择主页模板”的文件夹名和首页模板名,是否正确,还是不正确的修改为正确的,正确的也要点一下“生成HTML”。

注:这种方法只是织梦网站显示不正常的方法之一,网站的不正常显示当然是有着很多的可能性的,这只是其中之一。

如果有相关问题的可以联系本人,一起研究、学习交流。