person

**块级元素(block elements),来源于CSS盒子模型。块级元素包含width height,padding,border与margin,他们的排列方式是从上到下排列。 行内元素,排列方式是水平排列。
行内元素(inline elements)排列方式是水平排列。
行内块元素(inline-block elements)在内部他的表现类似block元素,比如他拥有block元素的width height,即可以设定自己的高宽值,亦可以设定自己的padding,border与margin,而外部的排列方式有类似行内元素,即水平排列,而不是像块级元素一样从上到下排列。**

  

  Replaced element 置换元素

  说到这,有必要提的就是置换元素。何为置换元素,在html中,有类特殊的元素如:

  |<input>|<button>|<select>|<textarea>|<label>

  他们被称为可置换元素(Replaced element)。他们区别一般inline元素(相对而言,称non-replaced element)是:这些元素拥有内在尺寸(intrinsic dimensions),他们可以设置width/height属性。他们的性质同设置了display:inline-block的元素一致。上述六个标签在现代浏览器中即为天生的inline-block元素。

  包裹性

  包裹性的另一种说法就是让元素inline-block化。意思是默认情况下一个div的宽度是以100%显示的,而一旦给这个div添加了postion:absolute属性,则100%的默认宽度会变成自适应的内部元素宽度。而诸如:

  overflow | position:absolute | float:left/right 等都可以让元素inline-block化产生包裹性。

  而包裹性的作用很多,其中一个是可以使用其来清除元素的浮动。

  inline-block的作用

   css布局创建网站,浮动绝对占据了很大的比例.大块区域如主内容及侧边栏,以及在其中的小块区域,都可以看到浮动的影子。只是浮动经常会产生一些问题,那么问题来了?浮动是唯一的解决方案吗?

  浮动通常表现正常,但有时候搞起来会很纠结。特别是处理内部容器中的浮动,比如对一排图片使用浮动后对齐出现问题。So,inline-block是我们的另一种选择。使用这种属性可以模拟部分浮动的特征,而不需要处理一些浮动带来的问题。

  这里极力推荐一篇张鑫旭的文章:拜拜了浮动布局-基于display:inline-block的列表布局。文章讲解的非常透彻,也将使用inline-block需要解决的兼容问题给出了十分详尽可靠的解决方案。

  

  inline-block和float的区别

  虽然设置浮动跟设置inline-block有些特征类似,但两者的区别还是非常明显的:

文档流(Document flow):浮动元素会脱离文档流,并使得周围元素环绕这个元素。而inline-block元素仍在文档流内。因此设置inline-block不需要清除浮动。当然,周围元素不会环绕这个元素,你也不可能通过清除inline-block就让一个元素跑到下面去。

水平位置(Horizontal position):很明显你不能通过给父元素设置text-align:center让浮动元素居中。事实上定位类属性设置到父元素上,均不会影响父元素内浮动的元素。但是父元素内元素如果设置了display:inline-block,则对父元素设置一些定位属性会影响到子元素。(这还是因为浮动元素脱离文档流的关系)。

垂直对齐(Vertical alignment):inline-block元素沿着默认的基线对齐。浮动元素紧贴顶部。你可以通过vertical属性设置这个默认基线,但对浮动元素这种方法就不行了。这也是我倾向于inline-block的主要原因。

空白(Whitespace):inline-block包含html空白节点。如果你的html中一系列元素每个元素之间都换行了,当你对这些元素设置inline-block时,这些元素之间就会出现空白。而浮动元素会忽略空白节点,互相紧贴

IE6和IE7:Ie67对此属性部分支持。如果你要兼容这些浏览器,必须解决这个问题。可参照去除inline-block元素间间距的N种方法。

为什么会想到这个呢?

因为今天恰巧在优化之前以前写的模板底部,突然发现对于版权来讲,通过都是©建站时间- 今年时间 ,输出今年时间特别容易,直接→


date("Y");

就好了,可是要输出建站时间,是比较头疼的事情,但是染念我站在用户的角度想:直接让用户改文件是不是很麻烦?也要考虑一些小白用户,减少他们的折腾吧。于是就开始自己折腾了,希望这时间可以减少别人的时间!

思路起源

对于discuz来说,这比较蛋疼,因为这个坑首先是我先想到的,(别人没分享我就想自己是第一,哼哼~),而且discuz本身也没有自带的系统变量来支持,唯一想到的就是看看数据库有没有残留一些关于建站时间的。突然看见群里有人回应了我,我感觉这想法太棒了。

 

 

 

 

 

 

假如没有他这么讲,怕是要在系统配置等等数据表找死,或许可以找到,但是这想法太赞了。当网站安装成功了,系统会自动产生uid1的管理员,用此管理员的创建时间就可以完美取代!

开始搞

直接上数据表图

很棒,有这个字段
接下来,
只需要获取他了


$chw0 = DB::result(DB::query("SELECT regdate FROM ".DB::table('common_member')." WHERE uid = '1'"));

注意的是:获取的是时间戳哦,但是转换日期很容易,继续


$chw = date("Y",$chw0);

最后输出2017,这就完事了!

xss原理和防护

为什么要发表这篇文章呢?原因看下图

很无奈,表示xss之前也是听过,只是没有真的去研究过,所以这次为了审核只能研究一番了。

XSS-即Cross Site Scripting. 为了与"CSS"不混淆,故简称XSS.

但是别人已经写过的文章,我并不想完全复制下来

如果未来他网站比我先倒闭,我就写吧,现在只需点击进入

 

