2018年9月

小编刚刚更换了服务器,由原来的CentOS换成了Windows,但是小编发现自己所有的文章页面都变成了404,这是怎么回事呢,百度了好多办法,最终发现windows服务器不支持伪静态,然后就找办法解决办法,但是试了n种办法之后,最终解决了这个问题。现在小编分享给大家。我的服务器版本是Windows Server 2012 R2 (64位)。
首先安装一个 URL Rewrite
安装之后重启系统。
然后在你的网站的管理中就会出现 URL Rewrite
1.png

打开之后,点击右侧的导入。

规则

2.png

再将以下代码粘贴在重写规则里面,一定记得更换为自己的域名哦

# 将 RewriteEngine 模式打开
RewriteEngine On

# 修改以下语句中的 domain 为你的论坛地址
RewriteCond %{HTTP_HOST} !^bbs.sunxiaoning.com$ [NC]
RewriteRule ^(.*)$ http://bbs.sunxiaoning.com/$1 [L,R=301]

# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase/

# Rewrite 系统规则请勿修改
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1
RewriteRule ^article-([0-9]+)\.html$ portal.php?mod=article&articleid=$1
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2
RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?rewrite=$2

或者建立一个.htaccess文件,然后导入。

再打开Typecho 设置里面的是否使用地址重写,选择启用,会提示你,重写失败,不过不要紧,打上对号,选择任然启用就可以了。

  1. 下载PHPMailer
    下载链接链接:https://pan.baidu.com/s/1C0D_O3aq08naeb6Sfda4ZA 密码:vv65
    最新版的github上也有,不过小编没看懂,只能先用这个版本了。把下载好的包解压之后放在ThinkPHP\Library\Vendor里面。
  2. \Application\Common\Common里面的function.php(如果文件不存在就自己手动进行创建)这个文件里面写入发送邮件的函数。

    /*
    * 发送邮件
    * @param $to string
    * @param $title string
    * @param $content string
    * @return bool
    * */
     function sendMail($to, $title, $content) {
    Vendor('PHPMailer.PHPMailerAutoload');
    $mail = new PHPMailer(); //实例化
    $mail->IsSMTP(); // 启用SMTP
    $mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例)
    $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
    $mail->Username = C('MAIL_USERNAME'); //发件人邮箱名
    $mail->Password = C('MAIL_PASSWORD') ; //163邮箱发件人授权密码
    $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
    $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名
    $mail->AddAddress($to,"尊敬的客户");
    $mail->WordWrap = 50; //设置每行字符长度
    $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件
    $mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码
    $mail->Subject =$title; //邮件主题
    $mail->Body = $content; //邮件内容
    $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
    
    return($mail->Send());
     }

    在配置文件里面写入以下配置

    'MAIL_HOST' =>'smtp.126.com',//smtp服务器的名称
    'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
    'MAIL_USERNAME' =>'***********@126.com',//发件人的邮箱名
    'MAIL_PASSWORD' =>'**********',//163邮箱发件人授权密码
    'MAIL_FROM' =>'*******@126.com',//发件人邮箱地址
    'MAIL_FROMNAME'=>'小宁博客',//发件人姓名
    'MAIL_CHARSET' =>'utf-8',//设置邮件编码
    'MAIL_ISHTML' =>TRUE // 是否HTML格式邮件
  3. 在控制器里面直接调用局可以了

     SendMail('*******@qq.com',"小宁博客","欢迎来到小宁博客");

注意:可以通过$mail->ErrorInfo来显示错误,如果出现SMTP Error: data not accepted,证明你的测试数据不可以,小编就在这里出现了这样的问题,百度了好久,也没解决,最后发现换了测试数据就可以了,测试数据里面不要出现测试二字。

  1. 打开终端添加SSh服务

     sudo apt-get install openssh-server
  2. 检查ssh的服务状态

    sudo service ssh status
  3. 开启ssh服务

    sudo service ssh restart

小编刚刚更换了服务器,由原来的CentOS换成了Windows,但是小编发现自己所有的文章页面都变成了404,这是怎么回事呢,百度了好多办法,最终发现windows服务器不支持伪静态,然后就找办法解决办法,但是试了n种办法之后,最终解决了这个问题。现在小编分享给大家。我的服务器版本是Windows Server 2012 R2 (64位)。
首先安装一个 URL Rewrite
安装之后重启系统。
然后在你的网站的管理中就会出现 URL Rewrite
1.png

打开之后,点击右侧的导入。

规则

2.png

再将以下代码粘贴在重写规则里面

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
</IfModule>

或者建立一个.htaccess文件,然后导入。

再打开Typecho 设置里面的是否使用地址重写,选择启用,会提示你,重写失败,不过不要紧,打上对号,选择任然启用就可以了。

背景缩放(CSS3)

通过background-size设置背景图片的尺寸,就像我们设置img的尺寸一样,在移动Web开发中做屏幕适配应用非常广泛。

其参数设置如下:

a) 可以设置长度单位(px)或百分比(设置百分比时,参照盒子的宽高)

b) 设置为cover时,会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。我们平时用的cover 最多

c) 设置为contain会自动调整缩放比例,保证图片始终完整显示在背景区域。

background-image: url('images/gyt.jpg');
background-size: 300px 100px;
/* background-size: contain; */
/* background-size: cover; */

多背景(CSS3)
以逗号分隔可以设置多背景,可用于自适应布局 做法就是 用逗号隔开就好了。

  • 一个元素可以设置多重背景图像。
  • 每组属性间使用逗号分隔。
  • 如果设置的多重背景图之间存在着交集(即存在着重叠关系),前面的背景图会覆盖在后面的背景图之上。
  • 为了避免背景色将图像盖住,背景色通常都定义在最后一组上,

      background:url(test1.jpg) no-repeat scroll 10px 20px/50px 60px  ,
             url(test1.jpg) no-repeat scroll 10px 20px/70px 90px ,
             url(test1.jpg) no-repeat scroll 10px 20px/110px 130px c #aaa;
    

BFC(Block formatting context)直译为"块级格式化上下文"。

元素具有BFC的条件

w3c 规范:
display 属性为 block, list-item, table 的元素,会产生BFC.
这个三个都是用来布局最为合理的元素,因为他们就是用来可视化布局。
而其他的display属性,比如 line 等等,他们创建的是 IFC 。

BFC有着具体的布局特性:
1.png
有宽度和高度 , 有 外边距margin 有内边距padding 有边框 border。

产生BFC的情况

  • float属性不为none
  • position为absolute或fixed
  • display为inline-block, table-cell, table-caption, flex, inline-flex
  • overflow不为visible。

BFC布局规则特性

1.在BFC中,盒子从顶端开始垂直地一个接一个地排列.

2.盒子垂直方向的距离由margin决定。属于同一个BFC的两个相邻盒子的margin会发生重叠

3.在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)。

  1. BFC的区域不会与浮动盒子产生交集,而是紧贴浮动边缘。
  2. 计算BFC的高度时,自然也会检测浮动或者定位的盒子高度。

它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

BFC的主要用途

(1) 清除元素内部浮动

只要把父元素设为BFC就可以清理子元素的浮动了,最常见的用法就是在父元素上设置overflow: hidden样式,对于IE6加上zoom:1就可以了。

主要用到 :计算BFC的高度时,自然也会检测浮动或者定位的盒子高度。

只要把父元素设为BFC就可以清理子元素的浮动了,最常见的用法就是在父元素上设置overflow: hidden样式,对于IE6加上zoom:1就可以了。

(2) 解决外边距合并问题

外边距合并的问题。

主要用到 盒子垂直方向的距离由margin决定。属于同一个BFC的两个相邻盒子的margin会发生重叠

属于同一个BFC的两个相邻盒子的margin会发生重叠,那么我们创建不属于同一个BFC,就不会发生margin重叠了。

(3) 制作右侧自适应的盒子问题

主要用到:普通流体元素BFC后,为了和浮动元素不产生任何交集,顺着浮动边缘形成自己的封闭上下文。

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。包括浮动,和外边距合并等等,因此,有了这个特性,我们布局的时候就不会出现意外情况了。

word-break:自动换行

参数:

  • normal 使用浏览器默认的换行规则。
  • break-all 允许在单词内换行。
  • keep-all 只能在半角空格或连字符处换行。

    注意:主要处理英文单词。

white-space

white-space设置或检索对象内文本显示方式。通常我们使用于强制一行显示内容 。
参数:

  • normal :  默认处理方式;
  • nowrap :  强制在同一行内显示所有文本,直到文本结束或者遭遇br标签对象才换行。

注意:可以处理中文。

text-overflow 文字溢出

设置或检索是否使用一个省略标记(...)标示对象内文本的溢出。
参数:

  • clip :  不显示省略标记(...),而是简单的裁切 ;
  • ellipsis :  当对象内文本溢出时显示省略标记(...);

注意:一定要首先强制一行内显示,再次和overflow属性 搭配使用。

一个条件的时候,可以直接运用以下方法:

$map['miaoshu'] =array('like','%'.$sp.'%');
$result=M('shangpin')->where($map)->select();

多个查询条件的时候,

$map['spname | miaoshu'] =array('like','%'.$sp.'%');
$result=M('shangpin')->where($map)->select();