看了上面这么多,总结起来就是那几个特殊标签以及字符的关系,所以只需要屏蔽这些字符即可。


function gjj($str)

{

$farr = array(                       //定义过滤规则的数组

"/\\s+/",

"/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",

"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",

);

$str = preg_replace($farr,"",$str);           //用正则方式对字符串进行过滤

return addslashes($str);     //返回字符串时对引号进行转义

}

function hg_input_bb($array)

{

if (is_array($array))

{

foreach($array AS $k => $v)          //遍历提交上来的全局变量数组

{

$array[$k] = hg_input_bb($v);

}

}

else

{

$array = gjj($array);

}

return $array;

}

$_REQUEST = hg_input_bb($_REQUEST);    //过略request方式的请求

$_GET = hg_input_bb($_GET);                    //过滤get方式的请求

$_POST = hg_input_bb($_POST);             //过滤post方式的请求

 
可以过滤某些特殊字符和常见的html标签,防范基础的xss共攻击和sql注入。
(上面方法名可以自己换哦~)

只要这样,xss byebye

Discuz实现tab切换版块

昨天闲得没事,就去重构了整个discuz.htm的文件。但是,

并没有这么顺利,于是去了空间吐槽了一波。

最神奇地就是,早上打开本地,tab切换突然活了,思索了一下,大概是存缓的问题了吧。

 

终于是实现了波,无刷新切换版块,也改变了dz传统的布局

其实我做这个不是第一个,我所知道的是雨伦,昨晚还好有他的帮忙,参考了他写的教程,少走了一些弯路(233,一开始想全部自己调用数据库,然后死在$forum[icon]判断有无http的问题上,我写好正则,但是htm就认为是未知量。。大概是重新赋值错了吧。为了不在折腾,于是就只能害羞地用原变量了)

教程链接          传送门走起

/*需要再解决的问题*/

如果版块再多点,加载还是有问题(慢),于是应该采用下ajax或者pjax吧。

 

/*笔记*/

<!--{loop $catlist $key $cat}-->

是循环分区的

<!--{loop $cat[forums] $forumid}-->

是循环分区下版块的

<ul class="grouplist clearfix hobbyList">
<!--{loop $catlist $key $cat}-->
<!--{hook/index_catlist $cat[fid]}-->
<!--{loop $cat[forums] $forumid}-->
<!--{eval $forum=$forumlist[$forumid];}-->
<!--{eval $forumurl = !empty($forum['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$forum['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid='.$forum['fid'];}-->
<li class="gb-list-item">
#####
</li>
<!--{/loop}-->
<!--{/loop}-->
</ul>

你看,直接把分区和版块一起循环,会显示,分区找不到所固定的样式,只能把全部输出

而要体现其他分区下的版块

则要

<!--{loop $catlist $key $cat}-->
<div  class="bd" style="display:none;">
<!--{loop $cat[forums] $forumid}-->
<!--{eval $forum=$forumlist[$forumid];}-->
<!--{eval $forumurl = !empty($forum['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$forum['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid='.$forum['fid'];}-->
<ul class="grouplist clearfix hobbyList">
<li class="gb-list-item">
###
</li>
</ul>
<!--{/loop}-->
</div>

 

这里体现了区别,就是<!--{loop $catlist $key $cat}--> 包在了<div>的外面,正如上文所讲,现在分区找到了框架了,那么他就只能先把独立的显示出来

 

2018寒假假期总结

[mp3 id="3725641931" type="playlist" source="tencent" title="过完春节,又胖了吧!上学去吧" tags="暂无" cover="https://p.qpic.cn/music_cover/1ZdGl7wveVA1a9fU8FWwvLSSHgdJkoUpcMFNQvFj6XLKnmKOnEdiaeQ/300?n=1" num="22" ]

为什么要写这篇文章呢?

首先,我有个博客,这是一次水文机会;第二,这是我最后一个长假期了,老师说高三无期权;第三,留个纪念吧,毕竟接下来真的没有假期了



突然想到。
[insert ids="113"]
 

 

这个寒假做了什么?

仔细一想,计划不如变化
  1. 本来打算写完49模板的,但是呢,现在只完成门户,论坛,主题列表,内容页。预计登录注册页面,个人空间极其设置页面可以搞定,结果就这样了
    (终于把之前大坑——写给爱玩的模板填完了。)
  2. php技术还是渣
  3. html技术还是渣
  4. js技术还是渣
  5. css技术还是渣
  6. 我差不多是个废人了。
  7. 寒假之初看了《寻梦环游记》,哭了
  8. 大年初二看了《捉妖记2》,又笑了
  9. 新认识一位好友,叉鸡
  10. 临近开学前2天,刷掉99.9%作业成就
  11. 周围大佬又多了。。
  12. 农村人才知道了崇才的真面目,恶心

以上是想到什么就写什么的,没有逻辑性

感想

大人们总是认为假期是拿来弯道超车的。难道利用好就能改变学渣的身份了吗?我的假期,从来不学习,因为这是好不容易得来的个人时间,凭什么一定要给学习呢?
早上翻出之前的阅摘:做不成英雄,索性当条咸鱼。特别有感触,我又何尝不是其中的咸鱼呢?现实是,虚拟也是(这不是丧文化啊啊)自以为是会编程就很厉害了,也许在学校那些学神身上是更胜一筹,但是身边现在这种年龄就会编程的人实在太多了。

想留给以后看到文章的自己以及大家

最最老套的话:不忘初心,方得始终