   PRIMARY KEY (`coid`),
   KEY `cid` (`cid`),
   KEY `created` (`created`)
-) ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=utf8;
+) ENGINE=MyISAM AUTO_INCREMENT=57 DEFAULT CHARSET=utf8;
 
 /*Data for the table `typecho_comments` */
 
-insert  into `typecho_comments`(`coid`,`cid`,`created`,`author`,`authorId`,`ownerId`,`mail`,`url`,`ip`,`agent`,`text`,`type`,`status`,`parent`) values (10,81,1456371490,'haoshuai',0,1,NULL,NULL,'112.232.10.211','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','bucuo[害羞]','comment','approved',0),(11,149,1456380316,'ツ搜寻妳的样子♂',0,1,NULL,NULL,'112.232.10.211','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','[给力]','comment','approved',0),(12,125,1456382604,'代方利',0,1,NULL,'http://t.qq.com/DFL53052006','58.58.27.244','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','[good]','comment','approved',0),(13,125,1456385076,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','112.232.10.211','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','力哥 [威武]','comment','approved',12),(16,125,1462947754,'傻子.',0,1,NULL,NULL,'1.202.71.138','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','小伙子可以啊','comment','approved',0),(17,125,1462948848,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','58.58.27.244','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',' <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/89/hufen_org.gif\" /> ','comment','approved',16),(22,490,1468806462,'Manster',0,1,NULL,NULL,'114.245.251.153','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','佛家有句话叫透过现象看本质，get和post是http协议中的，在HTTP协议中，Method和Data（URL， Body， Header）是正交的两个概念，也就是说，使用哪个Method与应用层的数据如何传输是没有相互关系的。HTTP没有要求，如果Method是POST数据就要放在BODY中。也没有要求，如果Method是GET，数据（参数）就一定要放在URL中而不能放在BODY中。1、HTTP协议对GET和POST都没有对长度的限制，限制长度的一般是浏览器或者是服务器。2、安全不安全和GET、POST没有关系，get最简单的是在浏览器地址中显示，但是一般的程序员都会进行加密，用ecode方法就可以，但那只是一个简单的编码而已，有点技术的人都知道我decode一下就可以解析出来；至于说post是放在报文的请求主体中，虽然看不到，但是我可以截包啊，所以说并没有绝对的说哪个安全哪个不安全。','comment','approved',0),(23,539,1468806516,'Manster',0,1,NULL,NULL,'114.245.251.153','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','有时间学习一下mongeDB数据库','comment','approved',0),(25,547,1468812673,'山东',0,1,NULL,NULL,'221.2.151.229','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','exec sp_MSforeachtable \'select \'\'?\'\'\',\'?\', \'sp_spaceused \'\'?\'\'\', \'SELECT count(*) FROM ? \'','comment','approved',0),(26,525,1468813809,'青涩的记忆',0,1,NULL,'http://t.qq.com/zhangzhitong521','221.2.151.229','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','32222222222222222222222222222请34 432 4324','comment','approved',0),(28,539,1468835529,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','下载了一个，基本思想理解了，CURD也看了下，还没有更升入的研究学习。。。。 <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/89/hufen_org.gif\" /> ','comment','approved',23),(29,547,1468835558,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','有意思吗','comment','approved',25),(30,490,1468835760,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','受教了。。 <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/c9/geili_org.gif\" /> ','comment','approved',22),(31,539,1468835888,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','下载了一个，基本思想理解了，CURD也看了下，还没有更深入的研究学习。。。。','comment','approved',23),(55,997,1480402609,'haoshuai_it',1,1,'haoshuai_it@163.com','http://hsblogs.com','127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','测试回复','comment','approved',54),(53,997,1480402283,'haoshuai_it',1,1,'haoshuai_it@163.com','http://hsblogs.com','127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','测试','comment','approved',0),(54,997,1480402490,'haoshuai_it',1,1,'haoshuai_it@163.com','http://hsblogs.com','127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','1231231','comment','approved',53),(51,917,1477552945,'浪死的萤',0,1,'gzw95322@gmail.com','http://hitkei.com/','221.2.151.229','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','chrome的开发人员工具也可以抓这些东西的','comment','approved',0),(52,917,1477617362,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.231.203','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','了解 <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/c3/zy_org.gif\" /> ','comment','approved',51);
+insert  into `typecho_comments`(`coid`,`cid`,`created`,`author`,`authorId`,`ownerId`,`mail`,`url`,`ip`,`agent`,`text`,`type`,`status`,`parent`) values (10,81,1456371490,'haoshuai',0,1,NULL,NULL,'112.232.10.211','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','bucuo[害羞]','comment','approved',0),(11,149,1456380316,'ツ搜寻妳的样子♂',0,1,NULL,NULL,'112.232.10.211','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','[给力]','comment','approved',0),(12,125,1456382604,'代方利',0,1,NULL,'http://t.qq.com/DFL53052006','58.58.27.244','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','[good]','comment','approved',0),(13,125,1456385076,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','112.232.10.211','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','力哥 [威武]','comment','approved',12),(16,125,1462947754,'傻子.',0,1,NULL,NULL,'1.202.71.138','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','小伙子可以啊','comment','approved',0),(17,125,1462948848,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','58.58.27.244','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',' <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/89/hufen_org.gif\" /> ','comment','approved',16),(56,997,1480403059,'nihao',3,1,'1286511224@qq.com',NULL,'127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','123','comment','approved',0),(22,490,1468806462,'Manster',0,1,NULL,NULL,'114.245.251.153','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','佛家有句话叫透过现象看本质，get和post是http协议中的，在HTTP协议中，Method和Data（URL， Body， Header）是正交的两个概念，也就是说，使用哪个Method与应用层的数据如何传输是没有相互关系的。HTTP没有要求，如果Method是POST数据就要放在BODY中。也没有要求，如果Method是GET，数据（参数）就一定要放在URL中而不能放在BODY中。1、HTTP协议对GET和POST都没有对长度的限制，限制长度的一般是浏览器或者是服务器。2、安全不安全和GET、POST没有关系，get最简单的是在浏览器地址中显示，但是一般的程序员都会进行加密，用ecode方法就可以，但那只是一个简单的编码而已，有点技术的人都知道我decode一下就可以解析出来；至于说post是放在报文的请求主体中，虽然看不到，但是我可以截包啊，所以说并没有绝对的说哪个安全哪个不安全。','comment','approved',0),(23,539,1468806516,'Manster',0,1,NULL,NULL,'114.245.251.153','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','有时间学习一下mongeDB数据库','comment','approved',0),(25,547,1468812673,'山东',0,1,NULL,NULL,'221.2.151.229','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','exec sp_MSforeachtable \'select \'\'?\'\'\',\'?\', \'sp_spaceused \'\'?\'\'\', \'SELECT count(*) FROM ? \'','comment','approved',0),(26,525,1468813809,'青涩的记忆',0,1,NULL,'http://t.qq.com/zhangzhitong521','221.2.151.229','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','32222222222222222222222222222请34 432 4324','comment','approved',0),(28,539,1468835529,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','下载了一个，基本思想理解了，CURD也看了下，还没有更升入的研究学习。。。。 <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/89/hufen_org.gif\" /> ','comment','approved',23),(29,547,1468835558,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','有意思吗','comment','approved',25),(30,490,1468835760,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','受教了。。 <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/c9/geili_org.gif\" /> ','comment','approved',22),(31,539,1468835888,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.230.4','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','下载了一个，基本思想理解了，CURD也看了下，还没有更深入的研究学习。。。。','comment','approved',23),(55,997,1480402609,'haoshuai_it',1,1,'haoshuai_it@163.com','http://hsblogs.com','127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','测试回复','comment','approved',54),(53,997,1480402283,'haoshuai_it',1,1,'haoshuai_it@163.com','http://hsblogs.com','127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','测试','comment','approved',0),(54,997,1480402490,'haoshuai_it',1,1,'haoshuai_it@163.com','http://hsblogs.com','127.0.0.1','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','1231231','comment','approved',53),(51,917,1477552945,'浪死的萤',0,1,'gzw95322@gmail.com','http://hitkei.com/','221.2.151.229','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','chrome的开发人员工具也可以抓这些东西的','comment','approved',0),(52,917,1477617362,'郝帅',1,1,'haoshuai_it@163.com','http://t.qq.com/haoshuai6','222.135.231.203','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36','了解 <img src=\"http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/c3/zy_org.gif\" /> ','comment','approved',51);
 
 /*Table structure for table `typecho_contents` */
 


/*Data for the table `typecho_contents` */

insert  into `typecho_contents`(`cid`,`title`,`slug`,`created`,`modified`,`text`,`order`,`authorId`,`template`,`type`,`status`,`password`,`commentsNum`,`allowComment`,`allowPing`,`allowFeed`,`parent`,`views`,`viewsNum`) values (47,'ECS配置SVN服务器','ecs配置svn服务器',1454378674,1480158621,'<p style=\"text-align:justify;\">\r\n	一、安装命令\r\n</p>\r\n[php] yum install subversion -y [/php]\r\n<p style=\"text-align:justify;\">\r\n	类似出现如下图所示的内容，说明安装完成。\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-large wp-image-62 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xpxxxxxxxxxx-1024x217.png\" alt=\"\" width=\"1024\" height=\"217\" title=\"\" align=\"\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	二、测试查看版本\r\n</p>\r\n[php] svnserve --version [/php]\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-full wp-image-63 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xfxxxxxxxxxx.png\" alt=\"xfxxxxxxxxxx\" width=\"807\" height=\"291\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	到这里SVN已经安装完成。\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	三、建立SVN版本库\r\n</p>\r\n[php]\r\n1）创建目录：mkdir -p /opt/svn/repos\r\n2）创建一个新的空版本库：svnadmin create /opt/svn/repos\r\n3）执行上面的命令后，自动在repos下建立多个文件， 分别是conf, db,format,hooks, locks, README.txt。\r\n[/php]\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-full wp-image-64 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/axxxxxxxxxxx.png\" alt=\"axxxxxxxxxxx\" width=\"537\" height=\"39\" /><img class=\"size-full wp-image-65 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xpxxxxxxxxxx1.png\" alt=\"xpxxxxxxxxxx1\" width=\"574\" height=\"39\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	四、配置SVN\r\n</p>\r\n[php] \r\nauthz    是权限控制，可以设置哪些用户可以访问哪些目录;\r\npasswd   是设置用户和密码的;\r\nsvnserve.conf  是设置svn相关的操作;\r\n[/php]\r\n<p>\r\n	passwd文件，设置用户名和密码，test----123。\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xfxxxxxxxxxx1.png\" alt=\"xfxxxxxxxxxx1\" width=\"659\" height=\"351\" /> \r\n</p>\r\n<p>\r\n	设置权限authz ,&nbsp;设置test用户对所有的目录有读写权限，切记不要忘掉[ / ]\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-full wp-image-66 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xxxxxxxxxxxx.png\" alt=\"xxxxxxxxxxxx\" width=\"694\" height=\"360\" /> \r\n</p>\r\n[php] \r\nanon-access = none # 使非授权用户无法访问 \r\nauth-access = write # 使授权用户有写权限 \r\npassword-db = password authz-db = authz   # 访问控制文件 \r\nrealm = /opt/svn/repos # 认证命名空间，subversion会在认证提示里显示，并且作为凭证缓存的关键字。\r\n采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.\r\n[/php]\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-full wp-image-69 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xxxxxxxxxxxx1.png\" alt=\"xxxxxxxxxxxx1\" width=\"737\" height=\"614\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	五、启动svn\r\n</p>\r\n[php] \r\nsvn: svnserve -d -r  /opt/svn/repos\r\n[/php]\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-large wp-image-68 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xxxxxxxxxxxx-1.png\" alt=\"xxxxxxxxxxxx\" width=\"602\" height=\"48\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	查看启动端口：\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-full wp-image-70 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xxxxxxxxxxxx-2.png\" alt=\"xxxxxxxxxxxx\" width=\"948\" height=\"60\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	NO.6 &nbsp;客户端链接svn\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	使用SVN客户端工具，安装TortoiseSVN后，右击D:\\test目录选择Checkout即可，测试环境下连接正常。\r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-large wp-image-71 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xpxxxxxxxxxx-1.png\" alt=\"xpxxxxxxxxxx\" width=\"469\" height=\"385\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	<img class=\"size-full wp-image-72 aligncenter\" src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/xfxxxxxxxxxx-1.png\" alt=\"xfxxxxxxxxxx\" width=\"667\" height=\"306\" /> \r\n</p>\r\n<p style=\"text-align:justify;\">\r\n	到此，svn测试正常！\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(81,'实现SVN版本库与WEB目录同步的解决方案','实现svn版本库与web目录同步的解决方案',1455715207,1480158621,'<p>\r\n	1. svn安装目录(bin目录）\r\n</p>\r\n[php]\r\n /usr/bin/svn  (这是svn命令目录) \r\n [/php]\r\n<p>\r\n	2. 使用“钩子”实现自动同步svn版本库文件到web目录-----实现SVN与WEB同步解决方案\r\n</p>\r\n[php] \r\n1) 设置WEB服务器根目录为  /home/wwwroot/default \r\n2) checkout一份SVN\r\n   svn co svn://localhost /home/wwwroot/\r\n3) 修改权限为WEB用户\r\n   chown -R www:www   /opt/svn/blog \r\n4) 建立同步脚本\r\n   cd /opt/svn/blogs/hooks/ \r\n[/php]\r\n<p>\r\n	方案一：\r\n</p>\r\n<p>\r\n	vi post-commit 输入以下内容：&nbsp;\r\n</p>\r\n[php] \r\n#!/bin/sh\r\nREPOS=&quot;$1&quot;\r\nREV=&quot;$2&quot;\r\nexport LANG=en_US.UTF-8\r\nsvn update /home/wwwroot/ --username svnname --password svnpassword\r\n[/php]\r\n<p>\r\n	方案二：\r\n</p>\r\n[php] \r\ncp post-commit.tmpl   post-commit  重命名 post-commit.tmpl该模板文件 \r\n[/php]\r\n<p>\r\n	编辑post-commit,在文件最后添加以下内容&nbsp;\r\n</p>\r\n[php] \r\n#!/bin/sh\r\nREPOS=&quot;$1&quot;\r\nREV=&quot;$2&quot;\r\nexport LANG=en_US.UTF-8\r\nSVN=/usr/bin/svn #这是svn命令目录\r\nWEB=/www/web/ #这是web目录\r\nsvn update /home/wwwroot/ --username svnname --password password chown -R www:www $WEB\r\n[/php]\r\n[php] \r\n增加脚本执行权限 chmod +x post-commit 如果不成功 尝试一下方法,在命令后面加上 --no-auth-cache\r\n$SVN update $WEB –username test–password test --no-auth-cache 对文件执行chmod +x post-commit操作\r\n最后操作是关闭服务然再打开服务:\r\nsvn服务的关闭：killall svnserve svn\r\nsvn服务的开启：svnserve -d -r /opt/svn/hsblogs\r\n[/php]\r\n<p>\r\n	可以生成日志来记录版本更新情况 文件内容为:\r\n</p>\r\n[php] \r\n#!/bin/sh\r\nexport LANG=zh_CN.UTF-8\r\nREPOS=&quot;$1&quot;\r\nREV=&quot;$2&quot;\r\nSVN_PATH=/usr/bin/svn\r\nWEB_PATH=/home/wwwroot/\r\nLOG_PATH=/home/wwwlogs/svn_update.log\r\necho &quot;##########开始提交 &quot; `date &quot;+%Y-%m-%d %H:%M:%S&quot;` \'##################\' &amp;gt;&amp;gt; $LOG_PATH\r\necho `who`,$REPOS,$REV &amp;gt;&amp;gt; $LOG_PATH\r\n$SVN_PATH update --username svnname --passwordpassword$WEB_PATH --no-auth-cache &amp;gt;&amp;gt;$LOG_PATH\r\nchown -R www:www $WEB_PATH\r\n[/php]\r\n<p>\r\n	说明:\r\n</p>\r\n<p>\r\n	1、#!/bin/sh 说明是执行shell命令 。\r\n</p>\r\n<p>\r\n	2、export LANG=zh_CN.UTF-8 是为了解决svn post commit 中文乱码。&nbsp;\r\n</p>\r\n<p>\r\n	3、svn update –username 你版本库的用户名 –password 用户名的密码。\r\n</p>\r\n<p>\r\n	4、chown -R www:www $WEB_PATH 更改文件夹属主，执行shell命令，每次commit完成后都会调用此文件。\r\n</p>',0,1,NULL,'post','publish',NULL,1,'1','1','1',0,0,0),(125,'ThinkPHP3.2--save方法判断问题','thinkphp框架-save方法判断问题',1456375435,1480158621,'<p>\r\n	在我们操作数据库更新时，经常会遇到要判断一个更新是否已经成功，\r\n</p>\r\n\r\n<p>\r\n	这样判断，出现一个奇怪的问题，即如果数据没有更新（与原数据相同），返回值判断为false。\r\n</p>\r\n[php]\r\n$result = $Model-&amp;gt;where(\'id=1\')-&amp;gt;save($data);\r\n if($result) {\r\n echo \'success\'; \r\n}else{\r\n echo \'false\'; \r\n}\r\n[/php]\r\n<p>\r\n	<span style=\"line-height:1.5;\">而当我们需要在ThinkPHP如何判断一个更新操作是否成功时，可以用下面的方法：</span> \r\n</p>\r\n[php]\r\n$Model = D(\'Blog\');  \r\n$data[\'id\'] = 10;  \r\n$data[\'name\'] = \'update name\';  \r\n$result = $Model-&amp;gt;save($data);  \r\nif ( false !== $result ){  \r\n    $this-&amp;gt;success(\'更新成功！\');  \r\n}else{  \r\n    $this-&amp;gt;error(\'更新失败！\');  \r\n} \r\n[/php]\r\n<p>\r\n	需要用 ！== false 来判断更新是否成功，\r\n</p>\r\n<p>\r\n	因为save方法返回值是更新操作影响的记录数，有可能影响的记录数为0，但却更新成功的。<span style=\"line-height:1.5;\"><br />\r\n</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">或者这种方式也可以</span> \r\n</p>\r\n[php]\r\nif( $result &amp;gt; 0 || $result ===0 ){  \r\n//成功  \r\n}else{  \r\n//失败  \r\n}\r\n[/php]',0,1,NULL,'post','publish',NULL,4,'1','1','1',0,0,0),(134,'MySQL数据库主从同步','mysql数据库主从同步',1456376195,1480158621,'<h2>\r\n	简单实现【MySQL数据库主从同步】（一主一从）\r\n</h2>\r\n<hr />\r\n<p>\r\n	<strong>环境准备：</strong> \r\n</p>\r\n<p>\r\n	1. &nbsp; 安装好两个MySQL数据库\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; &nbsp;【可以在两个不同的机器上、可以弄个虚拟机】\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; &nbsp;【在同一局域网内，分配好IP地址】\r\n</p>\r\n<p>\r\n	2. 主数据库：Master（192.168.1.101）\r\n</p>\r\n<p>\r\n	3.&nbsp;从数据库：Slave（192.168.1.103）\r\n</p>\r\n<p>\r\n	<strong>步骤：</strong> \r\n</p>\r\n<p>\r\n	1.&nbsp;前提：【主库】和【从库】要同步的表，表结构必须一致。\r\n</p>\r\n<p>\r\n	2.&nbsp;主从数据库初始信息要相同，包括表结构、表数据、编码等。\r\n</p>\r\n<p>\r\n	<strong>主库的设置：</strong> \r\n</p>\r\n<p>\r\n	1.&nbsp;配置my.ini\r\n</p>\r\n[php] \r\n[mysqld]\r\nserver-id=1     #配一个唯一的ID编号，1到232–1之间的一个正整数值\r\n#server-id   变量表示该节点在集群内的唯一表示，每个节点必须使用不同的server-id来区分 \r\nlog-bin=mysql-bin  #二进制文件存放路径   \r\n#设置要进行或不要进行主从复制的数据库名，同时也要在Slave 上设定。\r\nbinlog-do-db = public_clouds  \r\nbinlog-do-db=数据库名1\r\nbinlog-do-db=数据库名2\r\nbinlog-ignore-db=数据库名1\r\nbinlog-ignore-db=数据库名2\r\n[/php]\r\n<p>\r\n	2.&nbsp;在主数据库中建立一个备份账户\r\n</p>\r\n[php] \r\nmysql&gt; grant replication slave,reload,super on *.* to backup@192.168.1.103 identified by \'hao\';\r\nmysql&gt; flush privileges;         #flush privileges刷新MySQL的系统权限相关表\r\nmysql&gt; show master status;       # 找到File 和 Position 的值记录下来；\r\n[/php]\r\n<p>\r\n	3.&nbsp;保存，并重启mysql服务\r\n</p>\r\n[php] \r\nservice mysqld restart[/php]\r\n<p>\r\n	<strong>从库设置：</strong> \r\n</p>\r\n<p>\r\n	1.&nbsp;配置my.ini\r\n</p>\r\n[php][mysqld]\r\nserver-id=2     #唯一\r\n#设置要进行或不要进行主从复制的数据库名，同时也要在Master 上设定。\r\nreplicate-do-db=数据库名1\r\nreplicate-do-db=数据库名2\r\nreplicate-ignore-db=数据库名1\r\nreplicate-ignore-db=数据库名2 [/php]\r\n<p>\r\n	2.&nbsp;需要为&nbsp;slave&nbsp;账户开放全局许可权：Reload、Super、Replication&nbsp;Slave、Replication&nbsp;Client\r\n</p>\r\n[php]\r\nmysql&gt; change master to master_host=\'192.168.1.101\',master_user=\'backup\',master_password=\'hao\'; \r\nmysql&gt; start slave;\r\nmysql&gt; show slave status\\G;\r\n[/php]\r\n<p>\r\n	如果出现，表示配置成功！\r\n</p>\r\n[php] \r\nSlave_IO_Running: Yes\r\nSlave_SQL_Running: Yes\r\n[/php]\r\n<p>\r\n	错误信息的处理：\r\n</p>\r\n<p>\r\n	1.新加用户后，没有刷新用户权限，在 master上执行\r\n</p>\r\n[php] \r\nflush privileges; \r\n[/php]\r\n<p>\r\n	2.当Slave_IO_Running:&nbsp;NO&nbsp;&nbsp;或者&nbsp;Slave_SQL_Running:&nbsp;NO&nbsp;<span style=\"line-height:1.5;\">&nbsp;</span> \r\n</p>\r\n<p>\r\n	可以尝试，依次执行，\r\n</p>\r\n[php]\r\n  Stop slave;\r\n  reset slave;\r\n  show slave status\\G;\r\n[/php]\r\n<p>\r\n	基本操作命令：\r\n</p>\r\n[php]\r\n reset slave; 重新启动slave\r\n load data from master; 从主服务器载入数据。本命令用于对主服务器进行快照\r\n File 列显示日志名，而 Position 显示偏移量\r\n SHOW VARIABLES LIKE \'auto_in%\';\r\n SET auto_increment_increment=10; 设置增长幅度\r\n SET auto_increment_offset=1; 设置初始值\r\n relay-log 和 relay-log-index; 表示中继日志文件和中继日志索引文件\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(149,'CentOS 配置防火墙实例(端口)','centos-配置防火墙操作实例-端口',1456377609,1480158621,'<p>\r\n	1、防火墙的基本操作命令：\r\n</p>\r\n[php]\r\n查询防火墙状态:\r\n[root@localhost ~]# service iptables status\r\n\r\n停止防火墙:\r\n[root@localhost ~]# service iptables stop\r\n\r\n启动防火墙:\r\n[root@localhost ~]# service iptables start\r\n\r\n重启防火墙:\r\n[root@localhost ~]# service iptables restart\r\n\r\n永久关闭防火墙:\r\n[root@localhost ~]# chkconfig iptables off\r\n\r\n永久关闭后启用:\r\n[root@localhost ~]# chkconfig iptables on\r\n[/php]\r\n[php]\r\n重启防火墙服务： #/etc/init.d/iptables restart  \r\n\r\n查看防火墙信息： #/etc/init.d/iptables status  \r\n\r\n关闭防火墙服务： #/etc/init.d/iptables stop\r\n[/php]\r\n<p>\r\n	2、查看防火墙状态\r\n</p>\r\n[php]\r\n[root@localhost ~]# service iptables status \r\n[/php]\r\n<p style=\"text-align:left;\">\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/7D4582B285DB44CD91EB8CF19EE8639B.jpg\" alt=\"7D4582B285DB44CD91EB8CF19EE8639B\" width=\"941\" height=\"465\" class=\"alignnone size-full wp-image-164\" /> \r\n</p>\r\n<p>\r\n	3、编辑/etc/sysconfig/iptables文件。我们要打开8080端口和9990端口\r\n</p>\r\n[php] vim  /etc/sysconfig/iptables [/php]\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/7D4582B285DB44CD91EB8CF19EE8639B.jpg\" alt=\"7D4582B285DB44CD91EB8CF19EE8639B\" width=\"941\" height=\"465\" class=\"alignnone size-full wp-image-164\" /> \r\n</p>\r\n<p>\r\n	4、复制其中一条，修改端口号为，我们要添加8080端口和9990端口\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/EFB9723935704DC08148FAC9C1Csdfdf639.png\" alt=\"EFB9723935704DC08148FAC9C1Csdfdf639\" width=\"599\" height=\"285\" class=\"alignnone size-full wp-image-163\" /> \r\n</p>\r\n<p>\r\n	5、保存/etc/sysconfig/iptables文件，并重启iptables服务\r\n</p>\r\n[php][root@localhost ~]# service iptables restart[/php]\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/EFB9723935704DC08148FAC9C1C7E639.jpg\" alt=\"EFB9723935704DC08148FAC9C1C7E639\" width=\"938\" height=\"566\" class=\"alignnone size-full wp-image-162\" /> \r\n</p>\r\n<p>\r\n	6、查看防火墙状态\r\n</p>\r\n[php] [root@localhost ~]# service iptables status[/php]\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/2895D8E595454CB19225AA2D8C6E988B.jpg\" alt=\"2895D8E595454CB19225AA2D8C6E988B\" width=\"938\" height=\"569\" class=\"alignnone size-full wp-image-165\" /> \r\n</p>\r\n<p>\r\n	7、服务器的8080和9990端口已经打开了。\r\n</p>\r\n&nbsp;',0,1,NULL,'post','publish',NULL,1,'1','1','1',0,0,0),(176,'MySQL日志之【错误日志】','错误日志',1456380988,1480158621,'<p style=\"text-indent:2em;\">\r\n	1.错误日志\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	当mysqld启动和停止时，以及服务器在运行过程中发生任何严重错误时的相关信息。\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	1)开启、设置错误日志<br />\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 在my.ini中设置\r\n</p>\r\n[php]\r\n [mysqld]\r\nlog-error=[path/[file_name]]\r\npath为日志文件所在的目录路径，filename为日志文件名。修改配置项后，需要重启mysql服务才生效\r\n如：\r\nlog-error = &quot;E:/phpStudy/MySQL/MySQL_Error_Log/error-log.err&quot;\r\n[/php]\r\n<p style=\"text-indent:2em;\">\r\n	2）查看错误日志<br />\r\n&nbsp; &nbsp; &nbsp; &nbsp; 可直接用文本查看器查看最后一行有一个&nbsp;(Errcode: 20)<br />\r\n<span style=\"line-height:1.5;\">&nbsp; &nbsp; &nbsp; &nbsp; MySQL 附带了工具perror，将错误码转成适合阅读的内容：</span> \r\n</p>\r\n[php]&gt;bin perror 28\r\n[/php]\r\n<p style=\"text-indent:2em;\">\r\n	<img src=\"/wp-content/uploads/2016/02/20160226133456_29940.jpg\" alt=\"\" /> \r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	<strong>&nbsp;show variables；查看mysql变量&nbsp; show variables like ‘log_error’;</strong> \r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	<img src=\"/wp-content/uploads/2016/02/20160226133704_39730.jpg\" alt=\"\" /> \r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	3）分析错误日志\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	<img src=\"/wp-content/uploads/2016/02/20160226133713_40571.jpg\" alt=\"\" /> \r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	1.最后一行有一个&nbsp;(Errcode: 20），用perror查看对于的错误解释\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	2.时间[错误级别]错误信息\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	4）管理（删除）错误日志\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	1.运行状态下，命令行创建\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	在运行状态下删除错误日志文件后，mysql并不会自动创建日志文件。\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	flush logs在重新加载日志的时候，如果文件不存在，则会自动创建。所以\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	在删除错误日志之后，如果需要重建日志文件需要在服务器端执行以下命令：\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	mysqladmin -u root -p flush-logs\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	或者在客户端登录mysql数据库，执行flush logs语句\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	flush logs;\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	2. 手动删除文件，手动执行命令创建\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	A.手动删除文件\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	B.手动执行&nbsp;flush logs;&nbsp;err文件恢复了\r\n</p>\r\n<p style=\"text-indent:2em;\">\r\n	C.打开err文件，应该是里面什么都没有\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(178,'MySQL日志之【二进制日志】','二进制日志',1456381002,1480158621,'<p>\r\n	<span style=\"font-size:14px;\"><strong>一、binlog日志开启与设置</strong></span> \r\n</p>\r\n<p>\r\n	1.log-bin=mysqlbin-log #开启日志 保存路径\r\n</p>\r\n<p>\r\n	2.binlog-do-db=＇＇#设置记录二进制的数据库，空为全部数据库记录\r\n</p>\r\n<p>\r\n	3.show binary logs;&nbsp; #查看二进制文件\r\n</p>\r\n<p>\r\n	4.show binlog events \\G;&nbsp;&nbsp; #查看二进制binlog内容，操作记录\r\n</p>\r\n<p>\r\n	<img src=\"/wp-content/uploads/2016/02/20160226142055_89221.png\" alt=\"\" width=\"377\" height=\"162\" title=\"\" align=\"\" /> \r\n</p>\r\n<p>\r\n	<img src=\"/wp-content/uploads/2016/02/20160226142124_33784.png\" alt=\"\" /> \r\n</p>\r\n<p>\r\n	<img src=\"/wp-content/uploads/2016/02/20160226142211_53209.png\" alt=\"\" /> \r\n</p>\r\n<p>\r\n	<strong><span style=\"font-size:14px;\">二 、查看二进制日志</span></strong> \r\n</p>\r\n<p>\r\n	<img src=\"/wp-content/uploads/2016/02/20160226142445_39503.png\" alt=\"\" /> \r\n</p>\r\n<p class=\"MsoNormal\" align=\"left\">\r\n	1.导出到文本文档中查看：\r\n</p>\r\n[php]\r\n E:\\phpstudy\\MySQL\\bin&amp;gt;mysqlbinlog  ../MySQL_Log/MyLog-bin.000001  &gt; log.sql\r\n[/php]\r\n<p>\r\n	2.命令行中查看日志（bin目录下mysqlbinlog）\r\n</p>\r\n[php]\r\n  bin&gt;  mysqlbinlog  ../MySQL_Log/MyLog-bin.000001[/php]\r\n<p>\r\n	3. mysqlbinlog的常见参数：\r\n</p>\r\n[php] \r\n-d,--database=name :指定数据库名称,只列出指定数据库的操作.\r\n-D, --disable-log-bin :执行恢复的时候,禁止二进制日志.可以防止同一台MySQL加上\r\n     -t时进入死循环 -o,--offset=n :忽略掉日志前n行命令 -r,--result-file=name :将输出日志到指定文件\r\n-R, --read-from-remote-server:从一个MySQL服务器上读取二进制\r\n-s,--short-form :显示简单格式,省略一些信息\r\n-S, --socket=name :socket文件连接path.\r\n-t, --to-last-log :和-R一起使用,在二进制日志结束的时候并不会停止,而是在MySQL服务器最后\r\n      生成的binlog结束,如果输出和输入都在一台MySQL上可能会导致死循环.\r\n--set-charset=char-name :在输出文本格式的时候,在第一行加上set names char-name.\r\n--start-datetime=# --stop-datetime=# :指定输出起始日期的日志.\r\n--start-position=# --stop-position=# :指定起始日志的位置.\r\n[/php]\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<strong><span style=\"font-size:14px;\">三、基于不同方式的恢复</span></strong> \r\n</p>\r\n<p>\r\n	1.基于时间点的回复：\r\n</p>\r\n[php]\r\n	（Windows环境下）(时间用“”双引号)\r\n     mysqlbinlog  --stop-datetime=”2015-06-02 10:06:20” ../Log/MyLog-bin.000001 | mysql -uroot -p\r\n[/php]\r\n[php]\r\n	（Linux环境下）\r\n     mysqlbinlog  --stop-date=\'2012-06-05 19:59:59\' /var/log/mysql-bin.000001 | mysql -uroot -p\r\n[/php]\r\n<p>\r\n	2.基于位置的回复\r\n</p>\r\n<p>\r\n	&nbsp;1）位置\r\n</p>\r\n<p>\r\n	<img src=\"/wp-content/uploads/2016/02/20160226142746_58859.png\" alt=\"\" /> \r\n</p>\r\n<p>\r\n	&nbsp;开始位置：325&nbsp;，结束位置：394\r\n</p>\r\n<p>\r\n	2）恢复\r\n</p>\r\n[php] mysqlbinlog --stop-position=\'889107\' /var/lib/mysql/mysql-bin.000001|mysql -uroot -p [/php]\r\n[php] mysqlbinlog --start-position=\'889189\' /var/lib/mysql/mysql-bin.000001|mysql -uroot -p [/php]\r\n<p>\r\n	<strong><span style=\"font-size:14px;\">四、管理（删除）二进制日志</span></strong> \r\n</p>\r\n<p>\r\n	1.purge master logs to&nbsp;＇MyLog-bin.000002&nbsp;\r\n</p>\r\n<p>\r\n	2.PURGE MASTER LOGS BEFORE \'20130330\'&nbsp; &nbsp; &nbsp;\r\n</p>\r\n<p>\r\n	&nbsp;用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">3.</span><span style=\"line-height:1.5;\">&nbsp;<strong><span style=\"font-size:14px;\">mysql &gt; flush logs; &nbsp;</span></strong></span> \r\n</p>\r\n<p>\r\n	(关闭当前的二进制日志文件并创建一个新文件，新的二进制日志文件的名字在当前的二进制文件的编号上加1。)\r\n</p>\r\n<p>\r\n	<strong><span style=\"font-size:14px;\">&nbsp; &nbsp; mysql &gt; reset master;&nbsp;</span></strong> \r\n</p>\r\n<p>\r\n	可以删除列于索引文件中的所有二进制日志，把二进制日志索引文件重新设置为空，并创建一个新的二进制日志文件\r\n</p>\r\n<p>\r\n	4.mysql-bin.index是日志的索引文件,记录了日志的最大序号，当执行<strong><span style=\"font-size:14px;\">RESET MASTER</span></strong>命名删除全部日志，新的日志从头开始。\r\n</p>\r\n<p>\r\n	5.expire_logs_days\r\n</p>\r\n<p>\r\n	&nbsp;此参数是设置日志的过期天数，过期的日志将会被自动删除，这有利于减少我们管理日志的工作量，需要修改my.cnf\r\n</p>\r\n<p>\r\n	&nbsp;expire_logs_days= 3 //即为日志保存三天，三天之后过期的日志自动删除\r\n</p>\r\n<p>\r\n	6.采用“服务器生成日志”--------“本地保存，分析日志”的模式\r\n</p>\r\n<p>\r\n	&nbsp;&nbsp; 1）.通过shell脚本每小时做一次二进制日志flush操作\r\n</p>\r\n<p>\r\n	&nbsp;&nbsp; 2）.通过shell脚本每小时进行一次二进制日志的备份工作，将一小时新产生的二进制日志迁移到nfs备份服务器，并压缩存放。\r\n</p>\r\n<p>\r\n	&nbsp;&nbsp; 3）.my.cnf配置expire_logs_days&nbsp;=&nbsp;5，这样mysql会自动删除5天前的日志。\r\n</p>\r\n<p>\r\n	<strong><span style=\"font-size:14px;\">五、命令解释：</span></strong> \r\n</p>\r\n<p>\r\n	1.log-bin定义开启二进制日志；path表明日志文件所在的目录路径；\r\n</p>\r\n<p>\r\n	2.expire_logs_days定义了mysql清除过期日志的时间，即二进制日志自动删除的天数。<span style=\"line-height:1.5;\">&nbsp;默认值为0，表示“没有自动删除“</span> \r\n</p>\r\n<p>\r\n	3.max_binlog_size定义了单个文件的大小限制，如果二进制日志写入的内容大小超出给定值，\r\n</p>\r\n<p>\r\n	日志就会发生滚动（关闭当前文件，重新打开一个新的日志文件），默认值是1GB。\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">4.SHOW VARIABLES&nbsp; LIKE \'%log_%\';&nbsp;查看日志状态</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">5.RESET MASTER;&nbsp;执行该语句，所有二进制日志将被删除，mysql会重新创建二进制日志，新的日志文件扩展名将</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">重新从000001开始编号。</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">6.--start-date、--stop-date&nbsp;可以指定恢复数据库的起始时间点和结束时间点</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">&nbsp; &nbsp;--start-position、--stop--position可以指定恢复数据的开始位置和结束位置</span> \r\n</p>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(180,'MySQL日志之【慢速查询日志】','慢速查询日志',1456381014,1480158621,'<p>\r\n	<span style=\"line-height:1.5;\">&nbsp;可以配置mysqld&nbsp;将这些慢速查询记录到适当命名的慢速查询日志中。日后可以</span><span style=\"line-height:1.5;\">通过观察这些日志，来决定哪些部分需要调整。</span> \r\n</p>\r\n<p>\r\n	一 、 开启慢速查询日志\r\n</p>\r\n[php]\r\nlog-slow-queries=&quot;E:/phpStudy/MySQL/Mylog/slow-bin.log&quot;  指定日志文件路径\r\nlong_query_time = 2   记录执行超过2秒会记录日志\r\nlog-queries-not-using-indexes 记录没有使用索引的查询\r\n[/php]\r\n<p>\r\n	&nbsp; &nbsp;重启mysql服务器\r\n</p>\r\n<p>\r\n	二 、使用mysql自带命令mysqldumpslow查看\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;1、 mysqldumpslow命令\r\n</p>\r\n[php]\r\n/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log\r\n[/php]&nbsp;&nbsp;&nbsp;&nbsp; 会输出记录次数最多的10条SQL语句，其中：\r\n[php] -s ,是表示按照何种方式排序，c、t、l、r分别是按照记录次数、时间、查询时间、返回的\r\n记录数来排序，ac、at、al、ar，表示相应的倒叙；\r\n[/php]\r\n[php] -t, 是top n的意思，即为返回前面多少条的数据；\r\n[/php]\r\n[php] -g ,后边可以写一个正则匹配模式，大小写不敏感的；\r\n[/php]\r\n[php]\r\nmysqldumpslow -s r -t 10  /slowquery.log     #slow记录最多的10个语句\r\nmysqldumpslow -s t -t 10 -g &quot;left join&quot; /slowquery.log  #按照时间排序前10中含有&quot;left join”\r\n[/php]\r\n<p>\r\n	&nbsp; &nbsp;2、windows下,需要先安装perl，然后在命令行下，输入\r\n</p>\r\n[php]\r\n C:\\Perl\\bin&amp;gt;perl E:\\MySQL\\bin\\mysqldumpslow.pl --help\r\n[/php]\r\n<p>\r\n	&nbsp; &nbsp;3、linux下进入mysql/bin 目录，输入 mysqldumpslow –help或--help &nbsp;\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;4、mysqldumpslow.pl在不同系统下的位置：&nbsp; &nbsp;&nbsp;\r\n</p>\r\n[php]\r\nlinux ---&amp;gt; /usr/bin/mysqldumpslow\r\nwindows ---&amp;gt; mysql\\scripts\\mysqldumpslow.pl\r\n[/php]\r\n<p>\r\n	&nbsp; &nbsp;5、也可自己查看mysql目录下生成的日志文件\r\n</p>\r\n<p>\r\n	<img src=\"/wp-content/uploads/2016/02/20160226140715_99885.png\" alt=\"\" /> \r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;  其中包含的信息有：\r\n</p>\r\n[php]\r\n1）Query_time:执行时间\r\n2）Lock_time:MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间\r\n3）Rows_sent : 查询返回的行数\r\n4）Rows_examined:扫描的行数量\r\n5）Set timestamp: mysql设置时间戳\r\n[/php]\r\n<p>\r\n	如果开启了log_queries_not_using_indexes选项，slow query日志会充满过多的垃圾日志记录，\r\n</p>\r\n<p>\r\n	这些快且高效的全表扫描查询(表小)会冲掉真正有用的slow queries记录。比如select * from temp这样的查询也会被记录下来。\r\n</p>\r\n<br />\r\n三 、管理（删除）MySQL慢速查询日志\r\n<p>\r\n	&nbsp; &nbsp; &nbsp;删除日志文件后，重启mysql服务器会再，重新生成一个日志文件\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(187,'MySQL中Limit的用法详解(数据分页常用)','mysql中limit的用法详解数据分页常用',1456381577,1480158621,'\r\n[php]SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset[/php]\r\n\r\n<p>\r\n	LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。\r\n</p>\r\n<p>\r\n	LIMIT接受一个或两个数字参数。参数必须是一个整数常量。\r\n</p>\r\n<p>\r\n	如果给定<span style=\"line-height:1.5;\">两个参数：</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">第一个参数指定第一个返回记录行的偏移量，</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">第二个参数指定返回记录行的最大数目，初始记录行的偏移量是 0(而不是 1)</span> \r\n</p>\r\n[php]\r\nmysql&gt; SELECT * FROM table LIMIT 5,10;  // 检索记录行 第6行至第15行的数据\r\n//为了检索从某一个偏移量到记录集的结束所有的记录行，可以指定第二个参数为 -1： \r\nmysql&gt; SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.\r\n//如果只给定一个参数，它表示返回最大的记录行数目： \r\nmysql&gt; SELECT * FROM table LIMIT 5;     //检索前 5 个记录行 \r\n\r\n//换句话说，LIMIT n 等价于 LIMIT 0,n。\r\n[/php]\r\n',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(200,'ThinkPHP3.2--基础','thinkphp小细节',1456383413,1480158621,'1. ThinkPHP中，输出刚才执行的sql语句：<span style=\"color:#333333;font-family:\'Microsoft Yahei\', tahoma, arial, \'Hiragino Sans GB\', sans-serif;font-size:13px;line-height:25px;background-color:#FFFFFF;\">getLastSql</span> 这个肯定要紧接着你的SQL语句运行，他们是一个连续的动作.\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/02/927116D932564A88BA6F9F82E99B0A4D.png\" alt=\"927116D932564A88BA6F9F82E99B0A4D\" width=\"866\" height=\"401\" class=\"alignnone size-full wp-image-201\" /> \r\n</p>\r\n2.URL中参数：\r\n[php]\r\nm参数表示模块，c参数表示控制器，a参数表示操作，后面再有的话当然就是其他的GET参数。\r\nhttp://localhost/aphoneuser/index.php?m=userpublic&amp;amp;c=users&amp;amp;a=test\r\n[/php]\r\n3. R 方法远程调用方法  传参数\r\n[php]\r\nR ( \'Userpublic/Usersone/test\',array($a,$b,$c));\r\n  或者\r\n  $array[\'1\']=\'one\';\r\n  $array[\'2\']=\'two\';\r\n  $array[\'3\']=\'three\';\r\nR ( \'Userpublic/Usersone/test\',array($array));\r\n  接收参数的时候，$array[\'2\']、$array[\'3\']\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(206,'WINDOWS--DOS下FTP命令','windows-dos下ftp命令',1456383860,1480158621,'<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">开始-运行 里输入ftp后就可以使用下面的命令了：</span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">1. open：与ftp服务器相连接；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">2. send(put)：上传文件；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">3. get：下载文件；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">4. mget：下载多个文件；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">5. cd：切换目录；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">6. dir：查看当前目录下的文件；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">7. del：删除文件；<span style=\"background-color:inherit;\">&nbsp;</span></span>\r\n<div style=\"font-family:\'Microsoft YaHei\';font-size:14px;\">\r\n	<br />\r\n</div>\r\n<span style=\"font-size:14px;line-height:normal;color:#454545;font-family:arial, 宋体, sans-serif, tahoma, \'Microsoft YaHei\';background-color:#FFFFFF;\">8. bye：中断与服务器的连接。</span>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(210,'ThinkPHP5.0.0 RC1版本发布——为API开发而设计','thinkphp5-0-0-rc1版本发布-为api开发而设计',1453706112,1480158621,'<h2 style=\"color:#323232;font-family:\'Century Gothic\', \'Microsoft yahei\';background-color:#FFFFFF;\">\r\n	ThinkPHP V5.0——为API开发而设计的高性能框架\r\n</h2>\r\n<p>\r\n	<a href=\"http://www.thinkphp.cn/Uploads/editor/2015-12-12/566b67e2496ac.png\" target=\"_blank\"></a><a href=\"http://www.thinkphp.cn/topic/35391.html\" target=\"_blank\"><img src=\"http://www.thinkphp.cn/Uploads/editor/2015-12-12/566b67e2496ac.png\" style=\"    margin: 0 auto;\"/></a> \r\n</p>\r\n<p style=\"text-align:center;\">\r\n	http://www.thinkphp.cn/topic/35391.html\r\n</p>\r\n<p style=\"text-align:center;\">\r\n	手册：&nbsp;http://www.kancloud.cn/thinkphp/thinkphp5-guide/90127\r\n</p>',0,1,NULL,'post','publish',NULL,0,'0','0','1',0,0,0),(250,'Apache配置多站点','apache配置多站点',1456809890,1480158621,'<h2>\r\n	Apache 开启多站点\r\n</h2>\r\n<p>\r\n	图一\r\n</p>\r\n<table border=\"1\">\r\n	<tbody>\r\n		<tr>\r\n			<td width=\"284\" valign=\"top\" style=\"border:solid windowtext 1.0pt;\">\r\n				<p align=\"center\" style=\"text-align:center;\">\r\n					IP地址\r\n				</p>\r\n			</td>\r\n			<td width=\"284\" valign=\"top\" style=\"border:solid windowtext 1.0pt;\">\r\n				<p align=\"center\" style=\"text-align:center;\">\r\n					网站目录\r\n				</p>\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:solid windowtext 1.0pt;\">\r\n				<p>\r\n					127.0.0.1:80(默认端口)\r\n				</p>\r\n			</td>\r\n			<td style=\"border:solid windowtext 1.0pt;\">\r\n				<p>\r\n					/www\r\n				</p>\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:solid windowtext 1.0pt;\">\r\n				<p>\r\n					127.0.0.1:8080\r\n				</p>\r\n			</td>\r\n			<td style=\"border:solid windowtext 1.0pt;\">\r\n				<p>\r\n					/shop\r\n				</p>\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:solid windowtext 1.0pt;\">\r\n				<p>\r\n					127.0.0.1:8081\r\n				</p>\r\n			</td>\r\n			<td style=\"border:solid windowtext 1.0pt;\">\r\n				<p>\r\n					/cms\r\n				</p>\r\n			</td>\r\n		</tr>\r\n	</tbody>\r\n</table>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	图二\r\n</p>\r\n<p>\r\n	<table border=\"1\">\r\n		<tbody>\r\n			<tr>\r\n				<td width=\"279\" valign=\"top\" style=\"border:solid windowtext 1.0pt;\">\r\n					<p class=\"MsoNormal\" align=\"center\" style=\"text-align:center;\">\r\n						网站目录\r\n					</p>\r\n				</td>\r\n				<td width=\"291\" valign=\"top\" style=\"border:solid windowtext 1.0pt;\">\r\n					<p class=\"MsoNormal\" align=\"center\" style=\"text-align:center;\">\r\n						域名\r\n					</p>\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:solid windowtext 1.0pt;\">\r\n					<p>\r\n						/www\r\n					</p>\r\n				</td>\r\n				<td style=\"border:solid windowtext 1.0pt;\">\r\n					<p>\r\n						Localhost\r\n					</p>\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:solid windowtext 1.0pt;\">\r\n					<p>\r\n						/shop\r\n					</p>\r\n				</td>\r\n				<td style=\"border:solid windowtext 1.0pt;\">\r\n					<p>\r\n						<a href=\"#\">http://www.shoptest.com</a> \r\n					</p>\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:solid windowtext 1.0pt;\">\r\n					<p>\r\n						/cms\r\n					</p>\r\n				</td>\r\n				<td style=\"border:solid windowtext 1.0pt;\">\r\n					<p>\r\n						<a href=\"#\">http://www.cmstest.com</a> \r\n					</p>\r\n				</td>\r\n			</tr>\r\n		</tbody>\r\n	</table>\r\n</p>\r\n<p>\r\n	注：服务器根目录：/www ;\r\n</p>\r\n<p>\r\n	防火墙中要开启用到的端口 ;\r\n</p>\r\n<p>\r\n	仅供测试使用。\r\n</p>\r\n<p>\r\n	具体步骤：\r\n</p>\r\n<p>\r\n	1.如图二，\r\n</p>\r\n<br />\r\n<p>\r\n	打开Apache的安装目录，找到httpd.conf文件，分别去掉下面两行文字前面的#号。\r\n</p>\r\n[php]\r\n#LoadModule vhost_alias_module\r\nmodules/mod_vhost_alias.so\r\n去掉#意思是启用apache的虚拟主机功能.\r\n\r\n#Include conf/extra/httpd-vhosts.conf&amp;nbsp;&lt;br /&gt;\r\n去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置。\r\n[/php]\r\n<p>\r\n	2.打开extra目录内的httpd-vhosts.conf文件，在文件底部加入自己要加的虚拟主机的信息。\r\n</p>\r\n<p>\r\n	分别是给出此网站的根目录、域名、和错误日志存放位置。\r\n</p>\r\n<p>首先开启端口监听</p>\r\n[php] \r\nListen 8080\r\nListen 8081\r\nListen 8082\r\n[/php]\r\n<p>默认配置是这样的</p>\r\n[php] \r\n&lt;VirtualHost _default_:80&gt;\r\nDocumentRoot &quot;D:\\www&quot;\r\n  &lt;Directory &quot;D:\\www&quot;&gt;\r\n    Options +Indexes +FollowSymLinks +ExecCGI\r\n    AllowOverride All\r\n    Order allow,deny\r\n    Allow from all\r\n    Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n<p>\r\n第一种：根据不同域名，进行区分\r\n</p>\r\n[php]\r\n&lt;VirtualHost *:80&gt;\r\n    DocumentRoot &quot;D:\\www&quot;\r\n    ServerName www.hsblogs.com\r\n    ServerAlias hsblogs.com\r\n  &lt;Directory &quot;D:\\www&quot;&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n[php]\r\n&lt;VirtualHost *:80&gt;\r\n    DocumentRoot &quot;D:\\shop&quot;\r\n    ServerName www.shoptest.com\r\n    ServerAlias shoptest.com\r\n  &lt;Directory &quot;D:\\shop&quot;&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n[php]\r\n&lt;VirtualHost *:80&gt;\r\n    DocumentRoot &quot;D:\\cms&quot;\r\n    ServerName www.cmstest.com\r\n    ServerAlias cmstest.com\r\n  &lt;Directory &quot;D:\\cms&quot;&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n<p>\r\n	第二种：根据不同端口，进行区分\r\n</p>\r\n[php] \r\n&lt;VirtualHost *:80&gt;\r\n    DocumentRoot &quot;D:\\www&quot;\r\n    ServerName www.hsblogs.com\r\n    ServerAlias hsblogs.com\r\n  &lt;Directory &quot;D:\\www&quot;&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n[php]\r\n&lt;VirtualHost *:8080&gt;\r\n    DocumentRoot &quot;D:\\shop&quot;\r\n    ServerName shoptest\r\n    ServerAlias shoptest\r\n  &lt;Directory &quot;D:\\shop&quot;&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n[php] \r\n&lt;VirtualHost *:8081&gt;\r\n    DocumentRoot &quot;D:\\cms&quot;\r\n    ServerName cmstest\r\n    ServerAlias cmstest\r\n  &lt;Directory &quot;D:\\cms&quot;&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;\r\n[/php]\r\n<p>\r\n	注：开启目录浏览 ,&nbsp; Options +Indexes +FollowSymLinks +ExecCGI\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(262,'ShopNC关于楼层(滚动图片、规格)的实现分析','shopnc楼层实现分析',1459388266,1480158621,'1、 1F--8F 商品楼层的效果实现：\r\n<p>后台显示的编辑页面：</p>\r\n[php]localhost/admin 进入管理页面---网站---页面管理---板块区--操作--板块编辑[/php]\r\n后台显示：\r\n[php]板块编辑【由/admin/control/web_config.php/code_edit逻辑处理】\r\n--&gt;来渲染【/admin/templates/default/web_focus.edit.php】[/php]\r\n后台编辑后，点击【更新板块内容】--&gt;FORM提交到--&gt;index.php?act=web_config&amp;op=web_html&amp;web_id=2\r\n[php]【/admin/control/web_config.php/web_html逻辑处理，更新前台html】--&gt;updateWebHtml方法，录入数据库[/php]\r\n[php]\r\n【/data/model/web_config.model.php/updateWebHtml模型处理】\r\n--&gt;include【/data/resource/web_config/default.php】--&gt;加载本地缓存--&gt;录入数据库\r\n[/php]\r\n<p>\r\n	前台：&lt;?php &nbsp;echo $output[\'web_html\'][\'index\'];?&gt;&nbsp;\r\n</p>\r\n<p>数据表：db_web_code 和 db_web</p> <br />\r\n<hr />\r\n2、 首页滚动图片的实现： \r\n<p>后台显示的编辑页面：</p>\r\n[php]localhost/admin 进入管理页面---网站---页面管理---焦点区--操作----更新内容[/php]\r\n后台显示：\r\n[php]头部切换图设置【由/admin/conrtol/web_api.php/focus_edit逻辑处理】\r\n--&gt;来渲染【/admin/templates/default/web_focus.edit.php】[/php]\r\n<p>\r\n	后台编辑后，点击【更新板块内容】---&gt;FORM提交到index.php?act=web_api&amp;op=html_update&amp;web_id=101\r\n[php]【/admin/conrtol/web_api.php/html_update逻辑处理】更新html内容--&gt;updateWebHtml方法，录入数据库[/php]\r\n</p>\r\n[php]【/data/model/web_config.model.php/updateWebHtml模型处理】\r\n--&gt;include【/data/resource/web_config/focus.php】--&gt;加载本地缓存--&gt;录入数据库--&gt;保存焦点区切换大图[/php]\r\n<p>\r\n	<br />\r\n</p>\r\n<p>前台：&lt;?php echo $output[\'web_html\'][\'index_pic\'];?&gt;</p><br />\r\n<p>数据表：db_web_code 和 db_web</p><br />\r\n<br />\r\n<hr />\r\n3、<span style=\"line-height:1.5;\">关于shopnc，登录页面和注册自动加载，头部（common_layout.php）和 footer.php</span>\r\n<p>\r\n	在登录页css中将头部一些div隐藏，并设置优先级最高，最先执行\r\n</p>\r\n[php]\r\n&lt;style type=&quot;text/css&quot;&gt;\r\n.public-top-layout, .head-app {\r\n     display: none !important;\r\n }\r\n&lt;/style&gt;\r\n[/php]\r\n4 、【规格--类型--分类】关系：\r\n[php]\r\n1）建立分类【分类管理】---&gt;添加该分类的【类型】。\r\n2）【类型管理】---&gt;【选择所属分类】、【选择关联规格】。\r\n3）表【type_spec】中【规格和类型】关联\r\n   表【type】中【类型和分类】关联\r\n   表【goods_class】中【分类和类型】关联\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(266,'163邮箱报错WARN: 535 Error: authentication failed','163邮箱报错warn-535-error-authentication-failed',1461216711,1480158621,'163邮箱报错WARN: 535 Error: authentication failed.啥问题？<br />\r\n<br />\r\n新注册的邮箱. smtp验证用的是授权码，不是密码，设置-&gt;POP3/SMTP/IMAP&nbsp;<br />\r\n<br />\r\n之前用的是密码，一直不行，改成授权码就好了<br />\r\n<br />',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(281,'Discuz关于文章列表分页','discuz关于文章列表分页',1463107758,1480158621,'<p>\r\n	<span style=\"font-size:14px;line-height:normal;\">几经周折，发现官方list列表模板页面，都有这三行代码：</span> \r\n</p>\r\n[php]\r\n&lt;!--{eval $list = array();}--&gt;\r\n&lt;!--{eval $wheresql = category_get_wheresql($cat);}--&gt;\r\n&lt;!--{eval $list = category_get_list($cat, $wheresql, $page);}--&gt;\r\n[/php]\r\n<p>\r\n	<span style=\"font-size:14px;line-height:normal;\">在有这三行代码的基础上，在需要分页的地方加入：</span> \r\n</p>\r\n[php]\r\n&lt;!--{eval $multi = $list[\'multi\'];}--&gt;\r\n{$multi}\r\n[/php]\r\n<p>\r\n	<span style=\"font-size:14px;line-height:normal;\">或者</span> \r\n</p>\r\n[php]\r\n&lt;!--{if $list[\'multi\']}--&gt;\r\n&lt;div class=&quot;pgs cl&quot;&gt;\r\n	{$list[\'multi\']}\r\n&lt;/div&gt;\r\n&lt;!--{/if}--&gt;  \r\n[/php] <br />\r\n<p>\r\n	加入代码后，还需要进入管理后台查看一下【分页数量】：\r\n</p>\r\n<p>\r\n	【门户】--&gt;【频道栏目】--&gt;【编辑】如图：修改【<span style=\"font-size:14px;line-height:normal;color:#555555;font-family:\'Lucida Grande\', Verdana, Lucida, Helvetica, Arial, Simsun, sans-serif;font-weight:bold;background-color:#FFFFFF;\">列表每页显示文章数</span><span style=\"font-size:14px;line-height:normal;\">】</span> \r\n</p>\r\n<p>\r\n	去前台刷新页面就行啦!\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/05/QQ截图20160513102931.png\" alt=\"20160513102931\" width=\"972\" height=\"550\" class=\"aligncenter size-full wp-image-282\" /> \r\n</p>\r\n<hr />\r\n<p>\r\n	注部分转载摘录自：\r\n</p>\r\n<p>\r\n	1.Discuz门户文章列表页list.htm模版版面修改：<a target=\"_blank\" href=\"http://www.dz7.com.cn/discuz-1126-1-1.html\">http://www.dz7.com.cn/discuz-1126-1-1.html</a> \r\n</p>\r\n',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(300,'JS控制div的隐藏显示','js控制div的隐藏显示',1463133178,1480158621,'[php]\r\nfunction showconnect(obj,obj_t){ \r\n   document.getElementById(obj).style.display=&quot;block&quot;;\r\n   document.getElementById(obj_t).style.display=&quot;none&quot;;\r\n}\r\nfunction shownewtizi(obj,obj_t){ \r\n   document.getElementById(obj).style.display=&quot;none&quot;;\r\n   document.getElementById(obj_t).style.display=&quot;block&quot;;\r\n}\r\n[/php]\r\n<p>\r\n[php] \r\n&lt;span id=&quot;c&quot; onclick=&quot;javascript:shownewtizi(\'newtizi\',\'connect\')&quot;&gt;联系我们&lt;/span&gt;\r\n&lt;span id=&quot;d&quot; onclick=&quot;javascript:showconnect(\'newtizi\',\'connect\')&quot;&gt;论坛新帖&lt;/span&gt;\r\n[/php]\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	以此来达到，控制相依div的隐藏于显示，是【联系我们】【论坛新帖】的内容切换的效果。\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(311,'ShopNC中关于H缓存【店铺等级】','shopnc中关于h缓存-店铺等级',1463459507,1480158621,'<p>\r\n在目录【/data/cache/store_grade.php】即：店铺等级缓存。\r\n[php]\r\n&lt;?php defined(\'InShopNC\') or exit(\'Access Invalid!\');\r\n return array (\r\n  1 =&gt; \r\n  array (\r\n    \'sg_id\' =&gt; \'1\',\r\n    \'sg_name\' =&gt; \'系统默认\',\r\n    \'sg_goods_limit\' =&gt; \'100\',\r\n    \'sg_album_limit\' =&gt; \'500\',\r\n    \'sg_space_limit\' =&gt; \'100\',\r\n    \'sg_template_number\' =&gt; \'6\',\r\n    \'sg_template\' =&gt; \'default|style1|style2|style3|style4|style5\',\r\n    \'sg_price\' =&gt; \'100.00\',\r\n    \'sg_description\' =&gt; \'用户选择“默认等级”，可以立即开通。\',\r\n    \'sg_function\' =&gt; \'\',\r\n    \'sg_sort\' =&gt; \'0\',\r\n  ),\r\n  2 =&gt; \r\n  array (\r\n    \'sg_id\' =&gt; \'2\',\r\n    \'sg_name\' =&gt; \'白金店铺\',\r\n    \'sg_goods_limit\' =&gt; \'200\',\r\n    \'sg_album_limit\' =&gt; \'1000\',\r\n    \'sg_space_limit\' =&gt; \'100\',\r\n    \'sg_template_number\' =&gt; \'6\',\r\n    \'sg_template\' =&gt; \'default|style1|style2|style3|style4|style5\',\r\n    \'sg_price\' =&gt; \'200.00\',\r\n    \'sg_description\' =&gt; \'享受更多特权\',\r\n    \'sg_function\' =&gt; \'editor_multimedia\',\r\n    \'sg_sort\' =&gt; \'2\',\r\n  ),\r\n  3 =&gt; \r\n  array (\r\n    \'sg_id\' =&gt; \'3\',\r\n    \'sg_name\' =&gt; \'钻石店铺\',\r\n    \'sg_goods_limit\' =&gt; \'0\',\r\n    \'sg_album_limit\' =&gt; \'1000\',\r\n    \'sg_space_limit\' =&gt; \'100\',\r\n    \'sg_template_number\' =&gt; \'6\',\r\n    \'sg_template\' =&gt; \'default|style1|style2|style3|style4|style5\',\r\n    \'sg_price\' =&gt; \'1000.00\',\r\n    \'sg_description\' =&gt; \'\',\r\n    \'sg_function\' =&gt; \'editor_multimedia\',\r\n    \'sg_sort\' =&gt; \'100\',\r\n  ),\r\n);\r\n[/php]\r\n</p>\r\n<p>\r\n	[php]\r\n// 店铺等级\r\n$store_grade = H(\'store_grade\');\r\nif (!$store_grade) {\r\n   $store_grade = H(\'store_grade\', true);\r\n}\r\n[/php]\r\n</p>\r\n<p>\r\n	[php]\r\n/**\r\n * 读/写 缓存方法\r\n *\r\n * H(\'key\') 取得缓存\r\n * H(\'setting\',true) 生成缓存并返回缓存结果\r\n * H(\'key\',null) 清空缓存\r\n * H(\'setting\',true,\'file\') 生成商城配置信息的文件缓存\r\n * H(\'setting\',true,\'memcache\') 生成商城配置信息到memcache\r\n * @param string $key 缓存名称\r\n * @param string $value 缓存内容\r\n * @param string $type	缓存类型，允许值为 file,memcache,xcache,apc,eaccelerator，可以为空，默认为file缓存\r\n * @param int/null $expire 缓存周期\r\n * @param mixed $args 扩展参数\r\n * @return mixed\r\n */\r\nfunction H($key, $value=\'\', $cache_type=\'\', $expire=null, $args=null){\r\nstatic $cache = array();\r\n	$cache_type = $cache_type ? $cache_type : \'file\';\r\n	$obj_cache = Cache::getInstance($cache_type,$args);\r\n    if ($value !== \'\') {\r\n        if (is_null($value)) { // 删除缓存\r\n            $result = $obj_cache-&amp;gt;rm($key);\r\n            if ($result)\r\n                unset($cache[$cache_type . \'_\' . $key]);\r\n            return $result;\r\n        }else { // 缓存数据\r\n        	if ($value === true) $obj_cache-&amp;gt;rm($key);\r\n            $list = Model(\'cache\')-&amp;gt;call($key);\r\n            $obj_cache-&amp;gt;set($key, $list, null, $expire);\r\n            $cache[$cache_type . \'_\' . $key] = $list;\r\n        }\r\n        return $value === true ? $list : true;\r\n    }\r\n    if (isset($cache[$cache_type . \'_\' . $key]))\r\n        return $cache[$cache_type . \'_\' . $key];\r\n    $value = $obj_cache-&amp;gt;get($key);	// 取得缓存\r\n    $cache[$cache_type . \'_\' . $key] = $value;\r\n    return $value;\r\n}\r\n[/php]\r\n</p>\r\n<p>\r\n	其中，店铺等级缓存的来源，【商城管理后台】，数据表【shopnc_store_grade】\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<div style=\"text-align:left;\">\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/05/UP48GNPZQ40J7X4Q.png\" alt=\"\" width=\"973\" height=\"409\" class=\"alignnone size-full wp-image-312\" /> \r\n</div>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(334,'ThinkPHP3.2--变量调试dump','thinkphp3-2-变量调试dump',1463722894,1480158621,'<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	输出某个变量是开发过程中经常会用到的调试方法，除了使用php内置的var_dump和print_r之外，\r\n</p>\r\n<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	ThinkPHP框架内置了一个对浏览器友好的dump方法，用于输出变量的信息到浏览器查看。\r\n</p>\r\n<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	用法：\r\n</p>\r\n[php]dump($var, $echo=true, $label=null, $strict=true)[/php]\r\n<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	相关参数的使用如下：\r\n</p>\r\n<table style=\"margin:0px 32px 14px;padding:0px;color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	<tbody>\r\n		<tr>\r\n			<th style=\"border:1px solid #888888;\">\r\n				参数\r\n			</th>\r\n			<th style=\"border:1px solid #888888;\">\r\n				描述\r\n			</th>\r\n		</tr>\r\n	</tbody>\r\n	<tbody>\r\n		<tr>\r\n			<td style=\"border:1px solid #888888;\">\r\n				var（必须）\r\n			</td>\r\n			<td style=\"border:1px solid #888888;\">\r\n				要输出的变量，支持所有变量类型\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #888888;\">\r\n				echo（可选）\r\n			</td>\r\n			<td style=\"border:1px solid #888888;\">\r\n				是否直接输出，默认为true，如果为false则返回但不输出\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #888888;\">\r\n				label（可选）\r\n			</td>\r\n			<td style=\"border:1px solid #888888;\">\r\n				变量输出的label标识，默认为空\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #888888;\">\r\n				strict（可选）\r\n			</td>\r\n			<td style=\"border:1px solid #888888;\">\r\n				输出变量类型，默认为true，如果为false则采用print_r输出\r\n			</td>\r\n		</tr>\r\n	</tbody>\r\n</table>\r\n<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	如果echo参数为false 则返回要输出的字符串\r\n</p>\r\n<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	使用示例：\r\n</p>\r\n[php]\r\n$Blog = D(&quot;Blog&quot;);\r\n$blog = $Blog-&gt;find(3);\r\ndump($blog);\r\n[/php]\r\n<p style=\"color:#222222;font-family:\'Microsoft Yahei\', \'Helvetica Neue\', Helvetica, Arial, sans-serif;font-size:16px;background-color:#FFFFFF;\">\r\n	在浏览器输出的结果是：\r\n</p>\r\n[php]\r\narray(12) {\r\n   [&quot;id&quot;]            = string(1) &quot;3&quot;\r\n   [&quot;name&quot;]          = string(0) &quot;&quot;\r\n   [&quot;user_id&quot;]       = string(1) &quot;0&quot;\r\n   [&quot;cate_id&quot;]       = string(1) &quot;0&quot;\r\n   [&quot;title&quot;]         = string(4) &quot;test&quot;\r\n   [&quot;content&quot;]       = string(4) &quot;test&quot;\r\n   [&quot;create_time&quot;]   = string(1) &quot;0&quot;\r\n   [&quot;update_time&quot;]   = string(1) &quot;0&quot;\r\n   [&quot;status&quot;]        = string(1) &quot;0&quot;\r\n   [&quot;read_count&quot;]    = string(1) &quot;0&quot;\r\n   [&quot;comment_count&quot;] = string(1) &quot;0&quot;\r\n   [&quot;tags&quot;]          = string(0) &quot;&quot;\r\n}\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(341,'使用360网站卫士代理访问Google免费字体库【Google Open Fonts】','使用360网站卫士代理访问google免费字体库-google-open-fonts',1464014158,1480158621,'<p>\r\n	使用360网站卫士代理访问Google免费字体库【Google Open Fonts】\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">360网站卫士常用前端公共库CDN服务 <span> http://libs.useso.com/</span></span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\"><span>淘宝童鞋做的插件地址：http://www.soulteary.com/2014/06/08/replace-google-fonts.html</span></span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\"> </span> \r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/05/QQ截图20160523224506.png\" alt=\"20160523224506\" width=\"900\" height=\"502\" class=\"alignnone size-full wp-image-347\" /> \r\n</p>\r\n[php]\r\n最近由于Google Open Fonts的众所周知的大姨妈问题，WordPress博客普遍出现了访问很慢的状况。\r\n\r\n分享写了一个小插件，使用奇虎360的开放字体服务来替换Google的开放字体服务。\r\n\r\n1、首先在程序源代码中找到调用Google免费字体库的地址，比如：\r\n&lt;link href=\'http://fonts.googleapis.com/css?family=Open+Sans:300,400,600&amp;subset=latin,latin-ext\' rel=\'stylesheet\'&gt;\r\n\r\n2、将Google免费字体库的域名 fonts.googleapis.com 修改为：fonts.useso.com 即可，如下所示：\r\n&lt;link href=\'http://fonts.useso.com/css?family=Open+Sans:300,400,600&amp;subset=latin,latin-ext\' rel=\'stylesheet\'&gt;\r\n\r\n3、我们会自动将Google免费字体库的字体资源缓存在360网站卫士全国的CDN节点上。Have fun !\r\n如何通过第三方Wordpress字体转换插件继续使用Google字体库？\r\n(感谢来自淘宝的soulteary童鞋开发了这个插件)\r\n插件说明地址：http://www.soulteary.com/2014/06/08/replace-google-fonts.html\r\n插件下载地址：http://www.soulteary.com/wp-content/uploads/2014/06/Replace-Google-Fonts.zip\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(361,'CSS如何让背景图片充满整个屏幕','css如何让背景图片充满整个屏幕',1464250956,1480158621,'<p>\r\n	body标签设置背景图，&lt;body class=\"bg-1\"&gt;\r\n</p>\r\n<p>\r\n	其实，块级容器的宽高是动态的，那么背景图将自动伸缩，充满整个容器。\r\n</p>\r\n<p>\r\n	CSS &nbsp;bg-1的样式如下：\r\n</p>\r\n<p>\r\n	[php]\r\n.bg-1{\r\n   /* 加载背景图 */\r\n  background-image: url(../images/bg.jpg);\r\n  /* 背景图垂直、水平均居中 */\r\n  background-position: center center;\r\n  /* 背景图不平铺 */\r\n  background-repeat: no-repeat;\r\n  /* 当内容高度大于图片高度时，背景图像的位置相对于viewport固定 */\r\n  background-attachment: fixed;\r\n  /* 让背景图基于容器大小伸缩 */\r\n  background-size: cover;\r\n  /* 设置背景颜色，背景图加载过程中会显示背景色 */\r\n  background-color: #464646;\r\n}\r\n[/php]\r\n</p>\r\n<p>\r\n</p>\r\n<p>\r\n	[php]\r\n/* 浏览器就会按比例缩放背景图直至背景图宽高不小于容器的宽高 */\r\nbackground-size: cover;\r\n/*为了让背景图始终相对于viewport居中 */\r\nbackground-position: center center;\r\n/* 当内容的高度大于viewport的高度时，会出现滚动条。\r\n希望背景图始终相对于viewport固定，即使用户滚动时也是一样 */\r\nbackground-attachment: fixed;\r\n[/php]\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(368,'用新浪接口查询IP地址归属地','用新浪接口查询ip地址归属地',1464580319,1480158621,'[php]\r\nheader(\'Content-Type:text/html;Charset=utf-8\');  \r\nfunction GetIp(){  \r\n    $realip = \'\';  \r\n    $unknown = \'unknown\';  \r\n    if (isset($_SERVER)){  \r\n        if(isset($_SERVER[\'HTTP_X_FORWARDED_FOR\']) &amp;amp;&amp;amp; !empty($_SERVER[\'HTTP_X_FORWARDED_FOR\']) &amp;amp;&amp;amp; strcasecmp($_SERVER[\'HTTP_X_FORWARDED_FOR\'], $unknown)){  \r\n            $arr = explode(\',\', $_SERVER[\'HTTP_X_FORWARDED_FOR\']);  \r\n            foreach($arr as $ip){  \r\n                $ip = trim($ip);  \r\n                if ($ip != \'unknown\'){  \r\n                    $realip = $ip;  \r\n                    break;  \r\n                }  \r\n            }  \r\n        }else if(isset($_SERVER[\'HTTP_CLIENT_IP\']) &amp;amp;&amp;amp; !empty($_SERVER[\'HTTP_CLIENT_IP\']) &amp;amp;&amp;amp; strcasecmp($_SERVER[\'HTTP_CLIENT_IP\'], $unknown)){  \r\n            $realip = $_SERVER[\'HTTP_CLIENT_IP\'];  \r\n        }else if(isset($_SERVER[\'REMOTE_ADDR\']) &amp;amp;&amp;amp; !empty($_SERVER[\'REMOTE_ADDR\']) &amp;amp;&amp;amp; strcasecmp($_SERVER[\'REMOTE_ADDR\'], $unknown)){  \r\n            $realip = $_SERVER[\'REMOTE_ADDR\'];  \r\n        }else{  \r\n            $realip = $unknown;  \r\n        }  \r\n    }else{  \r\n        if(getenv(\'HTTP_X_FORWARDED_FOR\') &amp;amp;&amp;amp; strcasecmp(getenv(\'HTTP_X_FORWARDED_FOR\'), $unknown)){  \r\n            $realip = getenv(&quot;HTTP_X_FORWARDED_FOR&quot;);  \r\n        }else if(getenv(\'HTTP_CLIENT_IP\') &amp;amp;&amp;amp; strcasecmp(getenv(\'HTTP_CLIENT_IP\'), $unknown)){  \r\n            $realip = getenv(&quot;HTTP_CLIENT_IP&quot;);  \r\n        }else if(getenv(\'REMOTE_ADDR\') &amp;amp;&amp;amp; strcasecmp(getenv(\'REMOTE_ADDR\'), $unknown)){  \r\n            $realip = getenv(&quot;REMOTE_ADDR&quot;);  \r\n        }else{  \r\n            $realip = $unknown;  \r\n        }  \r\n    }  \r\n    $realip = preg_match(&quot;/[\\d\\.]{7,15}/&quot;, $realip, $matches) ? $matches[0] : $unknown;  \r\n    return $realip;  \r\n}  \r\nfunction GetIpLocal($ip = \'\'){  \r\n    if(empty($ip)){  \r\n        $ip = GetIp();  \r\n    }  \r\n    $res = @file_get_contents(\'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&amp;amp;ip=\' . $ip);  \r\n    if(empty($res)){ return false; }  \r\n    $jsonMatches = array();  \r\n    preg_match(\'#\\{.+?\\}#\', $res, $jsonMatches);  \r\n    if(!isset($jsonMatches[0])){ return false; }  \r\n    $json = json_decode($jsonMatches[0], true);  \r\n    if(isset($json[\'ret\']) &amp;amp;&amp;amp; $json[\'ret\'] == 1){  \r\n        $json[\'ip\'] = $ip;  \r\n        unset($json[\'ret\']);  \r\n    }else{  \r\n        return false;  \r\n    }  \r\n    return $json;  \r\n}  \r\n$IpInfo= GetIpLocal(\'222.135.230.162\'); //测试IP\r\nvar_dump($IpInfo);  \r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(375,'CSS input按钮 鼠标悬停改变颜色','css-input按钮-鼠标悬停改变颜色',1464580608,1480158621,'[php]\r\n&lt;html&gt;\r\n	&lt;head&gt;\r\n		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;\r\n		&lt;style&gt;\r\n			.out{width:80px;height:40px;border:1px solid #CCC;background-color:#FFF;}\r\n			.move{width:80px;height:40px;border:1px solid #CCC;background-color:red;}\r\n		&lt;/style&gt;\r\n	&lt;/head&gt;\r\n	&lt;body&gt;\r\n		&lt;input type=&quot;button&quot; class=&quot;out&quot; onmousemove=&quot;this.className=\'move\'&quot; onmouseout=&quot;this.className=\'out\'&quot; value=&quot;鼠标悬停&quot; /&gt;\r\n	&lt;/body&gt;\r\n&lt;/html&gt;\r\n[/php]示例：<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> <style> .out{width:80px;height:40px;border:1px solid #CCC;background-color:#FFF;} .move{width:80px;height:40px;border:1px solid #CCC;background-color:red;} </style> </head> <body> <input type=\"button\" class=\"out\" onmousemove=\"this.className=\'move\'\" onmouseout=\"this.className=\'out\'\" value=\"鼠标悬停\" /> </body> </html>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(386,'ThinkPHP3.2--扩展配置','thinkphp3-2-扩展配置',1464672697,1480158621,'<p>\r\n	【扩展配置】\r\n</p>\r\n<p>\r\n	1、扩展配置可以实现引入外部的config文件，实现配置文件的选择性调用。而且扩展配置文件还可以即时生效，&nbsp;\r\n</p>\r\n<p>\r\n	不需要更新缓存文件。\r\n</p>\r\n<p>\r\n	2、扩展配置可以支持自动加载额外的自定义配置文件，并且配置格式和项目配置一样。&nbsp;\r\n</p>\r\n<p>\r\n	&nbsp;设置扩展配置的方式如下（多个文件用逗号分隔）：\r\n</p>\r\n[php]\r\n// 加载扩展配置文件\r\n\'LOAD_EXT_CONFIG\' = \'user,db\',\r\n[/php]\r\n<p>\r\n	假设扩展配置文件 user.php&nbsp;和 db.php分别用于用户配置和数据库配置，这样做的好处是哪怕以后关闭调试模式，&nbsp;\r\n</p>\r\n<p>\r\n	你修改db配置文件后依然会自动生效。\r\n</p>\r\n<p>\r\n	如果在应用公共设置文件中配置的话，那么会自动加载应用公共配置目录下面的配置文件\r\n[php] Application/Common/Conf/user.php 和 Application/Common/Conf/db.php [/php]\r\n</p>\r\n<p>\r\n	如果在模块（假设是Home模块）的配置文件中配置的话，则会自动加载模块目录下面的配置文件\r\n[php] Application/Home/Conf/user.php 和 Application/Home/Conf/db.php [/php]\r\n</p>\r\n<p>\r\n	默认情况下，扩展配置文件中的设置参数会并入项目配置文件中。也就是默认都是一级配置参数，例如user.php中的配置参数：\r\n</p>\r\n[php]\r\n//用户配置文件\r\nreturn array(\r\n  \'USER_TYPE\' = 2, //用户类型\r\n  \'USER_AUTH_ID\' = 10, //用户认证ID\r\n  \'USER_AUTH_TYPE\' = 2, //用户认证模式\r\n)\r\n[/php]\r\n<p>\r\n	那么，最终获取用户参数的方式是：\r\n</p>\r\n[php]\r\nC(\'USER_AUTH_ID\');\r\n[/php]\r\n<p>\r\n	如果配置文件改成：\r\n</p>\r\n[php]\r\n// 加载扩展配置文件\r\n\'LOAD_EXT_CONFIG\' = array(\'USER\'=\'user\',\'DB\'=\'db\'),\r\n[/php]\r\n<p>\r\n	则最终获取用户参数的方式改成：\r\n</p>\r\n[php]\r\nC(\'USER.USER_AUTH_ID\');\r\n[/php]\r\n<p>\r\n	注意：扩展配置文件的文件名不能使用：config.php 、alias.php 、tags.php  、debug.php 、core.php\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(395,'JS刷新页面的几种方法','js刷新页面的几种方法',1464840052,1480158621,'JS刷新页面的几种方法:\r\n[php]\r\nhistory.go(0)\r\nlocation.reload()\r\nlocation=location\r\nlocation.assign(location)\r\nwindow.navigate(location)\r\nlocation.replace(location)\r\ndocument.URL=location.href.\r\n[/php]\r\n<hr />\r\n框架页中：(框架页中其中一个子页)\r\n[php]\r\ntop.location.reload();   刷新整页  \r\nself.location.reload();  刷新本页\r\nwindow.parent.location.href=\'\' 框架页重定向 \r\n[/php]\r\n自动刷新页面的方法:\r\n[php]\r\n&lt;meta http-equiv=&quot;refresh&quot; content=&quot;20&quot;&gt;指每隔20秒刷新一次页面\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(402,'CentOS删除文件出现(无权限)rm: cannot remove','centos删除文件出现无权限rm-cannot-remove',1465115094,1480158621,'<span style=\"font-size:14px;\">CentOS系统下删除文件，出现</span> [php]\r\nrm: cannot remove `default/.user.ini\':  Operation not permitted\r\n[/php]\r\n<p>\r\n	错误提示: 说目录中<span style=\"color:#FFFFFF;font-size:14px;background-color:#000000;\">.user.ini</span> <span style=\"font-size:14px;\">没有权限删除</span> \r\n</p>\r\n<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/cannotdemo.png\" alt=\"cannotdemo\" width=\"446\" height=\"51\" class=\"alignnone size-full wp-image-403\" /> \r\n<p>\r\n	<span style=\"font-size:14px;\">解决办法：</span> \r\n</p>\r\n<span style=\"font-size:14px;\">1、chattr解决权限问题：</span> [php] chattr -i .usr.ini [/php] <span style=\"font-size:14px;\">2、再次执行删除命令</span> <span style=\"font-size:14px;\"> [php]\r\nrm .usr.ini  即可\r\n或者\r\nrm -rf default  删除整个目录\r\n[/php]</span> \r\n<hr />\r\n<p>\r\n	<span style=\"line-height:1.5;font-size:14px;\">关于Linux命令： chattr 和 &nbsp;lsattr</span> \r\n</p>\r\n<p>\r\n	<span style=\"font-size:14px;\">1、 chattr &nbsp;改变文件属性</span> \r\n</p>\r\n<p>\r\n	<span style=\"font-size:14px;\">其作用：</span> \r\n</p>\r\n<p>\r\n	<span style=\"color:#FF0000;font-family:verdana, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;background-color:#FFFFFF;\">1) 用chattr命令防止系统中某个关键文件被修改</span> <span style=\"font-size:14px;\">[php] i：设定文件不能被删除、改名、设定链接关系，同时不能写入或新增内容。[/php]\r\n        [php] chattr +i /etc/www.conf [/php]\r\n        [php] 想修改此文件就要把i属性去掉： chattr -i /etc/www.conf [/php]</span> <span style=\"color:#FF0000;font-family:verdana, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;background-color:#FFFFFF;\"><span style=\"font-size:14px;\">2)&nbsp;</span><span style=\"color:#FF0000;font-family:verdana, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;background-color:#FFFFFF;\">让某个文件只能往里面追加数据，但不能删除，适用于各种日志文件</span></span> <span style=\"font-size:14px;\">[php]chattr +a /var/blog_log/  [/php]</span> <span style=\"font-size:14px;\">2、lsattr &nbsp;查看文件或目录，的隐藏属性。</span> <img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/lsattr.png\" alt=\"lsattr\" width=\"346\" height=\"31\" class=\"alignnone size-full wp-image-404\" /> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(417,'ShopNC中关于KindEditor编辑器的使用','shopnc中关于kindeditor编辑器的使用',1465800535,1480158621,'<p>\r\n	1. 在html中调用showEditor函数\r\n</p>\r\n[php]\r\n showEditor(\'demo_service_pc\');\r\n[/php]\r\n[php]\r\n该函数定义在  /core/framework/function/core.php\r\n/**\r\n * 编辑器内容\r\n *\r\n * @param int $id 编辑器id名称，与name同名\r\n * @param string $value 编辑器内容\r\n * @param string $width 宽 带px\r\n * @param string $height 高 带px\r\n * @param string $style 样式内容\r\n * @param string $upload_state 上传状态，默认是开启\r\n */\r\nfunction showEditor($id, $value=\'\', $width=\'700px\', $height=\'300px\', $style=\'visibility:hidden;\',$upload_state=&quot;true&quot;, $media_open=false, $type=\'all\'){\r\n    //是否开启多媒体\r\n    $media = \'\';\r\n    if ($media_open){\r\n        $media = &quot;, \'flash\', \'media\'&quot;;\r\n    }\r\n    switch($type) {\r\n    case \'basic\':\r\n        $items = &quot;[\'source\', \'|\', \'fullscreen\', \'undo\', \'redo\', \'cut\', \'copy\', \'paste\', \'|\', \'about\']&quot;;\r\n        break;\r\n    case \'simple\':\r\n        $items = &quot;[\'source\', \'|\', \'fullscreen\', \'undo\', \'redo\', \'cut\', \'copy\', \'paste\', \'|\',\r\n            \'fontname\', \'fontsize\', \'forecolor\', \'hilitecolor\', \'bold\', \'italic\', \'underline\',\r\n            \'removeformat\', \'justifyleft\', \'justifycenter\', \'justifyright\', \'insertorderedlist\',\r\n            \'insertunorderedlist\', \'|\', \'emoticons\', \'image\', \'link\', \'|\', \'about\']&quot;;\r\n        break;\r\n    default:\r\n        $items = &quot;[\'source\', \'|\', \'fullscreen\', \'undo\', \'redo\', \'print\', \'cut\', \'copy\', \'paste\',\r\n            \'plainpaste\', \'wordpaste\', \'|\', \'justifyleft\', \'justifycenter\', \'justifyright\',\r\n            \'justifyfull\', \'insertorderedlist\', \'insertunorderedlist\', \'indent\', \'outdent\', \'subscript\',\r\n            \'superscript\', \'|\', \'selectall\', \'clearhtml\',\'quickformat\',\'|\',\r\n            \'formatblock\', \'fontname\', \'fontsize\', \'|\', \'forecolor\', \'hilitecolor\', \'bold\',\r\n            \'italic\', \'underline\', \'strikethrough\', \'lineheight\', \'removeformat\', \'|\', \'image\'&quot;.$media.&quot;, \'table\', \'hr\', \'emoticons\', \'link\', \'unlink\', \'|\', \'about\']&quot;;\r\n        break;\r\n    }\r\n    //图片、Flash、视频、文件的本地上传都可开启。默认只有图片，要启用其它的需要修改resource\\kindeditor\\php下的upload_json.php的相关参数\r\n    echo \'\'.$value.\'\';\r\n    echo \'\r\n    \';\r\n    return true;\r\n}\r\n[/php]\r\n<p>\r\n	2. 在页面的显示效果，开始编辑内容\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/20160613144153.png\" alt=\"20160613144153\" width=\"855\" height=\"326\" class=\"alignnone size-full wp-image-420\" /> \r\n</p>\r\n<p>\r\n	3. 提交后，会发现录入到数据库中的内容是，被转义了的字符，而我们是想要这样的效果\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/sqldemo001.png\" alt=\"sqldemo001\" width=\"1184\" height=\"416\" class=\"alignnone size-full wp-image-419\" /> \r\n</p>\r\n<p>\r\n	4. 出现转义，是因为shopnc的安全过滤机制导致的，在【统一入口，初始化文件】shopnc.php\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;对GET、 POST接收内容进行过滤,$ignore内的下标不被过滤，所以只需要在$ignore中加入新的id即可。\r\n</p>\r\n[php]\r\n//统一ACTION\r\n$_GET[\'act\'] = preg_match(\'/^[\\w]+$/i\',$_GET[\'act\']) ? $_GET[\'act\'] : \'index\';\r\n$_GET[\'op\'] = preg_match(\'/^[\\w]+$/i\',$_GET[\'op\']) ? $_GET[\'op\'] : \'index\';\r\n//对GET POST接收内容进行过滤,$ignore内的下标不被过滤\r\n$ignore = array(\'article_content\',\'pgoods_body\',\'doc_content\',\'content\',\'sn_content\',\'g_body\',\r\n\'store_description\',\'p_content\',\'groupbuy_intro\',\'remind_content\',\'note_content\',\'ref_url\',\r\n\'adv_pic_url\',\'adv_word_url\',\'adv_slide_url\',\'appcode\',\'mail_content\');\r\nif (!class_exists(\'Security\')) require(BASE_CORE_PATH.\'/framework/libraries/security.php\');\r\n$_GET = !empty($_GET) ? Security::getAddslashesForInput($_GET,$ignore) : array();\r\n$_POST = !empty($_POST) ? Security::getAddslashesForInput($_POST,$ignore) : array();\r\n$_REQUEST = !empty($_REQUEST) ? Security::getAddslashesForInput($_REQUEST,$ignore) : array();\r\n$_SERVER = !empty($_SERVER) ? Security::getAddSlashes($_SERVER) : array();\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(477,'CSS cursor 属性','css-cursor-属性',1465876114,1480158621,'<p style=\"font-family:微软雅黑;font-size:14px;\">\r\n	<strong>定义和用法</strong> \r\n</p>\r\n<p style=\"font-family:微软雅黑;font-size:14px;\">\r\n	<span style=\"font-family:Verdana, Arial, 宋体;font-size:12px;font-weight:normal;line-height:1.5;\">cursor 属性规定要显示的光标的类型（形状）。</span> \r\n</p>\r\n<p style=\"font-family:微软雅黑;font-size:14px;\">\r\n	<strong>可能的值</strong> \r\n</p>\r\n<table class=\"dataintable\" style=\"margin:10px 0px 0px;padding:0px;border:1px solid #AAAAAA;width:709px;color:#000000;font-family:Verdana, Arial, 宋体;font-size:12px;background-color:#F9F9F9;\">\r\n	<tbody>\r\n		<tr>\r\n			<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;background-color:#D5D5D5;\">\r\n				值\r\n			</th>\r\n			<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;background-color:#D5D5D5;\">\r\n				描述\r\n			</th>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				<i>url</i> \r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				<p>\r\n					需使用的自定义光标的 URL。\r\n				</p>\r\n				<p>\r\n					注释：请在此列表的末端始终定义一种普通的光标，以防没有由 URL 定义的可用光标。\r\n				</p>\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				default\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				默认光标（通常是一个箭头）\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				auto\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				默认。浏览器设置的光标。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				crosshair\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				光标呈现为十字线。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				pointer\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				光标呈现为指示链接的指针（一只手）\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				move\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示某对象可被移动。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				e-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向右（东）移动。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				ne-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向上及向右移动（北/东）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				nw-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向上及向左移动（北/西）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				n-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向上（北）移动。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				se-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向下及向右移动（南/东）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				sw-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向下及向左移动（南/西）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				s-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向下移动（南）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				w-resize\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示矩形框的边缘可被向左移动（西）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				text\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示文本。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				wait\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示程序正忙（通常是一只表或沙漏）。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				help\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;background-color:#EFEFEF;\">\r\n				此光标指示可用的帮助（通常是一个问号或一个气球）。\r\n			</td>\r\n		</tr>\r\n	</tbody>\r\n</table>\r\n<p>\r\n	<span style=\"font-family:Verdana, Arial, 宋体;font-size:12px;font-weight:normal;line-height:1.5;\">简单示例：</span> \r\n</p>\r\n<p>请把鼠标移动到单词上，可以看到鼠标指针发生变化：</p>\r\n<span style=\"cursor:auto\">\r\nAuto</span><br />\r\n<span style=\"cursor:crosshair\">\r\nCrosshair</span><br />\r\n<span style=\"cursor:default\">\r\nDefault</span><br />\r\n<span style=\"cursor:pointer\">\r\nPointer</span><br />\r\n<span style=\"cursor:move\">\r\nMove</span><br />\r\n<span style=\"cursor:e-resize\">\r\ne-resize</span><br />\r\n<span style=\"cursor:ne-resize\">\r\nne-resize</span><br />\r\n<span style=\"cursor:nw-resize\">\r\nnw-resize</span><br />\r\n<span style=\"cursor:n-resize\">\r\nn-resize</span><br />\r\n<span style=\"cursor:se-resize\">\r\nse-resize</span><br />\r\n<span style=\"cursor:sw-resize\">\r\nsw-resize</span><br />\r\n<span style=\"cursor:s-resize\">\r\ns-resize</span><br />\r\n<span style=\"cursor:w-resize\">\r\nw-resize</span><br />\r\n<span style=\"cursor:text\">\r\ntext</span><br />\r\n<span style=\"cursor:wait\">\r\nwait</span><br />\r\n<span style=\"cursor:help\">\r\nhelp</span>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(490,'表单提交POST方法、GET方法浅析','表单提交post方法-get方法浅析-未完',1465897417,1480158621,'<p>\r\n	表单用来接受用户的输入，并将用户的输入以“name=value值对”集合的形式提交到服务器进行处理，\r\n</p>\r\n<p>\r\n	表单form的一些属性：\r\n</p>\r\n<p>\r\n	1、id：表单的唯一标识\r\n</p>\r\n<p>\r\n	2、name：表单的名字\r\n</p>\r\n<p>\r\n	3、method：定义表单提交的方法，有两种方法：POST方法和GET方法\r\n</p>\r\n<p>\r\n	4、action：用于处理表单的服务器端页面（以URL 形式表示）\r\n</p>\r\n<p>\r\n	表单中的控件有两个属性是非常重要的：name属性和value属性，每一个控件的这两个属性将构成“name-value对”提交到\r\n</p>\r\n<p>\r\n	action属性所定义的页面进行处理\r\n</p>\r\n<p>\r\n	1）GET方法\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; &nbsp; 发送表单数据的默认方法，以 “<span style=\"color:#E53333;\">index.php?name1=value1&amp;name2=value2</span>”的形式，将表单数据附加到URL的后面，\r\n</p>\r\n<p>\r\n	提交到服务器处理，安全性不如post方法，表单数据会暴露在URL中。\r\n</p>\r\n<p>\r\n	2）POST方法\r\n</p>\r\n<p>\r\n	POST是通过HTTP&nbsp;POST机制，将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。\r\n</p>\r\n<p>\r\n	用户看不到这个过程,get传送的数据量较小，最多是1024字节。post传送的数据量较大，理论上不受限制。\r\n</p>\r\n<p>\r\n	3）服务端获取\r\n</p>\r\n[php] \r\n$get = $_GET[\'a\']; \r\n$post = $_POST[\'b\']; \r\n在ThinkPHP中还可以这样使用\r\nI(get.a) 和 I(post.b) 安全性更高\r\n[/php]',0,1,NULL,'post','publish',NULL,2,'1','1','1',0,0,0),(501,'jquery点击选中区域，再次点击取消选中的效果','501',1466391082,1480158621,'[php]\r\n点击选中，再次点击取消选中 \r\n$(&quot;.con-dl dd&quot;).click(function(){\r\n     if(!$(this).hasClass(&quot;ddb_select&quot;)){\r\n            $(this).addClass(&quot;ddb_select&quot;);\r\n      }else{\r\n           $(this).removeClass(&quot;ddb_select&quot;);\r\n      }\r\n  });\r\n[/php]\r\n<p class=\"tiy\">\r\n	<a target=\"_blank\" href=\"/demo/20160620/p501/index.php\">运行实例</a> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(510,'P标签实现按钮效果','p标签实现按钮效果',1466406294,1480158621,'[php]\r\np.block{\r\n    text-indent: 0em;\r\n    border: none;\r\n    display: inline-block;\r\n    outline: 0;\r\n    padding: 6px 16px;\r\n    margin-bottom: 10px;\r\n    vertical-align: middle;\r\n    overflow: hidden;\r\n    text-decoration: none;\r\n    color: #fff;\r\n    background-color: #F88E8B;\r\n    text-align: center;\r\n    transition: .2s ease-out;\r\n    cursor: pointer;\r\n    white-space: nowrap;\r\n    box-shadow: 0px 1px 3px rgba(0,0,0,0.12), 0px 1px 2px rgba(0,0,0,0.24);\r\n}\r\n&lt;p class=&quot;block&quot;&gt;\r\n	&lt;a target=&quot;_blank&quot; href=&quot;#&quot;&gt;运行实例&lt;/a&gt; \r\n&lt;/p&gt;\r\n[/php]\r\n<hr />\r\n效果如下：<br />\r\n<p class=\"tiy\">\r\n	<a href=\"#\">运行实例</a> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(513,'CSS text-indent 属性','css-text-indent-属性',1466406465,1480158621,'<p>\r\n将段落的第一行缩进 50 像素：\r\n</p>\r\n[php]\r\np{\r\n  text-indent:50px;\r\n  }\r\n[/php]\r\n<p style=\"text-indent:3em;\">\r\n	我是首行，缩进了，这是文本，这是文本这是文本，这是文本，这是文本，这是文本，这是文本这是文本这是文本这是文本这是文本这是文本,这是文本这是文本这是文本这是文本这是文本这是文本,这是文本这是文本这是文本这是文本这是文本这是文本.\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(518,'phpStudy无法重启和停止的解决方法','phpstudy无法重启和停止的解决方法',1466650760,1480158621,'<p>\r\n	1.打开windows 本地服务：\r\n[php]\r\n win + R --输入 services.msc --回车打开，服务\r\n[/php]\r\n</p>\r\n<p>\r\n	2.找到 apache 和 mysql 的服务项，将两个服务项目的启动类型改为【手动】，并且【停止】这个两个服务项目。\r\n</p>\r\n<p>\r\n	3.改为手动后，就可以用phpStudy的管理界面的【启动】，【停止】，【重启】。\r\n</p>\r\n<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/qq20160623105959.png\" alt=\"qq20160623105959\" width=\"1165\" height=\"595\" class=\"alignnone size-full wp-image-521\" />',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(525,'PHP无法上传文件：PHP Warning:File upload error unable to create a temporary file in Unknown on line 0','php无法上传文件-php-warning-file-upload-error-unable-to-create-a-temporary-file-in-unknown-on-line-0',1466817165,1480158621,'<p>\r\n	PHP无法上传文件：PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0\r\n</p>\r\n<p>\r\n	1. 打开php.ini 查看临时文件位置&nbsp;upload_tmp_dir 是否设置？\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/WRON3FVBJAFZC3O77G.png\" alt=\")WRON3`FVBJAFZC3(O7`[7G\" width=\"666\" height=\"323\" class=\"alignnone size-full wp-image-526\" /> \r\n</p>\r\n<p>\r\n	&nbsp;<span>为了保险起见还是设置下这个值，当</span>php.ini 没有设置 upload_tmp_dir，\r\n</p>\r\n<p>\r\n	那么默认 php 进程会读写系统的临时目录(Windows 默认为 C:/windows/temp，Linux 为 /tmp）\r\n</p>\r\n<p>\r\n	2.&nbsp;<span style=\"line-height:1.5;\">检查&nbsp;</span><span style=\"line-height:1.5;\">upload_tmp_dir 临时文件存储位置文件夹的读写权限？</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">Linux 下，可以设置 chmod 0777 /wwwroot/tmp</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">Windows 下，目录右键&gt;属性，设置安全 &gt; 目录权限，给IUSR_用户相应的权限，</span> \r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/qq20160625090200.png\" alt=\"qq20160625090200\" width=\"730\" height=\"461\" class=\"alignnone size-full wp-image-527\" /> \r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/qqnew20160625090958.png\" alt=\"qqnew20160625090958\" width=\"995\" height=\"542\" class=\"alignnone size-full wp-image-529\" /> \r\n</p>\r\n<p>\r\n	3. 最重要的，完成修改后，要重启服务器apache，nginx或者IIS&nbsp;\r\n</p>',0,1,NULL,'post','publish',NULL,1,'1','1','1',0,0,0),(535,'PHP常用函数整理(字符串)','php常用函数整理20160625',1466848012,1480158621,'<pre class=\"prettyprint lang-bsh\">函数分析：三要素【函数名】，【参数】，【返回值】</pre>\r\n<p>\r\n	1. 使用substr_replace()字符串部分替换函数【eg：隐藏手机号】\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<table style=\"width:100%;\" cellpadding=\"2\" cellspacing=\"0\" border=\"1\" bordercolor=\"#000000\">\r\n		<tbody>\r\n			<tr>\r\n				<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n					参数\r\n				</th>\r\n				<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n					描述\r\n				</th>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					string\r\n				</td>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					必需。规定要检查的字符串。\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					replacement\r\n				</td>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					必需。规定要插入的字符串。\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					start\r\n				</td>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					必需。规定在字符串的何处开始替换。\r\n正数 - 在字符串中的指定位置开始替换\r\n负数 - 在从字符串结尾的指定位置开始替换\r\n0 - 在字符串中的第一个字符处开始替换\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					length\r\n				</td>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					可选。规定要替换多少个字符。默认是与字符串长度相同。\r\n正数 - 被替换的字符串长度\r\n负数 - 表示待替换的子字符串结尾处距离 string 末端的字符个数。\r\n0 - 插入而非替换\r\n				</td>\r\n			</tr>\r\n		</tbody>\r\n	</table>\r\n</p>\r\n<pre class=\"prettyprint lang-php\">$phone=\"18463122361\"; \r\necho substr_replace($phone,\'*****\',3,5); //184*****361</pre>\r\n<p>\r\n	2. explode() 分割字符串为数组：&nbsp;explode(separator,string,limit) 该函数返回一个数组。\r\n</p>\r\n<table style=\"width:100%;\" cellpadding=\"2\" cellspacing=\"0\" border=\"1\" bordercolor=\"#000000\">\r\n	<tbody>\r\n		<tr>\r\n			<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n				参数\r\n			</th>\r\n			<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n				描述\r\n			</th>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				separator\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				必需。规定在哪里分割字符串。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				string\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				必需。要分割的字符串。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				limit\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				可选。规定所返回的数组元素的数目。\r\n可能的值：\r\n大于 0 - 返回包含最多 limit 个元素的数组\r\n小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组\r\n0 - 返回包含一个元素的数组\r\n			</td>\r\n		</tr>\r\n	</tbody>\r\n</table>\r\n<p>\r\n	eg：有时候，可以循环将结果集中某一个元素进行拼接成一个字符串，然后将字符串安装【逗号】【空格】的分割方式，分割成数组的形式，然后在对数组进行处理。\r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\n$str = \'one|two|three|four\';\r\n// 正数的 limit\r\nprint_r(explode(\'|\', $str, 2));\r\n// 负数的 limit（自 PHP 5.1 起）\r\nprint_r(explode(\'|\', $str, -1));\r\n?&gt;\r\n以上例程会输出：\r\nArray\r\n(\r\n    [0] =&gt; one\r\n    [1] =&gt; two|three|four\r\n)\r\nArray\r\n(\r\n    [0] =&gt; one\r\n    [1] =&gt; two\r\n    [2] =&gt; three\r\n)</pre>\r\n<p>\r\n	3. implode() 把数组元素组合为字符串：implode(separator,array) &nbsp;&nbsp;函数返回由数组元素组合成的字符串。\r\n</p>\r\n<p>\r\n	<table style=\"width:100%;\" cellpadding=\"2\" cellspacing=\"0\" border=\"1\" bordercolor=\"#000000\">\r\n		<tbody>\r\n			<tr>\r\n				<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n					参数\r\n				</th>\r\n				<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n					描述\r\n				</th>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					separator\r\n				</td>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					可选。规定数组元素之间放置的内容。默认是 \"\"（空字符串）。\r\n				</td>\r\n			</tr>\r\n			<tr>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					array\r\n				</td>\r\n				<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n					必需。要组合为字符串的数组。\r\n				</td>\r\n			</tr>\r\n		</tbody>\r\n	</table>\r\n</p>\r\n<pre class=\"prettyprint lang-php\">用不同的字符分隔数组元素：\r\n&lt;?php\r\n$arr = array(\'Hello\',\'World!\',\'I\',\'love\',\'Shanghai!\');\r\necho implode(\" \",$arr).\"&lt;br&gt;\";\r\necho implode(\"+\",$arr).\"&lt;br&gt;\";\r\necho implode(\"-\",$arr).\"&lt;br&gt;\";\r\necho implode(\"X\",$arr);\r\n?&gt;\r\n以上例程会输出：\r\nHello World! I love Shanghai!\r\nHello+World!+I+love+Shanghai!\r\nHello-World!-I-love-Shanghai!\r\nHelloXWorld!XIXloveXShanghai!</pre>\r\n<p>\r\n	4. trim() &nbsp;去除字符串首尾处的空白字符&nbsp;\r\n</p>\r\n<pre class=\"prettyprint lang-js\">可以在接收POST值得时候\r\n$a = tirm($_POST[\'a\']);</pre>\r\n5. strcmp() &nbsp;比较两个字符串（区分大小写）\r\n<pre class=\"prettyprint lang-php\">本函数返回：\r\n0 - 如果两个字符串相等\r\n&lt;0 - 如果 string1 小于 string2\r\n&gt;0 - 如果 string1 大于 string2  </pre>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\necho strcmp(\"Hello world!\",\"Hello world!\"); // 两字符串相等\r\necho strcmp(\"Hello world!\",\"Hello\"); // string1 大于 string2\r\necho strcmp(\"Hello world!\",\"Hello world! Hello!\"); // string1 小于 string2\r\n?&gt;</pre>\r\n<p>\r\n	6. strtolower() 将字符串转换为小写&nbsp;\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">&nbsp; &nbsp;strtoupper() 将字符串转换为大写</span> \r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\n$str = \"Mary Had A Little Lamb and She LOVED It So\";\r\n$str = strtolower($str);\r\necho $str; // 打印 mary had a little lamb and she loved it so\r\n\r\n$str = \"Mary Had A Little Lamb and She LOVED It So\";\r\n$str = strtoupper($str);\r\necho $str; // 打印 MARY HAD A LITTLE LAMB AND SHE LOVED IT SO</pre>\r\n<p>\r\n	7. strchr() &nbsp;搜索字符串在另一字符串中的第一次出现。\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;stripos()	返回字符串在另一字符串中第一次出现的位置（对大小写不敏感）。<br />\r\n&nbsp; &nbsp;stristr() &nbsp;查找字符串在另一字符串中第一次出现的位置（大小写不敏感）。\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;strpos()&nbsp;返回字符串在另一字符串中第一次出现的位置（对大小写敏感）。\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;strripos()	查找字符串在另一字符串中最后一次出现的位置（对大小写不敏感）。<br />\r\n&nbsp; &nbsp;strrpos()	查找字符串在另一字符串中最后一次出现的位置（对大小写敏感）。\r\n</p>\r\n<p>\r\n	8. strlen() 返回字符串的长度 。\r\n</p>\r\n<p>\r\n	9. strrev() 反转字符串。\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\necho strrev(\"Hello world!\"); // 输出 \"!dlrow olleH\"\r\n?&gt;</pre>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(539,'MySQL常用语句整理20160625','mysql常用语句整理20160625',1466848354,1480158621,'<p>\r\n	1.基于SQL语句，通过id来筛选奇数行、偶数行\r\n</p>\r\n\r\n	[php] \r\n SELECT * FROM shopnc_employee WHERE id%2 = 1\r\n 或者\r\n SELECT * FROM shopnc_employee WHERE id MOD 2 = 1\r\n[/php]\r\n\r\n<p>\r\n	2. 待续。。。\r\n</p>',0,1,NULL,'post','publish',NULL,3,'1','1','1',0,0,0),(543,'a:link,a:visited,a:hover,a:active分别是啥意思？','alinkavisitedahoveraactive分别是啥意思',1467101949,1480158621,'[php]\r\na:link ： 是超链接第一次（没有点击过）所显示的样式\r\na:visited ：点击过后的样式，即（鼠标左键点击抬起之后）的超链接样式\r\na:hover：鼠标放上去时（鼠标不点击）所显示的样式\r\na:active ：鼠标左键按下不抬起时所显示的样式\r\n[/php]\r\n<hr />\r\n<p class=\"tiy\">\r\n	<a target=\"_blank\" href=\"/demo/20160628/p543/index.php\">运行实例</a> \r\n</p>\r\n',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(547,'CRM,ERP,OA,MIS都是什么？有什么用？','crmerpoamis都是什么-有什么用',1467107821,1480158621,'<p>\r\n	记得有一次面试，面试官问了我这个问题，当时只知道OA是系统办公软件，所以回答的含糊。。。。\r\n</p>\r\n<p>\r\n	特意百度了下，顺便整理下来，方便多了解了解。。。。\r\n</p>\r\n<p>\r\n	一、认识：\r\n</p>\r\n<p>\r\n	1. OA (Office Automation,简称OA),即：协同办公系统，倾向于办公、审批、公文流转\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;&nbsp;主要处理企业内部各项事务，辅助管理，提高办公效率，处理文件流，\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 是面向组织的日常运作和管理，员工及管理者使用频率最高的应用系统。\r\n</p>\r\n<p>\r\n	2.&nbsp;CRM (Customer Relationship Management)，即：客户关系管理系统，倾向于客户信息的管理\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 指计算机自动化分析销售、市场营销、客户服务以及应用等流程的软件系统，\r\n</p>\r\n<p>\r\n	3. ERP（Enterprise Resource Plan）即：企业资源计划，倾向于面向库存及进销存\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 是指建立在信息技术基础上，以系统化的管理思想，为企业决策层及员工提供决策运行手段的管理平台\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; ERP 是企业资源计划，属于管理系统，一般适合于制造型企业。ERP的范围比较广，现在很多ERP系统，也包括了CRM系统。\r\n</p>\r\n<p>\r\n	综上所述：CRM是管人，OA管文件，ERP管物。\r\n</p>\r\n<p>\r\n	二、区别\r\n</p>\r\n<p>\r\n	功能上的区别：\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 这些管理软件的功能也是由它的管理方向所决定的，\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;OA的功能主要有收文管理、发文管理、文档管理，\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;CRM的功能主要有客户信息管理、销售订单管理、合同管理，\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;ERP的主要功能有制作流程控制、供应链管理、排产管理。\r\n</p>\r\n<p>\r\n	故：oa主要是用在行政、教育行业的办公管理中，crm主要是用于外贸企业或者销售行业中，erp主要是用在<span style=\"line-height:1.5;\">生产</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">制造企业的流程化生产过程中</span> \r\n</p>\r\n<p>\r\n	三、 MIS（Management Information System，管理信息系统）\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; MIS（Management Information System，管理信息系统）&nbsp;，是一个由人、计算机及其他外围设备等组成的\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 能进行信息的收集、传递、存贮、加工、维护和使用的系统。\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">&nbsp; &nbsp;&nbsp;完善的MIS具有以下四个标准：确定的信息需求、信息的可采集与可加工、可以通过程序为管理人员提供信息、可以对</span> \r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 信息进行管理。\r\n</p>\r\n<hr />\r\n<p>\r\n	注：部分摘录自：\r\n<p>1.百度百科：<span><a target=\"_blank\" href=\"http://dwz.cn/3FxM7K\">http://dwz.cn/3FxM7K</a></span> <br /></p>\r\n<p>2.MBA智库百科：<span><a target=\"_blank\" href=\"http://wiki.mbalib.com/wiki/MIS\">http://wiki.mbalib.com/wiki/MIS</a></span> \r\n</p>',0,1,NULL,'post','publish',NULL,1,'1','1','1',0,0,0),(586,'wordpress页面属性无法选择[页面模板]--创建自定义的页面模板','wordpress创建自定义的页面模板',1467191869,1480158621,'<p>\r\n	1. 因为想单独，做一个页面，而又不想被wordpress现有的主题样式所限制&nbsp;，所以找到\r\n</p>\r\n<p>\r\n	&nbsp;【页面】-&gt;【页面属性】-&gt;【选择页面模板】来达到效果，\r\n</p>\r\n<p>\r\n	&nbsp;WordPress 模板，对于【页面】类型的 post_type，可以用 page-{page_slug}.php&nbsp;这样的方式来编写页面模板文件,\r\n</p>\r\n<p>\r\n	也就是说，如果我们在后台创建了一个别名为 guestbook的页面，然后我们又在模板文件夹里面创建了一个\r\n</p>\r\n<p>\r\n	&nbsp;page-gusetbook.php&nbsp;，那么这个页面就将自动使用这个页面进行渲染。\r\n</p>\r\n<p>\r\n	&nbsp;其中，对于模板渲染页面的优先级，最优先的规则是：\r\n               [php]1. custom template file – The page template assigned to the page. See get_page_templates().[/php]\r\n</p>\r\n<p>\r\n	&nbsp;再后面才是上面说的&nbsp;page-{slug}.php&nbsp;的规则。\r\n</p>\r\n<p>\r\n	&nbsp;那么这个反映到后台的模板，就是这个样子，在页面的编辑块“页面属性”里面，可以指定页面的模板：\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/06/qq20160629172832.png\" alt=\"qq20160629172832\" width=\"273\" height=\"320\" class=\"alignnone size-full wp-image-592\" /> \r\n</p>\r\n<p>\r\n	2. 自定义页面模板\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; 要创建了一个别名为 guestbook&nbsp;的页面，然后你安装的主题目录下【/wp-content/themes/yourthems/】\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;新建&nbsp;page_guestbook.php ，\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">&nbsp; &nbsp;<strong><span style=\"color:#E53333;\">注意：前缀 page 后面必须跟的是下划线而不是横杠。</span></strong></span> \r\n</p>\r\n<p>\r\n	3.&nbsp;需要在这个<strong><span style=\"background-color:#60D978;\">模板文件前面加上注释</span></strong>，以表明这个页面模板的名称，在后台\r\n</p>\r\n<p>\r\n	【页面】--&gt;【页面属性】--&gt;【选择页面模板】下拉框中显示的就是这里的内容：\r\n</p>\r\n[php] \r\n /* Template Name: guestbook */\r\n[/php]\r\n<p>\r\n	4. 现在打开后台【页面】--&gt;【页面属性】--&gt;【新建页面】编辑页面就可以看得到这个模板的选项了。\r\n</p>\r\n<p>\r\n	5. 如果以上操作还未能实现【选择模板】的效果，则是<span style=\"line-height:1.5;\">由于PHP禁用了scandir函数。</span> \r\n</p>\r\n<p>\r\n	<strong><span style=\"color:#E53333;\">解决办法：</span></strong> \r\n</p>\r\n<p>\r\n	1)、编辑php.ini配置文件：\r\n</p>\r\n[php]# vim /usr/local/php/etc/php.ini [/php]\r\n<p>\r\n	2)、通过 /scandir 快速查找到该函数的位置，在 disable_functions 里面找到 scandi r函数，将其删除掉，\r\n</p>\r\n<p>\r\n	然后 esc , wq保存并退出，再<span>重启PHP，重启服务器即可生效。</span> \r\n</p>\r\n[php]\r\n         # /etc/init.d/php-fpm restart \r\n\r\n         # service nginx restart    \r\n        [/php] <br />\r\n[php]\r\n定义和用法\r\nscandir() 函数返回一个数组，其中包含指定路径中的文件和目录。\r\n[/php]\r\n<hr />\r\n<p>\r\n	注：部分内容转载，摘录自\r\n</p>\r\n<p>\r\n	1. 推酷文章<a target=\"_blank\" href=\"http://www.tuicool.com/articles/Q3AFNjA\">http://www.tuicool.com/articles/Q3AFNjA</a> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(689,'WordPress标签云插件WP-Cumulus','wordpress标签云插件wp-cumulus',1467446214,1480158621,'<p>\r\n	1. 插件下载地址？\r\n</p>\r\n<p>\r\n	1) 官网地址,:<a href=\"https://wordpress.org/plugins/wp-cumulus/\" target=\"_blank\">由此跳转</a>;\r\n</p>\r\n<p>\r\n	2) 百度网盘,:<a href=\"http://pan.baidu.com/s/1hqB2wGO\" target=\"_blank\">由此跳转</a>.\r\n</p>\r\n<p>\r\n	3)上传到至wp-content/plugins/目录下，或者利用wp后台直接安装插件。\r\n</p>\r\n<p>\r\n	2.如何使用？\r\n</p>\r\n<p>\r\n	&nbsp; 在主题的sidebar.php文件中添加调用代码，如下\r\n</p>\r\n<p>\r\n	[php] \r\n wp_cumulus_insert(); [/php]\r\n</p>\r\n<p>\r\n	3. 高度和宽度以及颜色和其他参数的设置？\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/07/qq20160702154743.png\" alt=\"qq20160702154743\" width=\"895\" height=\"696\" class=\"alignnone size-full wp-image-690\" /> \r\n</p>\r\n<p>\r\n	这是我的参数设置，效果如下：\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/07/qq20160702155215.png\" alt=\"qq20160702155215\" width=\"935\" height=\"348\" class=\"alignnone size-full wp-image-693\" /> \r\n</p>\r\n<p>\r\n	其中部分设置参数的含义：\r\n</p>\r\n[php]\r\n1. Width：显示宽度，一般建议设置：260\r\n2. Height：显示高度，一般一样的：260\r\n3. Tag color:标签颜色。设置从文章标签中抓去的关键词的颜色。\r\n4. Optional second color for gradient:设置标签第二种颜色，一般从文章分类目录的关键词的颜色。\r\n5. Optional height color:关键词高亮颜色。当鼠标放在关键词上时，会自动显示高亮的颜色。\r\n6. Background color：背景色\r\n7. Speed：转动速度。就是鼠标放上，关键词标签转动速度。一般设置：100\r\n8. Distribute evenly on sphere：设置球体均匀分布关键词\r\n     Tags  从文章标签中抓去关键词。\r\n     Categories  从分类目录、页面中抓去关键词。\r\n     Both  从文章标签和分类目录中去抓去关键词。\r\n9. wp_tag_cloud：全局参数设置，设置显示标签数量、最大字体和最小字体。\r\n[/php]\r\n<hr />\r\n注：部分内容转载，摘录自：\r\n<p>\r\n	1. <a href=\"http://www.mfbuluo.com/12414.html\" target=\"_blank\">http://www.mfbuluo.com/12414.html</a> \r\n</p>\r\n<p>\r\n	2. <a href=\"http://www.boke8.net/wordpress-plugin-wp-cumulus.html\" target=\"_blank\">http://www.boke8.net/wordpress-plugin-wp-cumulus.html</a> \r\n</p>\r\n<p>\r\n	3. 参数中使用的10进制颜色代码表，查看地址：<a href=\"http://dwz.cn/3H9UiH\" target=\"_blank\">http://dwz.cn/3H9UiH</a> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(697,'WordPress网站地图插件Baidu Sitemap Generator','wordpress网站地图插件baidu-sitemap-generator',1467447921,1480158621,'<p>\r\n	1. 下载地址？\r\n</p>\r\n<p>\r\n1）<a href=\"http://liucheng.name/883/\" target=\"_blank\">柳城官方</a>&nbsp;\r\n</p>\r\n<p>\r\n2）<a href=\"http://wordpress.org/plugins/baidu-sitemap-generator/\" target=\"_blank\">WordPress官方</a>&nbsp;\r\n</p>\r\n<p>\r\n3） wordpress后台搜索安装\r\n</p>\r\n<p>\r\n	2. 安装完成后，如何使用？\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/07/qq20160702161055.png\" alt=\"qq20160702161055\" width=\"724\" height=\"678\" class=\"alignnone size-full wp-image-698\" /> \r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	注：Baidu Sitemap Generator 需要在根目录生成文件，所以确保你的网站根目录有读写权限，<span style=\"color:#E53333;\">一般为 755 或 777</span>;\r\n</p>\r\n<p>\r\n	或者执行[php]#chmod o+w /www [/php]\r\n</p>\r\n1）第一次使用选择【基本配置】的参数，其中sina sae是新浪的虚拟主机，如果你的空间不是新浪的SAE就不要勾选，然后提交。\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	2）配置完了参数，确定<span style=\"color:#E53333;\">网站根目录有写入权限</span>，然后点击【Update XML file】 生成相应的XML 和 html页面。\r\n</p>\r\n<p>\r\n	3）如果生成成功，会出现这两个链接，可以打开测试一下。\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/07/qq20160702161830.png\" alt=\"qq20160702161830\" width=\"733\" height=\"111\" class=\"alignnone size-full wp-image-699\" /> \r\n</p>\r\n<p>\r\n	注：该插件的PS部分，可以提高百度的收录速度，可以试一试，先加上看看效果吧，\r\n</p>\r\n<p>\r\n	在【设置】--【撰写】中添加，如图：\r\n</p>\r\n<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/07/qq20160702162246.png\" alt=\"qq20160702162246\" width=\"864\" height=\"456\" class=\"alignnone size-full wp-image-700\" />',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(703,'Nginx启动, 停止, 平滑重启命令','nginx启动-停止-平滑重启命令',1467449155,1480158621,'<p>\r\n	1. Nginx 启动\r\n</p>\r\n[php]# /usr/local/nginx/sbin/nginx -c\r\n如果不加 -c 参数，Nginx默认加载conf子目录中的nginx.conf \r\n如：\r\n# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf\r\n[/php]\r\n<p>\r\n	2. Nginx 停止\r\n</p>\r\n[php]# /usr/local/nginx/sbin/nginx -s stop [/php]\r\n<p>\r\n	3. Nginx 平滑重启\r\n</p>\r\n[php]# /usr/local/nginx/sbin/nginx -s reload [/php]\r\n<p>\r\n	4. Nginx 检测配置文件是否正确\r\n</p>\r\n[php]# /usr/local/nginx/sbin/nginx -t [/php]\r\n<p>\r\n	5. Nginx 查看当前安装的Nginx版本号\r\n</p>\r\n[php]# /usr/local/nginx/sbin/nginx -v [/php]\r\n<p>\r\n	6. Nginx 如果注册成系统服务则可以使用以下命令操作：\r\n</p>\r\n[php]\r\n启动 # service nginx start\r\n停止 # service nginx stop\r\n重启 # service nginx restart\r\n平滑重启 #service nginx reload\r\n查看运行状态 #service nginx status\r\n[/php]\r\n[php] \r\n使用方法：\r\n# Usage: /etc/init.d/nginx {start|stop|force-quit|restart|reload|status|configtest}\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(712,'svn在linux平台下常用操作命令','svn-centos-命令',1467795441,1480158621,'<p>svn在linux(centos)平台下常用操作命令：\r\n</p>\r\n<p>\r\n	1. checkout 一份\r\n</p>\r\n[php]svn co svn://localhost/  /www/[/php]\r\n<p>\r\n	2. svn 新增文件（提交前先更新svn版本库）\r\n</p>\r\n[php]\r\n 1）更新到最新版本： svn update   \r\n 2）新增文件：  svn add * \r\n 3）将改动提交至版本库： svn ci  -m \'LogMessage\'\r\n 4）根据提示查看是否成功 出现版本号，version 增加即为成功\r\n    svn add file \r\n    例如：svn add a.php(添加a.php)  svn add * (添加当前目录下所有文件)\r\n[/php]\r\n<p>\r\n	3. svn 删除文件（提交前先更新svn版本库）\r\n</p>\r\n[php]\r\n 1）更新到最新版本： svn update   \r\n 2）删除文件：svn delete   svn:// localhost/www/test.php  -m   &quot; delete test file &quot;\r\n 3）将改动提交至版本库： svn ci  -m \'LogMessage\'\r\n 4）根据提示查看是否成功 出现版本号，version \r\n    svn delete  path -m &quot; delete test fle &quot; \r\n    例如：svn delete   svn:// localhost/www/test.php  -m   &quot; delete test file &quot;\r\n    或直接svn delete test.php 再svn ci -m \'delete test file\r\n[/php]\r\n<p>\r\n	4. svn 更新\r\n</p>\r\n[php]\r\nsvn update -r m path\r\n例如：\r\n1）svn update   如果后面没有具体目录，默认将当前目录以及子目录下的所有文件都更新到最新版本。\r\n2）svn update -r  20  a.php (将版本库中的文件a.php还原到版本20)\r\n   简写：svn up\r\n[/php]',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(722,'PHP与时间戳(获取今天明天下周本月第一天)','php与时间戳获取今天明天下周的时间戳',1469605147,1480158621,'<h4>\r\n	<span style=\"line-height:1.5;\">PHP与时间戳(获取今天明天下周的时间戳)方法汇总</span> \r\n</h4>\r\n[php]\r\ndate_default_timezone_set(\'PRC\'); //默认时区\r\n//获得当前时间戳\r\necho time();\r\n// 得到指定时间的时间戳： mktime(时, 分, 秒, 月, 日, 年)\r\n//mktime(hour, minute, second, month, day, year);\r\n//时间戳--&gt;日期\r\n$date = date(\'Y-m-d H:i:s\',time());\r\necho $date;\r\n//日期--&gt;时间戳\r\n$stamptime = strtotime(&quot;2016-07-27 16:05:00&quot;);\r\necho $stamptime;\r\n//获取明天此时的时间戳\r\nstrtotime(&quot;+1 day&quot;);//明天\r\necho date(\'Y-m-d H:i:s\',strtotime(&quot;+1 day&quot;)).&quot;&lt;hr&gt;&quot;;\r\n$date1 = &quot;2016-07-27&quot;;\r\necho &quot;五天后:&quot;.date(\'Y-m-d\',strtotime(&quot;$date1 +5 day&quot;)).&quot;&lt;hr&gt;&quot;;\r\n \r\n//输出本月第一天时间值\r\necho  date(\'Y-m-01 00:00:00\').&quot;&lt;hr&gt;&quot;;\r\n//输出本月最后一天时间值\r\necho date(\'Y-m-d 23:59:59\', strtotime(date(\'Y-m-01 00:00:00\').\' +1 month -1 day\')).&quot;&lt;hr&gt;&quot;;\r\n \r\n//获取今天、明天、下周、下个月的时间戳\r\necho &quot;今天:&quot;.date(&quot;Y-m-d&quot;,time()).&quot;&lt;hr&gt;&quot;;\r\necho &quot;昨天:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;-1 day&quot;)). &quot;&lt;hr&gt;&quot;;\r\necho &quot;明天:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;+1 day&quot;)). &quot;&lt;hr&gt;&quot;;\r\necho &quot;一周后:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;+1 week&quot;)). &quot;&lt;hr&gt;&quot;;\r\necho &quot;一周零两天两小时两分钟两秒后:&quot;.\r\ndate(&quot;Y-m-d H:i:s&quot;.strtotime(&quot;+1 week 2 days 2 hours 2 minutes 2 seconds&quot;)). &quot;&lt;hr&gt;&quot;;\r\necho &quot;本周五:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;next Friday&quot;)). &quot;&lt;hr&gt;&quot;;\r\necho &quot;上周五:&quot;.date(&quot;Y-m-d&quot;, strtotime(\'last Friday\')).&quot;&lt;hr&gt;&quot;;\r\necho &quot;上周一:&quot;.date(&quot;Y-m-d&quot;, strtotime(\'last Monday\') - 3600 * 24 * 7).&quot;&lt;hr&gt;&quot;;\r\necho &quot;上周日:&quot;.date(&quot;Y-m-d&quot;, strtotime(\'last Monday\')- 3600 * 24).&quot;&lt;hr&gt;&quot;;\r\necho &quot;一个月前:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;last month&quot;)).&quot;&lt;hr&gt;&quot;;\r\necho &quot;一个月后:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;+1 month&quot;)).&quot;&lt;hr&gt;&quot;;\r\necho &quot;十年后:&quot;.date(&quot;Y-m-d&quot;,strtotime(&quot;+10 year&quot;)).&quot;&lt;hr&gt;&quot;;\r\n[/php]\r\n<p>\r\n	<span style=\"line-height:1.5;\">注：</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\"><a href=\"http://www.hsblogs.com/?p=725\" target=\"_blank\">1. JS与时间戳(javascript时间戳和日期字符串相互转换)</a></span> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(725,'JS与时间戳(js时间戳和日期字符串相互转换)','js与时间戳js时间戳和日期字符串相互转换',1469605867,1480158621,'<h4>\r\n	JS与时间戳(js时间戳和日期字符串相互转换)\r\n</h4>\r\n[php] \r\n&lt;script type=&quot;text/javascript&quot;&gt;\r\n    function gettime() {\r\n        alert(\'当前的毫秒数:\'+new Date().getTime());//获取当前的毫秒数\r\n        var unixTimestamp = new Date(new Date().getTime());//当前的unix时间戳\r\n        var commonTime = unixTimestamp.toLocaleString();//普通时间，格式12小时制\r\n        alert(commonTime);\r\n    }\r\n    function add_float(m){return m&lt;10?\'0\'+m:m }\r\n    function format_time(unixtime)\r\n    {\r\n        var time = new Date(unixtime  * 1000);\r\n        var y = time.getFullYear();\r\n        var m = time.getMonth()+1;\r\n        var d = time.getDate();\r\n        var h = time.getHours();\r\n        var mm = time.getMinutes();\r\n        var s = time.getSeconds();\r\n        //得到24小时制时间格式\r\n        return y+\'-\'+add_float(m)+\'-\'+add_float(d)+\' \'+add_float(h)+\':\'+add_float(mm)+\':\'+add_float(s);\r\n    }\r\n    // 得到指定时间的时间戳：\r\n    // var commonTime = new Date(Date.UTC(year, month - 1, day, hour, minute, second))\r\n&lt;/script&gt;\r\n[/php]\r\n<p>\r\n	<span style=\"line-height:1.5;\">注：</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\"><a href=\"http://www.hsblogs.com/?p=722\" target=\"_blank\">1. PHP与时间戳(获取今天明天下周的时间戳)</a></span> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(736,'PHP防止表单重复提交的几种常用简单方法','php防止表单重复提交的几种常用简单方法',1469771565,1480158621,'<p>\r\n	1.&nbsp;使用JS让按钮在点击一次后禁用（disable），但是，客户端禁止javascript脚本就失效了！\r\n	2.&nbsp;提交成功后执行页面重定向（redirect），但是，使用浏览器的后退前进按钮，同样的问题！\r\n	3.&nbsp;表单隐藏域中存放session（表单被请求时生成的唯一标记）[令牌验证法]：\r\n	&nbsp;1）在服务端生成一个session或者一个随机数 ，渲染页面时，给form里的一个隐藏域token赋值。\r\n	&nbsp;2）当form提交时，<span>token一同提交到服务端，进行比较。\r\n[php]\r\n//表单页隐藏域存放此//服务端处理，如果是存的session来判断的\r\n//处理\r\nif($_POST[\'token\'] != \'\' &amp;&amp; $_POST[\'token\'] == $_SESSION[\'token\'])\r\n{\r\n　 unset($_SESSION[\'token\']);\r\n  //其他代码\r\n}\r\n[/php]</span> \r\n</p>\r\n<p>\r\n	4. 数据库唯一索引约束：\r\n	&nbsp;1) 即在每次服务端进行数据处理之前，进行对数据库某一唯一索引进行比对\r\n</p>\r\n<p>\r\n	5. 对于数据的处理：\r\n	&nbsp;1）限制同意user_id、ip、phone等，5分钟或10分钟之内，不能重复提交\r\n	&nbsp;2）限制所有user_id ,每天只能提交10次。\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(764,'PHP字符串的heredoc和nowdoc语法结构','php字符串的heredoc和nowdoc语法结构',1471058757,1480158621,'<p>\r\n	看到很多开源系统中，控制中要输出一大长串的HTML代码，不可避免的存在字符之间的转义问题：（php字符串中有两种结构可以很好地解决这个问题）\r\n</p>\r\n<p>\r\n	一、1. &nbsp;heredoc 结构\r\n</p>\r\n<p>\r\n	看看php手册对此的介绍：&nbsp; &nbsp; &nbsp;\r\n</p>\r\n<p>\r\n	第三种表达字符串的方法是用 heredoc 句法结构：&lt;&lt;&lt;。在该运算符之后要提供一个标识符，然后换行。接下来是字符串string本身，最后要用前面定义的标识符作为结束标志。\r\n结束时所引用的标识符必须在该行的第一列，而且，标识符的命名也要像其它标签一样遵守 PHP 的规则：只能包含字母、数字和下划线，并且必须以字母和下划线作为开头。\r\n</p>\r\n<p>\r\n	先来看一个例子：\r\n</p>\r\n<pre class=\"prettyprint lang-php\">$tpl = &lt;&lt;&lt;tpl\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=\"right-head\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {$key}\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=\"right-body\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=\"right-body-block\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=\"prev-block\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {$img}\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p class=\"file-info-item\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 外链地址：&lt;input class=\"file-share-link\" type=\"text\" readonly=\"readonly\" value=\"{$this-&gt;qiniu-&gt;downlink($key)}\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/p&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p class=\"file-info-item\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 最后更新时间：&lt;span&gt;{$time}&lt;/span&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/p&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;p class=\"file-info-item\"&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 文件大小：&lt;span class=\"file-size\"&gt;{$filesize}&lt;/span&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/p&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;\r\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;\r\ntpl;//必须顶格，不能有空格\r\n</pre>\r\n<tpl\r\n<div class=\"right-head\">\r\n	<p>\r\n		再来一个手册中的例子\r\n	</p>\r\n<eod example=\"\" of=\"\" string=\"\" spanning=\"\" multiple=\"\" lines=\"\" using=\"\" heredoc=\"\" syntax.=\"\" eod;=\"\" *=\"\" 含有变量的更复杂示例=\"\" class=\"\" foo=\"\" {=\"\" var=\"\" $foo;=\"\" $bar;=\"\" function=\"\" foo()=\"\" $this-=\"\"><eot my=\"\" name=\"\" is=\"\" \"$name\".=\"\" i=\"\" am=\"\" printing=\"\" some=\"\" $foo-=\"\">\r\n	<p>\r\n		<span style=\"line-height:1.5;\"> </span> \r\n	</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\n$str = &lt;&lt;&lt;EOD\r\nExample of string\r\nspanning multiple lines\r\nusing heredoc syntax.\r\nEOD;\r\n\r\n/* 含有变量的更复杂示例 */\r\nclass foo\r\n{\r\n    var $foo;\r\n    var $bar;\r\n\r\n    function foo()\r\n    {\r\n        $this-&gt;foo = \'Foo\';\r\n        $this-&gt;bar = array(\'Bar1\', \'Bar2\', \'Bar3\');\r\n    }\r\n}\r\n\r\n$foo = new foo();\r\n$name = \'MyName\';\r\n\r\necho &lt;&lt;&lt;EOT\r\nMy name is \"$name\". I am printing some $foo-&gt;foo.\r\nNow, I am printing some {$foo-&gt;bar[1]}.\r\nThis should print a capital \'A\': \\x41\r\nEOT;\r\n?&gt;\r\n以上例程会输出：\r\n\r\nMy name is \"MyName\". I am printing some Foo.\r\nNow, I am printing some Bar2.\r\nThis should print a capital \'A\': A</pre>\r\n	<p>\r\n		<span style=\"line-height:1.5;\">1）开始标记和结束标记使用相同的字符串，通常以大写字母来写。</span> \r\n	</p>\r\n	<p style=\"vertical-align:baseline;\">\r\n		2）开始标记后不能出现空格或多余的字符。\r\n	</p>\r\n	<p style=\"vertical-align:baseline;\">\r\n		3）结束标记必须顶头写，不能有缩进和空格，且在结束标记末尾要有分号 。\r\n	</p>\r\n	<p style=\"vertical-align:baseline;\">\r\n		二、nowdoc 结构\r\n	</p>\r\n	<p class=\"para\">\r\n		就象 heredoc 结构类似于双引号字符串，Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构，但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的&nbsp;&lt;![CDATA[ ]]&gt;&nbsp;结构是用来声明大段的不用解析的文本类似，nowdoc 结构也有相同的特征。\r\n	</p>\r\n	<p class=\"para\">\r\n		一个 nowdoc 结构也用和 heredocs 结构一样的标记&nbsp;&lt;&lt;&lt;， 但是跟在后面的标识符要用单引号括起来，即&nbsp;&lt;&lt;&lt;\'EOT\'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构，尤其是结束标识符的规则。\r\n	</p>\r\n</tpl\r\n	<div>\r\n		<p>\r\n			<tpl\r\n			<div class=\"right-head\">\r\n				<eod example=\"\" of=\"\" string=\"\" spanning=\"\" multiple=\"\" lines=\"\" using=\"\" heredoc=\"\" syntax.=\"\" eod;=\"\" *=\"\" 含有变量的更复杂示例=\"\" class=\"\" foo=\"\" {=\"\" var=\"\" $foo;=\"\" $bar;=\"\" function=\"\" foo()=\"\" $this-=\"\"><eot my=\"\" name=\"\" is=\"\" \"$name\".=\"\" i=\"\" am=\"\" printing=\"\" some=\"\" $foo-=\"\">来一个手册的例子就说明一切了：</tpl\r\n				<div>\r\n						</p>\r\n						<p>\r\n							<tpl\r\n							<div class=\"right-head\">\r\n								<eod example=\"\" of=\"\" string=\"\" spanning=\"\" multiple=\"\" lines=\"\" using=\"\" heredoc=\"\" syntax.=\"\" eod;=\"\" *=\"\" 含有变量的更复杂示例=\"\" class=\"\" foo=\"\" {=\"\" var=\"\" $foo;=\"\" $bar;=\"\" function=\"\" foo()=\"\" $this-=\"\"><eot my=\"\" name=\"\" is=\"\" \"$name\".=\"\" i=\"\" am=\"\" printing=\"\" some=\"\" $foo-=\"\"></tpl\r\n								<div>\r\n										</p>\r\n<pre class=\"prettyprint lang-php\">$str = &lt;&lt;&lt;\'EOD\'\r\nExample of string\r\nspanning multiple lines\r\nusing nowdoc syntax.\r\nEOD;\r\n\r\n/* 含有变量的更复杂的示例 */\r\nclass foo\r\n{\r\n    public $foo;\r\n    public $bar;\r\n\r\n    function foo()\r\n    {\r\n        $this-&gt;foo = \'Foo\';\r\n        $this-&gt;bar = array(\'Bar1\', \'Bar2\', \'Bar3\');\r\n    }\r\n}\r\n\r\n$foo = new foo();\r\n$name = \'MyName\';\r\n\r\necho &lt;&lt;&lt;\'EOT\'\r\nMy name is \"$name\". I am printing some $foo-&gt;foo.\r\nNow, I am printing some {$foo-&gt;bar[1]}.\r\nThis should not print a capital \'A\': \\x41\r\nEOT;\r\n?&gt;\r\n以上例程会输出：\r\n\r\nMy name is \"$name\". I am printing some $foo-&gt;foo.\r\nNow, I am printing some {$foo-&gt;bar[1]}.\r\nThis should not print a capital \'A\': \\x41</pre>\r\n										<p>\r\n											<br />\r\n										</p>\r\n<tpl\r\n										<div class=\"right-head\">\r\n											<eod example=\"\" of=\"\" string=\"\" spanning=\"\" multiple=\"\" lines=\"\" using=\"\" heredoc=\"\" syntax.=\"\" eod;=\"\" *=\"\" 含有变量的更复杂示例=\"\" class=\"\" foo=\"\" {=\"\" var=\"\" $foo;=\"\" $bar;=\"\" function=\"\" foo()=\"\" $this-=\"\"><eot my=\"\" name=\"\" is=\"\" \"$name\".=\"\" i=\"\" am=\"\" printing=\"\" some=\"\" $foo-=\"\">\r\n											<p>\r\n												三、heredoc和nowdoc 区别\r\n											</p>\r\n											<p>\r\n												&nbsp; &nbsp;1）&nbsp;heredoc使用 &lt;&lt;&lt; EOT 的标示符，而nowdoc使用 &lt;&lt;&lt; \'EOT\' 这样的标示符<br />\r\n&nbsp; &nbsp;2）heredoc是动态的 nowdoc是静态的\r\n											</p>\r\n</tpl\r\n											<div>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(795,'error_reporting错误级别变量对照','error_reporting错误级别变量对照',1471072487,1480158621,'<p>\r\n	在PHP中所有的报错信息可以用error_reporting()这个函数来设置：\r\n</p>\r\n<p>\r\n	1. 手册上的DEMO\r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\n// 关闭所有PHP错误报告\r\nerror_reporting(0);\r\n\r\n// Report simple running errors\r\nerror_reporting(E_ERROR | E_WARNING | E_PARSE);\r\n\r\n// 报告 E_NOTICE也挺好 (报告未初始化的变量\r\n// 或者捕获变量名的错误拼写)\r\nerror_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);\r\n\r\n// 除了 E_NOTICE，报告其他所有错误\r\n// 这是在 php.ini 里的默认设置\r\nerror_reporting(E_ALL ^ E_NOTICE);\r\n\r\n// 报告所有 PHP 错误 (参见 changelog)\r\nerror_reporting(E_ALL);\r\n\r\n// 报告所有 PHP 错误\r\nerror_reporting(-1);\r\n\r\n// 和 error_reporting(E_ALL); 一样\r\nini_set(\'error_reporting\', E_ALL);\r\n\r\n?&gt;</pre>\r\n其中，该函数的参数有两种方式，字符串和数字，这两者其中必有某种联系，经过在网上的搜索终于找到了：\r\n<pre class=\"prettyprint lang-php\">error_reporting( 7 ) \r\n= error_reporting( 1+2+4)\r\n= error_reporting(E_ERROR | E_WARING | E_PARSE)\r\n</pre>\r\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\" style=\"border:1px solid #CCCCCC;text-align:center;\">\r\n	<tbody>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				数字\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				常量\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				说明\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				1\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_ERROR\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				致命错误，脚本执行中断，就是脚本中有不可识别的东西出现&nbsp;<br />\r\n举例： Error：Invalid parameters. Invalid parameter name\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				2\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_WARNING\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				部分代码出错，但不影响整体运行&nbsp;<br />\r\n举例： Warning: require_once(E:/include/config_base.php)\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				4\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_PARSE&nbsp;\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				字符、变量或结束的地方写规范有误<br />\r\n举例：&nbsp;&nbsp;Parse error: syntax error, unexpected $end in\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				8&nbsp;\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				&nbsp;E_NOTICE\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				一般通知，如变量未定义等<br />\r\n举例：&nbsp;&nbsp;Notice: Undefined variable: p in E:\\web\\index.php on line 17\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				16&nbsp;\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_CORE_ERROR\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				PHP进程在启动时，发生了致命性错误&nbsp;<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				32&nbsp;\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_CORE_WARNING\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				在PHP启动时警告(非致命性错误)<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				64\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_COMPILE_ERROR\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				编译时致命性错误<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				128\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_COMPILE_WARNING\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				编译时警告级错误<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				256\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_USER_ERROR&nbsp;\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				用户自定义的错误消息<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				512\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_USER_WARNING\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				用户自定义的警告消息<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				1024\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_USER_NOTICE&nbsp;\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				用户自定义的提醒消息<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				2047\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_ALL\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				以上所有的报错信息，但不包括E_STRICT的报错信息<br />\r\n<br />\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				2048\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				E_STRICT\r\n			</td>\r\n			<td style=\"border:1px solid #CCCCCC;\">\r\n				编码标准化警告，允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。\r\n			</td>\r\n		</tr>\r\n	</tbody>\r\n</table>\r\n<p>\r\n	error_reporting 变量的默认值是&nbsp; E_ALL &amp; ~E_NOTICE\r\n</p>\r\n<p>\r\n	开发时，最佳的值为： E_ALL | E_STRICT\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">如果设置为：error_reporting(E_ALL | E_STRICT)，则表示记录所有的错误信息。</span> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(798,'PHP不用第三变量交换2个变量的值的解决方法','php不用第三变量交换2个变量的值的解决方法',1471077631,1480158621,'<pre class=\"prettyprint lang-php\">之前面试遇到过这样一个问题：\r\n\r\n $a = 1;\r\n $b = 2;\r\n 要求不能使用第三变量，实现交换$a=1,$b=2的值。\r\n\r\n我拉个去，当时一脸懵逼，后来仔细想想也挺简单！于是整理方法如下：\r\n\r\n&lt;?php\r\n/**\r\n * Created by PhpStorm.\r\n * User: hao\r\n * Date: 2016-08-13\r\n * Time: 15:48\r\n */\r\n$a=1;\r\n$b=2;\r\n$a.=$b;\r\n//substr() 函数返回字符串的一部分\r\n$b=substr($a,0,(strlen($a)-strlen($b)));\r\n$a=substr($a, strlen($b));\r\necho \'a:\'.$a.\',b:\'.$b.\'&lt;br /&gt;\';\r\necho \'-----------------------&lt;br/&gt;\';\r\n\r\n$a=3;\r\n$b=5;\r\n//list() 函数用于在一次操作中给一组变量赋值。\r\nlist($b,$a)=array($a,$b);\r\necho \'a:\'.$a.\',b:\'.$b.\'&lt;br /&gt;\';\r\necho \'-----------------------&lt;br/&gt;\';\r\n\r\n//只适用于数字\r\n$a=3;\r\n$b=5;\r\n$a=$a+$b;\r\n$b=$a-$b;\r\n$a=$a-$b;\r\necho \'exchange_after:   $a:\'.$a.\',$b:\'.$b.\'&lt;br /&gt;\';\r\n</pre>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(994,'Hexo+github绑定域名(主或二级)','994',1480396320,1480396495,'<!--markdown-->\r\n 你申请的Github Page的域名是`username`.github.io ,是一个二级域名。\r\n> 那么，我要想用自己买的域名，或者自己的二级域名，去访问Github Page呢？\r\n\r\n> 要绑定域名到，你申请的Github Pages上\r\n\r\n\r\n###  下面记录操作步骤：\r\n\r\n#### 域名解析设置:\r\n\r\n-  前提你必须有自己的域名，而且是通过备案的域名哦\r\n-  因为我是在阿里云`万网`购买的域名，而且我的主域名 `www.hsblogs.com` 是我的主博客地址，所以只能新建个子域名  `github.hsblogs.com` 来测试啦，\r\n-  进入域名管理控制台、域名解析设置，添加解析，如图\r\n- 添加解析需要设置：\r\n![2.png][1]\r\n>1. 记录类型：\r\n要将域名指向主机服务商提供的IP地址，请选择「A记录」；要将域名指向主机服务商提供的另一个域名，请选择「CNAME记录」。\r\n\r\n>2. 主机记录：\r\n二级域名 ：\r\n如：mail.example.com或abc.example.com，填写mail或abc；\r\n\r\n> 3. 解析线路：一般默认\r\n\r\n> 4. 记录值：\r\nA记录：\r\n将域名指向一个IPv4地址（例如：10.10.10.10），需要增加A记录\r\nCNAME记录：\r\n如果将域名指向一个域名，实现与被指向域名相同的访问效果，需要增加CNAME记录\r\n\r\n综上所述，\r\n- 你要是选择`「A记录」`，那么 `记录值` 你需要填写`github pages` 的IP地址，通过`ping`获取IP地址：\r\n\r\n得到IP地址 `151.101.100.133`,将   ip地址填入`记录值`，保存。\r\n\r\n- 你要是选择 `「CNAME记录」` ，那么 `记录值` 你需要填写你的`github pages` 的域名，也就是 `username`.github.io ，保存\r\n- 域名解析设置完了\r\n\r\n#### Hexo设置\r\n在 `haoshuai6.github.io / source` 目录下，新建名为 `CNAME` 的文件，`注意没有任何后缀`，打开文件编辑内容为你刚才新加解析的域名，`注意没有http://`，形如`github.hsblogs.com` 这样，保存。\r\n\r\n>设置完毕，`hexo`重新生成、部署到github即可！\r\n\r\n等待几分钟，访问你刚申请的域名`github.hsblogs.com`即可跳转到`username`.github.io\r\n\r\n\r\n  [1]: http://127.0.0.1/hs-typecho/usr/uploads/2016/11/391030380.png',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(820,'初学Git之(常用的git命令)','初学git之常用的git命令',1471253718,1480158621,'<p>\r\n	版本控制，svn和git，平时一直都在用svn，还算熟悉，今天搞了搞git，基本算是入门\r\n</p>\r\n<p>\r\n	利用github远程库来学习操作的：\r\n</p>\r\n<pre class=\"prettyprint lang-php\">初始化一个Git仓库，使用git init命令。\r\n\r\n添加文件到Git仓库，分两步：\r\n\r\n第一步，使用命令git add &lt;file&gt;，注意，可反复多次使用，添加多个文件；\r\n\r\n第二步，使用命令git commit -m \"提交注释\"，完成。\r\n\r\n$ git add readme.txt\r\n$ git commit -m \"add readme\"\r\n========================================================================\r\nGit每当你觉得文件修改到一定程度的时候，就可以“保存一个快照”，这个快照在Git中被称为commit。一旦你把文件改乱了，或者误删了文件，还可以从最近的一个commit恢复，然后\r\n\r\n继续工作，而不是把几个月的工作成果全部丢失\r\n----------------------------------------------\r\nHEAD指向的版本就是当前版本，因此，Git允许我们在版本的历史之间穿梭，使用命令git reset --hard commit_id。\r\n\r\n穿梭前，用git log可以查看提交历史，以便确定要回退到哪个版本。\r\n\r\n要重返未来，用git reflog查看命令历史，以便确定要回到未来的哪个版本。\r\n========================================================================\r\nGit鼓励大量使用分支：\r\n\r\n查看分支：git branch\r\n\r\n创建分支：git branch &lt;name&gt;\r\n\r\n切换分支：git checkout &lt;name&gt;\r\n\r\n创建+切换分支：git checkout -b &lt;name&gt;\r\n    \r\n    $ git branch dev\r\n    $ git checkout dev\r\n      Switched to branch \'dev\'\r\n\r\n合并某分支到当前分支：git merge &lt;name&gt;\r\n\r\n删除分支：git branch -d &lt;name&gt;\r\n======================================================================\r\n当Git无法自动合并分支时，就必须首先解决冲突。解决冲突后，再提交，合并完成。\r\n\r\n用git log --graph命令可以看到分支合并图。\r\n=====================================================================\r\ngit diff顾名思义就是查看difference，显示的格式正是Unix通用的diff格式\r\n=====================================================================\r\n修复bug时，我们会通过创建新的bug分支进行修复，然后合并，最后删除；\r\n\r\n当手头工作没有完成时，先把工作现场git stash一下，然后去修复bug，修复后，再git stash pop，回到工作现场。\r\n=====================================================================\r\n推送到远程库\r\n git push origin master\r\n推送分支到远程库\r\n git push origin dev\r\n</pre>\r\n注：git教程: <a href=\" http://dwz.cn/learngit\" target=\"_blank\" >史上最浅显易懂的Git教程！[廖雪峰git教程]</a>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(823,'Git clone错误','git-clone错误',1471254972,1480158621,'<p>\r\n	错误信息：\r\n</p>\r\n<p>\r\n	warning: You appear to have cloned an empty repository.\r\n</p>\r\n<p>\r\n	或者\r\n</p>\r\n<p>\r\n	fatal: destination path \'.\' already exists and is not an empty directory.\r\n</p>\r\n<p>\r\n	解决方法：\r\n</p>\r\n<pre class=\"prettyprint lang-php\">ls -a  \r\nrm .git/ -rf  </pre>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(830,'搭建自己的Git服务器','在centos下搭建自己的git服务器',1471335059,1480158621,'<p>\r\n	众所周知，github是一个免费托管开源代码的远程仓库，那么要想自己搭建一台Git服务器作为私有仓库使用，要怎么操作呢？\r\n</p>\r\n<p>\r\n	搭建环境：centos 6.4&nbsp;\r\n</p>\r\n<p>\r\n	1.在线安装git &nbsp; &nbsp; &nbsp;<span style=\"color:#E53333;\">yum -y install git&nbsp;</span> \r\n</p>\r\n<p>\r\n	2.查看版本，安装成功 &nbsp; <span style=\"color:#E53333;\">git &nbsp;- - version&nbsp;</span> \r\n</p>\r\n<p>\r\n	3.添加git用户 <span style=\"color:#E53333;\">&nbsp;</span><span style=\"color:#E53333;\"> adduser git&nbsp;</span> \r\n</p>\r\n<p>\r\n	4.初始化git仓库 <span style=\"color:#E56600;\">/data/git/ [可以任意选择目录]来当做一个git仓库&nbsp;</span> \r\n</p>\r\n<p>\r\n	执行git初始化命令 ，会创建一个裸仓库，裸仓库没有工作区\r\n</p>\r\n<pre class=\"prettyprint lang-bsh\">[root@localhost git]# git init --bare gitdemo.git \r\nInitialized empty Git repository in /data/git/gitdemo.git/\r\n并修改gitdemo.git 所属：\r\nchown git:git gitdemo.git</pre>\r\n<p>\r\n	5. 到这里基本完成，你可以去本地客户端 <span style=\"color:#E53333;\">clone </span> 试一试\r\n</p>\r\n<pre class=\"prettyprint lang-bsh\">$ git clone git@192.168.1.2:/data/git/gitdemo.git\r\n查看是否可以克隆下来\r\n很有可能出现的问题：提示你输入密码：\r\n$ git@192.168.1.2\'s password:\r\n擦，密码？简直是一脸懵逼！，没关系，可以通过SSH的公钥来完成验证！</pre>\r\n<p>\r\n	6. 如果你之前生成过 SSH公钥，这里要<span style=\"color:#E53333;\">重新在客户端用命令生成一遍</span>，【要不然搞到天黑都提示输入密码！真是坑啊！！！】<span style=\"line-height:1.5;\">也就是无论你有没有生成过ssh公钥，都得去生成一遍！！！【切记！】</span> \r\n</p>\r\n<p>\r\n	1） 创建SSH Key\r\n</p>\r\n<pre class=\"prettyprint lang-pl\">$ ssh-keygen -t rsa -C \"youremail@example.com\"</pre>\r\n<p>\r\n	把邮件地址换成你自己的邮件地址，然后一路回车，使用默认值即可，由于这个Key也不是用于军事目的，所以也无需设置密码。\r\n</p>\r\n<p>\r\n	如果一切顺利的话，可以在用户主目录里找到.ssh目录，里面有id_rsa和id_rsa.pub两个文件，这两个就是SSH Key的秘钥对，id_rsa是私钥，不能泄露出去，id_rsa.pub就是要找的公钥啦！\r\n</p>\r\n<p>\r\n	7. 最容易漏掉，非常重要的一步，开启【<span style=\"color:#E53333;\">Git服务器打开RSA认证</span>】\r\n</p>\r\n<p>\r\n	在Git服务器上添加你的公钥用来验证你的信息。故必须要开启【Git服务器RSA认证】 将/etc/ssh/sshd_config中将RSA认证打开，\r\n</p>\r\n<p>\r\n	在服务器上找到【/etc/ssh/sshd_config】    vim 编辑模式，将这三项前面的#去掉即可\r\n</p>\r\n<pre class=\"prettyprint lang-pl\">RSAAuthentication yes \r\nPubkeyAuthentication yes \r\nAuthorizedKeysFile .ssh/authorized_keys</pre>\r\n<p>\r\n	8. 万事俱备只欠东风啦，\r\n	公钥要存放在.ssh/authorized_keys文件中。所以我们要在/home/git下创建.ssh目录，然后创建authorized_keys文件，并将刚生成的公钥导入进去。\r\n注意权限问题：\r\n</p>\r\n<pre class=\"prettyprint lang-pl\">将/home/git  所属全部改为git\r\n# chown git:git  -R  git/\r\n# chmod 700 .ssh\r\n# chmod 600 .ssh/authorized_keys</pre>\r\n<p>\r\n	<br />\r\n</p>\r\n9. 禁用git用户的shell登陆\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-pl\">git:x:503:503::/home/git:/bin/bash\r\n改为：\r\ngit:x:503:503::/home/git:/sbin/nologin\r\n或：\r\ngit:x:503:503::/home/git:/usr/bin/git-shell</pre>\r\n注：CSDN博客：<a href=\"http://blog.csdn.net/wave_1102/article/details/47779401\" target=\"_blank\">在CentOS下搭建自己的Git服务器</a>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(842,'windows使用git时出现：warning: LF will be replaced by CRLF','warning-lf-will-be-replaced-by-crlf',1471341435,1480158621,'<p>\r\n	CRLF -- Carriage-Return&nbsp;Line-Feed 回车换行,&nbsp;windows 中的换行符为 CRLF， 而在linux下的换行符为LF，在执行add . 时出现提示warning: LF will be replaced by CRLF，解决办法:\r\n</p>\r\n<p>\r\n	在命令行界面定位到当前目录，执行以下命令：\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-pl\">$ rm -rf .git  // 删除.git  \r\n$ git config --global core.autocrlf false  //禁用自动转换  </pre>\r\n然后重新init一遍就可以了！\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-pl\">$ git init \r\n/* 下面就可以正常操作了 */</pre>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(845,'HTTP常用响应状态信息','http常用响应状态信息',1471396904,1480158621,'<p>\r\n	http发送请求后，等待服务器段的响应信息，一般有几种响应状态码：\r\n</p>\r\n<p>\r\n<pre class=\"prettyprint lang-py\">状态代码有三位数字组成，第一个数字定义了响应的类别：\r\n1xx：服务器接收请求，继续处理\r\n2xx：成功--表示请求已被成功接收、理解\r\n3xx：重定向--要完成请求必须进行更进一步的操作，302重定向，304没有修改\r\n4xx：客户端错误--请求有语法错误或请求无法实现\r\n5xx：服务器端错误--服务器未能实现合法的请求\r\n常见状态代码：\r\n200 OK      //客户端请求成功\r\n400 Bad Request  //客户端请求有语法错误，不能被服务器所理解\r\n401 Unauthorized //请求未经授权，这个状态代码必须和WWW-Authenticate报头域一起使用 \r\n403 Forbidden  //服务器收到请求，但是拒绝提供服务\r\n404 Not Found  //请求资源不存在，eg：输入了错误的URL，找不到相应的资源文件。\r\n500 Internal Server Error //服务器发生不可预期的错误 eg：服务端文件有错误（语法）\r\n503 Server Unavailable  //服务器当前不能处理客户端的请求，一段时间后可能恢复正常，eg：请求量过大超出服务器负载。</pre>\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(850,'git在push报错error: insufficient permission for adding an object to repository database','git在push报错error-insufficient-permission-for-adding-an-object-to-repository-database',1471399672,1480158621,'<p>\r\n	git在push报错error: insufficient permission for adding an object to repository database&nbsp;\r\n</p>\r\n<p>\r\n	即git提交到远端库，但是git库权限的不足，到服务器git库目录查看权限,\r\n</p>\r\n<p>\r\n<pre class=\"prettyprint lang-bsh\">$ ll -a    查看git库的所有者\r\n解决：\r\n在git库目录下：\r\n$ chown -R git:git  /deomo.git </pre>\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(854,'Git推送到服务器后自动同步到站点目录www','git推送到服务器后自动同步到站点目录www',1471401052,1480158621,'<p>\r\n	自己搭建的Git服务器私有库，测试完毕，可以正常使用！[<a href=\"http://www.hsblogs.com/?p=830\" target=\"_blank\">如何搭建自己的Git服务器</a>]\r\n</p>\r\n<p>\r\n	既然可以正常clone、add、commit、push到远程git服务器，那么成功了，也不能及时看到效果。故想到，\r\n</p>\r\n<p>\r\n	Git和SVN应该都有<span style=\"color:#E53333;\">【钩子】hooks机制</span>，[<a href=\"http://www.hsblogs.com/?p=81\" target=\"_blank\">svn如何实现版本库文件和web目录实时同步</a> ]，来利用shell 脚本去自动同步，将提交到版本库的文件自动同步到www目录指定的文件夹下，\r\n</p>\r\n<p>\r\n	从而，可以实现，实时提交，实时查看效果！\r\n</p>\r\n<p>\r\n	具体步骤：\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-php\">1、已经搭建好git远端服务器，可以正常使用的前提下\r\n2、在web目录下，新建一个gitdemo目录\r\n     $ mkdir  /www/gitdemo\r\n3、找到在创建git服务器时候，你自己设置的仓库：/data/git/gitdemo.git \r\n4、设置钩子\r\n     cd hooks\r\n     vim post-receive 编辑模式输入：\r\n\r\n     #!/bin/bash\r\n     git --work-tree=/home/www/gitdemo  checkout -f\r\n5、保存退出后，将该文件用户及用户组都设置成git\r\n     chown git:git post-receive\r\n6、给这个shell文件可执行权限\r\n     chmod +x post-receive\r\n   钩子已经设置完毕！\r\n</pre>\r\n去git客户端进行测试，push成功后，但是在<span style=\"color:#E53333;\">/www/gitdemo/</span>目录下没有发现你推送的文件，那么就是由于文件夹的权限的原因造成的！\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	假设你的web目录www的所属组是root（www）<br />\r\n1）你可以将你的git用户加入这个组，并给git添加写入权限。<br />\r\n2）你还可以直接将这个文件的所属改为git，<span style=\"color:#E53333;\">chown git:git /www/gitdemo/&nbsp;</span> \r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(867,'for循环的坑','for循环的坑',1471405356,1480158621,'<p>\r\n	php在for循环中，不要在判断条件中使用count($arr),\r\n</p>\r\n<p>\r\n	来一个php手册的例子：\r\n</p>\r\n<p>\r\n<pre class=\"prettyprint lang-php\">有时经常需要像下面这样例子一样对数组进行遍历：\r\n\r\n&lt;?php\r\n/*\r\n * 此数组将在遍历的过程中改变其中某些单元的值\r\n */\r\n$people = Array(\r\n        Array(\'name\' =&gt; \'Kalle\', \'salt\' =&gt; 856412), \r\n        Array(\'name\' =&gt; \'Pierre\', \'salt\' =&gt; 215863)\r\n        );\r\n\r\nfor($i = 0; $i &lt; count($people); ++$i)\r\n{\r\n    $people[$i][\'salt\'] = rand(000000, 999999);\r\n}\r\n?&gt;\r\n以上代码可能执行很慢，因为每次循环时都要计算一遍数组的长度。由于数组的长度始终不变，可以用一个中间变量来储存数组长度以优化而不是不停调用 count()：\r\n\r\n&lt;?php\r\n$people = Array(\r\n        Array(\'name\' =&gt; \'Kalle\', \'salt\' =&gt; 856412), \r\n        Array(\'name\' =&gt; \'Pierre\', \'salt\' =&gt; 215863)\r\n        );\r\n\r\nfor($i = 0, $size = count($people); $i &lt; $size; ++$i)\r\n{\r\n    $people[$i][\'salt\'] = rand(000000, 999999);\r\n}\r\n?&gt;</pre>\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(869,'count(\'abc\')返回什么？','countabc返回什么',1471406385,1480158621,'<p>\r\n	count函数一般都是用来取得一个数组的长度，那么count(\'abc\')返回什么呢？，先来看看count函数的定义，php书册是这样定义count的：\r\n</p>\r\n<p>\r\n	1、定义：\r\n</p>\r\n<p>\r\n	<strong><span style=\"color:#006600;background-color:#999999;\">count</span></strong><strong><span style=\"color:#006600;background-color:#999999;\">&nbsp;—&nbsp;</span></strong><strong><span style=\"color:#006600;background-color:#999999;\">计算数组中的单元数目或对象中的属性个数</span></strong><strong><span style=\"color:#006600;background-color:#999999;\"></span></strong> \r\n</p>\r\n<p>\r\n	2、参数：count 有两个参数&nbsp;\r\n</p>\r\n<pre class=\"prettyprint lang-php\">int count ( mixed $var [, int $mode = COUNT_NORMAL ] )\r\n\r\nvar  数组或者对象。\r\nmode 如果可选的 mode 参数设为 COUNT_RECURSIVE（或 1），<span style=\"font-size:13.2px;line-height:1.5;\">count() 将递归地对数组计数。\r\n     对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count() 识别不了无限递归。</span><span style=\"font-size:13.2px;line-height:1.5;\"><span style=\"font-size:12px;line-height:18px;\"> </span></span></pre>\r\n<p>\r\n	3、返回值\r\n</p>\r\n<pre class=\"prettyprint lang-php\">返回 var 中的单元数目。 如果 var 不是数组类型或者实现了 Countable 接口的对象，将返回 1，有一个例外，如果 var 是 NULL 则结果是 0。</pre>\r\n故，所以&nbsp;count(\'abc\')返回什么？ 返回 1 ;\r\n<p>\r\n	来自手册中的例子，一看明了：\r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\n$a[0] = 1;\r\n$a[1] = 3;\r\n$a[2] = 5;\r\n$result = count($a);\r\n// $result == 3\r\n\r\n$b[0]  = 7;\r\n$b[5]  = 9;\r\n$b[10] = 11;\r\n$result = count($b);\r\n// $result == 3\r\n\r\n$result = count(null);\r\n//此时是返回0\r\n\r\n$result = count(false);\r\n// $result == 1\r\n\r\n$result = count(\'abc\');\r\n// 返回的是1\r\n?&gt;</pre>\r\n<p>\r\n	注：\r\n</p>\r\n<p>\r\n<pre class=\"prettyprint lang-php\">strlen() - 获取字符串长度\r\nis_array() - 检测变量是否是数组\r\nisset() - 检测变量是否设置 </pre>\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(874,'PHP file_put_contents() 函数','php-file_put_contents-函数',1471483279,1480158621,'<h4>\r\n	定义和用法\r\n</h4>\r\n<p>\r\n	file_put_contents() 函数把一个字符串写入文件中。\r\n</p>\r\n<p>\r\n	与依次调用 fopen()，fwrite() 以及 fclose() 功能一样。\r\n</p>\r\n<h4>\r\n	语法\r\n</h4>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-php\">file_put_contents(file,data,mode,context)</pre>\r\n<p>\r\n	<br />\r\n</p>\r\n<table>\r\n	<tbody>\r\n		<tr>\r\n			<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n				参数\r\n			</th>\r\n			<th style=\"border:1px solid #AAAAAA;vertical-align:baseline;\">\r\n				描述\r\n			</th>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				file\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				必需。规定要写入数据的文件。如果文件不存在，则创建一个新文件。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				data\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				可选。规定要写入文件的数据。可以是字符串、数组或数据流。\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				mode\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				可选。规定如何打开/写入文件。可能的值：\r\n					FILE_USE_INCLUDE_PATH 【<span style=\"color:#E53333;\">在 include 目录里搜索filename</span>】\r\n                                        FILE_APPEND &nbsp;【<span style=\"color:#E53333;\">可以实现追加数据而不是覆盖</span>】\r\n					LOCK_EX 【<span style=\"color:#E53333;\">在写入时获得一个独占锁</span>】\r\n			</td>\r\n		</tr>\r\n		<tr>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				context\r\n			</td>\r\n			<td style=\"border:1px solid #AAAAAA;vertical-align:text-top;\">\r\n				可选。规定文件句柄的环境。\r\n					context 是一套可以修改流的行为的选项。若使用 null，则忽略。\r\n			</td>\r\n		</tr>\r\n	</tbody>\r\n</table>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(885,'了解CGI、FastCGI、PHP-CGI与PHP-FPM','了解cgi-fastcgi-php-cgi与php-fpm',1471492753,1480158621,'<p>\r\n	一次在本地开发环境遇到这样一个问题：apache废掉了，然后重新编译安装apache，需要配置FastCGI？php-fpm？apche+php-fpm？nginx+php-fpm？\r\n</p>\r\n<p>\r\n	我去，这些是什么东东？于是不断去查找资料，现整理下来备用：\r\n</p>\r\n<p>\r\n	一、php常用的运行模式\r\n</p>\r\n<pre class=\"prettyprint lang-bsh\">1）CGI（通用网关接口 / Common Gateway Interface）\r\n2）FastCGI（常驻型CGI / Long-Live CGI）\r\n3）CLI（命令行运行 / Command Line Interface）\r\n4）Web模块模式（apache模块的DLL运行模式）</pre>\r\n二、简单理解这几种模式\r\n<p>\r\n	1、以CGI的方式运行，CGI英文叫做公共网关接口，就是Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序（php-cgi.exe）解释，解释之后的结果返回给Apache，然后再相应请求的用户。&nbsp;\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;&nbsp;CGI方式在遇到连接请求（用户 请求）先要创建cgi的子进程，激活一个CGI进程，然后处理请求，处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程，子进程反复加载是cgi性能低下的主要 &nbsp; 原因。都会当用户请求数量非常多时，会大量挤占系统的资源如内 存，CPU时间等，造成效能低下。\r\n</p>\r\n<p>\r\n	2、以FastCGI的方式运行。这种形式是CGI的加强版本，CGI是单进程，多线程的运行方式，程序执行完成之后就会销毁，所以每次都需要加载配置和环境变量fork-and-execute（创建-执行）。而FastCGI则不同，FastCGI 像是一个常驻 (long-live) 型的 CGI，它可以一直执行着，只要激活后，不会每次都要花费时间去 fork 一次。FastCGI进程管理器自身初始化，启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接\r\n</p>\r\n<p>\r\n	3、PHP-CLI是PHP Command Line Interface的简称，如同它名字的意思，就是PHP在命令行运行的接口，区别于在Web服务器上运行的PHP环境（PHP-CGI，ISAPI等）。 也就是说，PHP不单可以写前台网页，它还可以用来写后台的程序。 PHP的CLI Shell脚本适用于所有的PHP优势，使创建要么支持脚本或系统甚至与GUI应用程序的服务端，在Windows和Linux下都是支持PHP-CLI模式的。\r\n</p>\r\n<p>\r\n	4、apache模块的DLL运行模式，就是以mod_php5模块的形式集成，此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求，并处理这些请求，然后将处理后的结果返回给Apache。\r\n</p>\r\n<p>\r\n	三、\r\n</p>\r\n<p>\r\n	<span style=\"color:#E53333;\">CGI</span><br />\r\n<span style=\"font-weight:normal;line-height:1.5;\">CGI全称是“公共网关接口”(Common Gateway Interface)，HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具，其程序须运行在网络服务器上。<br />\r\n</span><span style=\"font-weight:normal;line-height:1.5;\">CGI可以用任何一种语言编写，只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。</span> \r\n</p>\r\n<p>\r\n	<span style=\"color:#E53333;\">FastCGI</span><span style=\"font-weight:normal;line-height:1.5;\"><br />\r\nFastCGI像是一个常驻(long-live)型的CGI，它可以一直执行着，只要激活后，不会每次都要花费时间去fork一次（这是CGI最为人诟病的fork-and-execute 模式）。它还支持分布式的运算，即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。</span> \r\n</h4>\r\n<p>\r\n	<span style=\"color:#E53333;\">PHP-CGI</span><br />\r\n<span style=\"font-weight:normal;line-height:1.5;\">PHP-CGI是PHP自带的FastCGI管理器。<br />\r\n</span><span style=\"font-weight:normal;line-height:1.5;\">PHP-CGI的不足：<br />\r\n</span><span style=\"line-height:1.5;font-weight:normal;\">1）php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效，不可以平滑重启。<br />\r\n</span><span style=\"line-height:1.5;font-weight:normal;\">2）直接杀死php-cgi进程，php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题，守护进程会平滑从新生成新的子进程。）</span> \r\n</p>\r\n<p>\r\n	<span style=\"color:#E53333;\">PHP-FPM</span><br />\r\n<span style=\"font-weight:normal;line-height:1.5;\">PHP-FPM是一个PHP FastCGI管理器，是只用于PHP的，可以在 http://php-fpm.org/download下载得到。<br />\r\n</span><span style=\"line-height:1.5;font-weight:normal;\">PHP-FPM其实是PHP源代码的一个补丁，旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中，在编译安装PHP后才可以使用。<br />\r\n</span><span style=\"font-weight:normal;line-height:1.5;\">PHP5.3.3已经集成php-fpm了，不再是第三方的包了。PHP-FPM提供了更好的PHP进程管理方式，可以有效控制内存和进程、可以平滑重载PHP配置，比spawn-fcgi具有更多有点，所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。</span> \r\n</p>\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\">四、综上所诉：</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;font-weight:normal;\">FastCGI 一般的简单流程是这样的：</span> \r\n</p>\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\"> </span> \r\n</p>\r\n<pre class=\"prettyprint lang-pl\">FastCGI的工作原理\r\n\r\n1）Web Server启动时载入FastCGI进程管理器（IIS ISAPI或Apache Module)\r\n2）FastCGI进程管理器自身初始化，启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。\r\n3）当客户端请求到达Web Server时，FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。\r\n4）FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时，请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中，php-cgi在此便退出了。\r\n\r\n故：\r\nFastcgi 用来沟通程序PHP和Web服务器(Apache2, Nginx), 理论上任何语言编写的程序都可以通过Fastcgi来提供Web服务。\r\nFastcgi 的特点是会在一个进程中依次完成多个请求，以达到提高效率的目的，大多数Fastcgi实现都会维护一个进程池。\r\n而PHP-fpm 就是针对于PHP的，Fastcgi的一种实现，他负责管理一个进程池，来处理来自Web服务器的请求。目前，PHP-fpm是内置于PHP的。\r\n但是PHP-fpm仅仅是个“PHP Fastcgi 进程管理器”, 它仍会调用PHP解释器本身来处理请求，PHP解释器(在Windows下)就是php-cgi.exe.</pre>\r\n\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\">通过网上的资料，简单了解了这几种模式，不过还得继续研究，实际去配置下才更深刻！</span> \r\n</p>\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\">五、参考资料：</span> \r\n</p>\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\">1、百度百科：<a href=\"http://baike.baidu.com/view/4168033.htm\" target=\"_blank\">http://baike.baidu.com/view/4168033.htm</a></span> \r\n</p>\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\">2、segmentfault：<a href=\"https://segmentfault.com/q/1010000000256516\" target=\"_blank\">搞不清FastCgi与PHP-fpm之间是个什么样的关系</a></span> \r\n</p>\r\n<p>\r\n	<span style=\"font-weight:normal;line-height:1.5;\">3、现代简明魔法：<a href=\"http://www.nowamagic.net/librarys/veda/detail/1319/\" target=\"_blank\">概念了解：CGI，FastCGI，PHP-CGI与PHP-FPM</a></span> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(891,'jQuery Validate插件使用','jquery-validate插件使用',1471934228,1480158621,'<p>\r\n	jQuery Validate 插件为表单提供了强大的验证功能\r\n</p>\r\n<p>\r\n	其中\r\n</p>\r\n1、替代submit\r\n<pre class=\"prettyprint lang-js\"> $(\"#user_form\").validate({\r\n        submitHandler:function(form){\r\n            alert(\"这里提交!\");   \r\n            form.submit();\r\n        }    \r\n    });\r\n使用 ajax 方式\r\n $(\"#user_form\").validate({     \r\n submitHandler: function(form) \r\n   {      \r\n      $(form).ajaxSubmit();     \r\n   }  \r\n }) \r\n提交表单, 需要使用 form.submit()，而不要使用 $(form).submit()</pre>\r\n2、更改错误信息显示的位置\r\n<pre class=\"prettyprint lang-js\">errorPlacement：Callback\r\n指明错误放置的位置，默认情况是：error.appendTo(element.parent());即把错误信息放在验证的元素后面\r\nerrorPlacement: function(error, element) {  \r\n    error.appendTo(element.parent());  \r\n}</pre>\r\n3、异步验证<span>验证，eg：验证注册手机号是否重复，用户名是否可用？等</span> \r\n<pre class=\"prettyprint lang-js\">remote：URL\r\n使用ajax方式验证，默认会提交当前验证的值到远程地址，如果需要提交其他的值，可以使用 data 选项。\r\nremote: \"check_phone.php\"\r\nremote: {\r\n    url: \"check_phone.php\",     //后台处理程序\r\n    type: \"post\",               //数据发送方式\r\n    dataType: \"json\",           //接受数据格式   \r\n    data: {                     //要传递的数据\r\n        user_phone: function() {\r\n            return $(\"#user_phone\").val();\r\n        }\r\n    }\r\n}\r\n远程地址只能输出 \"true\" 或 \"false\"，不能有其他输出。</pre>\r\n4、添加自定义验证，eg，添加正则表达式，\r\n<pre class=\"prettyprint lang-js\">// 手机号码验证\r\njQuery.validator.addMethod(\"isMobile\", function(value, element) {\r\n  var length = value.length;\r\n  var mobile = /^13[0-9]{1}[0-9]{8}$|15[012356789]{1}[0-9]{8}$|14[57]{1}[0-9]{8}$|17[678]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$/;\r\n  return this.optional(element) || (length == 11 &amp;&amp; mobile.test(value));\r\n}, \"请正确填写您的手机号码\");</pre>\r\n5、来个完整的例子\r\n<pre class=\"prettyprint lang-php\"> $(\'#user_form\').validate({\r\n   submitHandler:function(form){\r\n      ajaxpost(\'user_form\', \'\', \'\', \'onerror\');\r\n    },\r\n    rules : {\r\n      password: {\r\n        maxlength: 20,\r\n        minlength: 6\r\n      },\r\n    mobile   : {\r\n       required : true,\r\n       isMobile : true,\r\n       remote   : {\r\n       url :\'&lt;?php echo urlLifeShop(\'employee_mgr\',\'ajax\',array(\'branch\'=&gt;\'check_phone\'));?&gt;\',\r\n       type:\'get\',\r\n       data:{\r\n       phone : function(){\r\n          return $(\'#mobile\').val();\r\n               }\r\n             }\r\n          }\r\n       }\r\n  },\r\n  messages : {\r\n     password : {\r\n     maxlength: \'&lt;i class=\"fa fa-exclamation-circle\"&gt;&lt;/i&gt;&lt;?php echo \'检查密码长度\';?&gt;\',\r\n     minlength: \'&lt;i class=\"fa fa-exclamation-circle\"&gt;&lt;/i&gt;&lt;?php echo \'检查密码长度\';?&gt;\'\r\n    },\r\n  mobile  : {\r\n      required : \'&lt;i class=\"fa fa-exclamation-circle\"&gt;&lt;/i&gt;&lt;?php echo \'请填写手机号\';?&gt;\',\r\n      isMobile : \'&lt;i class=\"fa fa-exclamation-circle\"&gt;&lt;/i&gt;&lt;?php echo \'手机号格式错误\';?&gt;\',\r\n      remote : \'&lt;i class=\"fa fa-exclamation-circle\"&gt;&lt;/i&gt;&lt;?php echo \'该手机号已经被注册！\';?&gt;\'\r\n           }\r\n      }\r\n});</pre>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(896,'css美化input[type=file]样式','css美化inputtypefile样式',1471937910,1480158621,'<p>\r\n	默认的input[type=file] 是不太好看的，通过css修改默认的样式\r\n</p>\r\n<pre class=\"prettyprint lang-html\">&lt;a class=\"a_pic\" href=\"javascript:void(0);\"&gt;\r\n    &lt;span&gt;&lt;em&gt;+&lt;/em&gt;添加图片&lt;/span&gt;\r\n    &lt;input class=\"file_review\" title=\"支持jpg、jpeg、gif、png格式\" name=\"pic\"&gt;\r\n&lt;/a&gt;\r\n</pre>\r\n加上css样式\r\n<pre class=\"prettyprint lang-css\">*{margin:0;padding:0;}\r\na{text-decoration:none !important;}\r\n.a_pic{\r\n    display: block;\r\n    position: relative;\r\n    width: 140px;\r\n    height: 39px;\r\n    overflow: hidden;\r\n    border: 1px solid #EBEBEB;\r\n    background: none repeat scroll 0 0 #F3F3F3;\r\n    color: #999999;\r\n    cursor: pointer;\r\n    text-align: center;\r\n}\r\n.a_pic span{display: block;line-height: 39px;}\r\n.a_pic em {\r\n    background:url(./images/add.png) 0 0;\r\n    display: inline-block;\r\n    width: 18px;\r\n    height: 18px;\r\n    overflow: hidden;\r\n    margin: 10px 5px 10px 0;\r\n    line-height: 20em;\r\n    vertical-align: middle;\r\n}\r\n.a_pic:hover em{background-position:-19px 0;}\r\n.file_review {\r\n    display: block;\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 140px;\r\n    height: 39px;\r\n    font-size: 100px; /* 增大不同浏览器的可点击区域 */\r\n    opacity: 0; /* 实现的关键点 */\r\n    filter:alpha(opacity=0);/* 兼容IE */\r\n}</pre>\r\n<hr />\r\n<p class=\"tiy\">\r\n	<a target=\"_blank\" href=\"/demo/20160823/p896/index.html\">运行实例</a> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(901,'ThinkPHP3.2.3实现路由功能的[坑]','thinkphp3-2-3实现路由功能的坑',1472109424,1480158621,'<p>\r\n	1、前情概要：tp版本3.2.3，想要实现url 路由功能，然后配合apache的htaccess文件，实现url 美化，突然问题来了，thinkphp报错【无法加载模块】\r\n</p>\r\n<p>\r\n	2、去查找手册，手册中是这样记载的:\r\n</p>\r\n<pre class=\"prettyprint lang-php\">启用路由\r\n要使用路由功能，前提是你的URL支持PATH_INFO（或者兼容URL模式也可以，采用普通URL模式的情况下不支持路由功能），并且在应用（或者模块）配置文件中开启路由：\r\n// 开启路由\r\n\'URL_ROUTER_ON\'   =&gt; true, \r\n3.2的路由功能是针对模块设置的，所以URL中的模块名不能被路由，路由定义也通常是放在模块配置文件中。 3.2.3版本开始增加全局路由定义支持，可以在项目的公共配置文件中定义路由。\r\n然后就是配置路由规则了，在模块的配置文件中使用URL_ROUTE_RULES参数进行配置，配置格式是一个数组，每个元素都代表一个路由规则，例如：\r\n\'URL_ROUTE_RULES\'=&gt;array(\r\n    \'news/:year/:month/:day\' =&gt; array(\'News/archive\', \'status=1\'),\r\n    \'news/:id\'               =&gt; \'News/read\',\r\n    \'news/read/:id\'          =&gt; \'/news/:1\',\r\n),\r\n系统会按定义的顺序依次匹配路由规则，一旦匹配到的话，就会定位到路由定义中的控制器和操作方法去执行（可以传入其他的参数），并且后面的规则不会继续匹配。</pre>\r\n其中：[3.2的路由功能是针对模块设置的，所以URL中的模块名不能被路由，路由定义也通常是放在模块配置文件中。 3.2.3版本开始增加全局路由定义支持，可以在项目的公共配置文件中定义路由]\r\n<p>\r\n	我的目录结构是这样的：\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/08/20160825145020.png\" alt=\"20160825145020\" width=\"335\" height=\"237\" class=\"alignnone size-full wp-image-902\" /> \r\n</p>\r\n<p>\r\n	要加入的路由规则：\r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\nreturn array(\r\n     \'URL_MODEL\'         =&gt;3,\r\n     \'URL_ROUTER_ON\'     =&gt; true,\r\n     //路由规则\r\n     \'URL_ROUTE_RULES\' =&gt; array(\r\n           \'/^index$/\'   =&gt;    \'Index/index\',\r\n    ),\r\n);\r\n?&gt;</pre>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	1）应用目录【app】，按照手册的意思，我将配置信息放在【Home】模块，【App/Home/Conf/config.php】中，访问&nbsp;http://127.0.0.1:8075/index.php?s=/index.html 还是报错，<span style=\"color:#E53333;\">【无法加载模块】！失败了！</span> \r\n</p>\r\n<p>\r\n	2）继续，把配置信息放在公共配置文【<span>App/Common/Conf/config.php</span>】中，<span>访问&nbsp;</span><span>http://127.0.0.1:8075/index.php?s=/index.html <span style=\"color:#E53333;\">【可以成功访问】</span></span> \r\n</p>\r\n<p>\r\n	<span>3）若一直放在全局配置文件，那么功能模块多了呢？比如，Home，User，Employee，Portal 等 ，是不是配置文件中，就得这样写呢？所以，我的第一想法还是放在<span style=\"color:#E53333;\">【模块配置文件中】</span></span> \r\n</p>\r\n<p>\r\n	<span> </span> \r\n</p>\r\n<pre class=\"prettyprint lang-php\">\'URL_ROUTE_RULES\' =&gt; array(\r\n    \'/^index$/\'   =&gt;    \'Home/Index/index\',\r\n),</pre>\r\n4）继续，在网上找相关的文章，解决办法如下：\r\n<p>\r\n	I. 将配置信息还是放到<span>【App/Home/Conf/config.php</span><span>】中，然后在<span>【</span><span>App/Common/Conf/config.php</span><span>】</span>公共配置文件中，加入</span> \r\n</p>\r\n<p>\r\n	<span><span style=\"color:#E53333;\"></span><span style=\"color:#E53333;\">\'MODULE_ALLOW_LIST\' =&gt; array (\'Home\'),</span><span style=\"color:#E53333;\">&nbsp;</span></span> \r\n</p>\r\n<p>\r\n	<span><span style=\"color:#E53333;\"><span style=\"color:#000000;\"> </span></span></span> \r\n</p>\r\n<pre class=\"prettyprint lang-php\">&lt;?php\r\nreturn array(\r\n    \'URL_MODEL\'  =&gt;3,\r\n    \'MODULE_ALLOW_LIST\'=&gt; array (\'Home\'),//还可以加入其它模块\r\n    \'DEFAULT_MODULE\' =&gt; \'Home\',//默认模块Home\r\n);</pre>\r\n<span>访问&nbsp;</span><span>http://127.0.0.1:8075/index.php?s=/index.html&nbsp;<span style=\"color:#E53333;\">【可以成功访问】</span></span><br />\r\n<p>\r\n	<br />\r\n</p>\r\n注：更多请查看手册：<a href=\"http://document.thinkphp.cn/manual_3_2.html#modules\" target=\"_blank\">ThinkPHP模块化设计</a>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(907,'复习OOP三大特性:封装、继承、多态[PHP]','复习oop三大特性封装-继承-多态php',1472192501,1480158621,'<pre class=\"prettyprint lang-php\">&lt;?php\r\n/**\r\n * Created by PhpStorm.\r\n * User: hao\r\n * Date: 2016-08-12\r\n * Time: 16:31\r\n */\r\n/*对OOP编程三大特性的理解：封装、继承、多态*/\r\nheader(\"Content-type: text/html; charset=utf-8\");\r\n/*先理解类和对象的关系*/\r\n//类，就是把一类事物共有的属性和行为提取出来，形成一个物理模型\r\n//对象就是类的一个实例\r\n//类是对象的集合（类是对象的抽象模型），对象是类的一个实例\r\n//========================================================//\r\n/*封装*/\r\n//封装，就是把客观事物封装成抽象的类，并且类可以把自己的数据和方法只让可信的类或者对象操作，\r\n//对不可信的进行信息隐藏，只有被授权的操作（方法）才能对数据进行操作。\r\n/*PHP--访问修饰符*/\r\n//既可以修饰方法也可以修饰属性（变量），方法如果没有访问修饰符则默认是public，成员属性必须指定访问修饰符.\r\n// public 表示全局，本类内部，类外部，子类都可以访问\r\n// protected 表示受保护的，只有本类或子类可以访问\r\n// private 表示私有的，只有本类内部可以访问\r\nclass People {\r\n    //成员属性\r\n    public $name ;\r\n    protected $age ;\r\n    private $salary ;\r\n    public function __construct($name = \"public\",$age = \"protected\",$salary = \"private\")\r\n    {\r\n        $this-&gt;name = $name;\r\n        $this-&gt;age = $age;\r\n        $this-&gt;salary = $salary;\r\n    }\r\n    public function showme(){\r\n        //访问者三个属性, 在本类内部所有都可以访问\r\n        echo  $this-&gt;name. $this-&gt;age . $this-&gt;salary;\r\n    }\r\n    //定义setAge和getAge方法\r\n    public function setAge($age_val){\r\n        $this-&gt;age =  $age_val;\r\n    }\r\n    public function getAge(){\r\n        return $this-&gt;age;\r\n    }\r\n\r\n}\r\n$hao = new People(\'hao\',22,3000);\r\necho $hao-&gt;showme();//调用内部方法可以正确输出\r\n//echo $hao-&gt;age;//直接访问hao的age属性，没有权限，报错\r\n//Fatal error: Cannot access protected property people::$age in\r\n/*可以通过内部public函数来操作protected和private属性*/\r\n$hao-&gt;setAge(\'25\');\r\necho $hao-&gt;getAge();\r\n//========================================================//\r\n/*继承*/\r\n//通过\"继承\"一个现有的类，可以使用已经定义的类中的方法和属性(不能继承父类的私有属性和私有方法)\r\n//继承而产生的类叫做子类。被继承的类，叫做父类，也被成为超类。\r\n//PHP是单继承的，一个类只可以继承一个父类，但一个父类却可以被多个子类所继承。\r\n//子类不能继承父类的私有属性和私有方法。在PHP5中类的方法可以被继承，类的构造函数也能被继承。\r\n//实现代码的简洁，可维护性，重用性！\r\nclass Animal{\r\n    public $name;\r\n    protected $age;\r\n    private $weight;\r\n    public function getWeight()\r\n    {\r\n        return $this-&gt;weight;\r\n    }\r\n    public function setWeight($weight)\r\n    {\r\n        $this-&gt;weight = $weight;\r\n    }\r\n    public function getage()\r\n    {\r\n        return $this-&gt;age;\r\n    }\r\n    public function setAge($age)\r\n    {\r\n        $this-&gt;age = $age;\r\n    }\r\n    public function showanimal(){\r\n        echo $this-&gt;name.$this-&gt;age.$this-&gt;weight;\r\n    }\r\n}\r\n//Dog继承Animal\r\nclass Dog extends  Animal{\r\n    //Dog的方法\r\n    public function lovefood(){\r\n        echo \"骨头\";\r\n    }\r\n}\r\n//实例化Dog\r\n$xiaohei = new Dog();\r\n$xiaohei-&gt;name = \'黑贝\';\r\n$xiaohei-&gt;setAge(\'3岁\');//直接调用父类的方法\r\n$xiaohei-&gt;setWeight(\'10kg\');//直接调用父类的方法\r\n$xiaohei-&gt;showanimal();\r\n$xiaohei-&gt;lovefood();\r\n//---------------------------------------------------------//\r\n/*构造函数的继承*/\r\n//PHP的构造函数继承必须满足以下条件：\r\n//1.当父类有构造函数的声明时，子类也必须有声明，否则会出错。\r\n//2.在执行父类的构造函数时，必须在子类中引用parent关键字。\r\necho \"&lt;br /&gt;\";\r\nclass Parent_class{\r\n    public function __construct($name)\r\n    {\r\n        echo \'父辈\'.$name.\'!!!!\';\r\n    }\r\n}\r\n\r\nclass Boy extends Parent_class {\r\n    public function __construct($name)\r\n    {\r\n        parent::__construct($name);\r\n        echo \'this is Boy\';\r\n    }\r\n}\r\n$wang = new Boy(\"这里\");\r\necho \"&lt;br /&gt;\";\r\n//在子类中父类的构造函数会不会执行，分两种情况：\r\n//1，如子类不定义构造函数 __construct()，则父类的构造函数默认会被继承下来，且会自动执行。\r\n//2，如子类定义了构造函数 __construct()，因为构造函数名也是__construct()，所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。\r\n//   这时如果要在子类里执行父类的构造函数，必须执行类似以下语句：\r\n//   parent::__construct();\r\n//========================================================//\r\n/*多态*/\r\n//\"多种状态\"在面向对象语言中，接口的多种不同的实现方式即为多态\r\n//重载是类的多态的一种实现\r\n//PHP手册Note:\r\n//PHP中的\"重载\"与其它绝大多数面向对象语言不同。\r\n//传统的\"重载\"是用于提供多个同名的类方法，但各方法的参数类型和个数不同。\r\n// 摘自网上的例子：【示例】例举了采用多态的方式改写上例。其代码如下所示。代码如下:\r\ninterface Animal {\r\n&nbsp; &nbsp; public function run();\r\n}\r\nclass Dog implements Animal {\r\n&nbsp; &nbsp; public function run() {\r\n&nbsp; &nbsp; &nbsp; &nbsp; echo \'dog run\';\r\n&nbsp; &nbsp; }\r\n}\r\nclass &nbsp;Cat implements Animal{\r\n&nbsp; &nbsp; public function run() {\r\n&nbsp; &nbsp; &nbsp; &nbsp; echo \'cat run\';\r\n&nbsp; &nbsp; }\r\n}\r\nclass Context {\r\n&nbsp; &nbsp; private $_animal;\r\n&nbsp; &nbsp; public function __construct(Animal $animal) {\r\n&nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;_animal = $animal;\r\n&nbsp; &nbsp; }\r\n&nbsp; &nbsp; public function run() {\r\n&nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;_animal-&gt;run();\r\n&nbsp; &nbsp; }\r\n}\r\n$dog = new Dog();\r\n$context = new Context($dog);\r\n$context-&gt;run(); // dog run\r\n\r\n$cat = new Cat();\r\n$context = new Context($cat);\r\n$context-&gt;run();//cat run \r\n// 对于不同的动物，其跑的方式不一样， \r\n//当在环境中跑的时候，根据所传递进来的动物执行相对应的跑操作。 \r\nclass employee{ //定义员工父类\r\n    protected function working(){ //定义员工工作，需要在子类的实现\r\n        echo \"本方法需要在子类中重载!\";\r\n    }\r\n}\r\nclass painter extends employee{ //定义油漆工类\r\n    public function working(){ //实现继承的工作方法\r\n        echo \"油漆工正在刷漆！&lt;br /&gt;\";\r\n    }\r\n}\r\nclass typist extends employee{ //定义打字员类\r\n    public function working(){\r\n        echo \"打字员正在打字！&lt;br /&gt;\";\r\n    }\r\n}\r\nclass manager extends employee{ //定义经理类\r\n    public function working(){\r\n        echo \"经理正在开会！&lt;br /&gt;\";\r\n    }\r\n}\r\nfunction printworking($obj){ //定义处理方法\r\n    if($obj instanceof employee){ //若是员工对象，则显示其工作状态\r\n        $obj-&gt;working();\r\n    }else{ //否则显示错误信息\r\n        echo \"Error: 对象错误！\";\r\n    }\r\n}\r\nprintworking(new painter());//显示油漆工的工作\r\nprintworking(new typist());//显示打字员的工作\r\nprintworking(new manager());//显示经理的工作 <span><span style=\"font-size:12px;line-height:18px;\"> </span></span></pre>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(910,'日常笔记note','日常笔记note',1473383622,1480158621,'<p>\r\n	日常笔记note整理积累：\r\n</p>\r\n<pre class=\"prettyprint lang-js\"> // icheck 引入文件\r\n&lt;link rel=\"stylesheet\" type=\"text/css\" href=\"__PUBLIC__/lib/icheck/skins/flat/green.css\" /&gt;\r\n&lt;script type=\"text/javascript\" src=\"__PUBLIC__/lib/icheck/icheck.min.js\"&gt;&lt;/script&gt;\r\n// 初始化\r\n$(\'input\').iCheck({\r\n        checkboxClass: \'icheckbox_flat-green\',\r\n        radioClass: \'icheckbox_flat-green\'\r\n });\r\n// 全选\r\n$(\'#text_box\').on(\'ifChecked\', function(event){\r\n        $(\'input\').iCheck(\'check\');\r\n });\r\n// 反选\r\n$(\'#text_box\').on(\'ifUnchecked\', function(event){\r\n       $(\'input\').iCheck(\'uncheck\');\r\n });</pre>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-php\">GIT笔记note1：\r\n本地clone一份项目代码，修改了demo.php,后不满意，想rm掉demo.php，重新从github上拉取一份文件下来 \r\n操作如下： \r\n在 demo.php 的所在目录 执行下面这个命令  git checkout -- demo.php \r\n或：当前目录   git checkout .</pre>\r\n<pre class=\"prettyprint lang-php\">笔记note1：\r\nJS去除循环拼接时多余逗号\r\nstr = str.substring(0,str.length-1);\r\n  \r\n笔记note2：\r\nPHP去除循环拼接时多余逗号\r\n//$str = rtrim($str, \',\');\r\n$str = substr($str,0,strlen($str)-1);\r\n\r\n笔记note3：\r\nshopnc 中 like 的正确写法\r\n$where_array[\'xy_store_class\']=array(\'like\', \'%\' . $type_id . \'%\');\r\n\r\n笔记note4：\r\nshopnc 中 in l的正确写法\r\n$model-&gt;del(array(\'id\' =&gt; array(\'in\',\'7,8,9\')));</pre>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(917,'初识[抓包调试利器]Fiddler','初识抓包调试利器fiddler',1473664426,1480158621,'<p>\r\n	1. 前情概要：同学的某一个项目中的数据ajax，post数据库的数据，被篡改了，有些还涉及到money！！！\r\n	2. 想起之前，了解过的[数据抓包] 可以得到，浏览器等一切http请求的所发送的数据，<span>，只是有所了解，但是没有实际操作过，【</span> https是加密的协议，不能想http那样轻易获得到！】\r\n        3. 了解到【Fiddler】\r\n</p>\r\n<pre class=\"prettyprint lang-php\">Fiddler是一个http协议调试代理工具，它能够记录并检查所有你的电脑和互联网之间的http通讯，设置断点，查看所有的“进出”Fiddler的数据（指cookie,html,js,css等文件，这些都可以让你胡乱修改的意思）。 Fiddler要比其他的网络调试器要更加简单，因为它不仅仅暴露http通讯还提供了一个用户友好的格式。\r\n ---[百度百科]</pre>\r\n<p>\r\n	4.找了一个绿色版本的下载下来，当然可以去官网下载 &nbsp;&nbsp;http://www.telerik.com/fiddler&nbsp;\r\n	5. 开始学习。。。。[我用的是一个绿色版本的] &nbsp; &nbsp;http://www.cr173.com/soft/42248.html\r\n	1）界面左半部分&nbsp;\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/09/20160912153251.png\" alt=\"20160912153251\" width=\"751\" height=\"787\" class=\"alignnone size-full wp-image-937\" /> \r\n</p>\r\n<p>\r\n	右半边部分：\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/09/20160912153633.png\" alt=\"20160912153633\" width=\"712\" height=\"671\" class=\"alignnone size-full wp-image-940\" /><br />\r\n2）Fiddler想要抓到数据包，要确保Capture Traffic是开启，在File –&gt; Capture Traffic。开启后再左下角会有显示，当然也可以直接点击左下角的图标来关闭/开启抓包功能。\r\n	3）Fiddler开始工作，抓到的数据包就会显示在列表里面&nbsp;<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/09/20160912153939.png\" alt=\"20160912153939\" width=\"725\" height=\"314\" class=\"alignnone size-full wp-image-941\" /> \r\n</p>\r\n<p>\r\n	4）右半部分[统计]，<span>关于HTTP请求的性能以及数据分析。\r\n	5）右半部分[嗅探]，可以更详细的查看web会话信息，上半部分是请求的内容，下半部分是响应的内容。\r\n	6）至此，无论是GET和POST，所有http的请求，都会显示在列表中，那么就可以，[模拟http请求]\r\n	右半部分[请求构造]：\r\n	Composer 自定义请求发送服务器 Composer允许自定义请求发送到服务器，可以手动创建一个新的请求，也可以在会话表中，拖拽一个现有的请求。</span> \r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/09/20160912154505.png\" alt=\"20160912154505\" width=\"788\" height=\"839\" class=\"alignnone size-full wp-image-943\" />\r\n</p>\r\n<p>\r\n	7）修改成功！\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/09/Fiddler056.png\" alt=\"Fiddler056\" width=\"395\" height=\"137\" class=\"alignnone size-full wp-image-923\" /> \r\n</p>\r\n<p>\r\n	8）只是简单啦学习啦一下，还有很多牛X的功能要去了解！后续在下载官方英文原版深入学习下！\r\n	9）想起来那句话：[千万不要相信用户传过来的数据] [任何前端传过来的数据都要按照一定逻辑规则进行验证！！！]\r\n</p>\r\n<p>\r\n	注：参考文章[博客园]：\r\n</p>\r\n<p>\r\n	1.&nbsp; <a href=\"http://www.cnblogs.com/yyhh/p/5140852.html\" target=\"_blank\">Fiddler 抓包工具总结</a> \r\n</p>\r\n<p>\r\n	2. &nbsp;<a href=\"http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html\" target=\"_blank\">Fiddler 教程</a> \r\n</p>\r\n<p>\r\n	3. &nbsp;<a href=\"http://gaoboy.com/article/26.html\" target=\"_blank\">微信内移动前端开发抓包调试工具fiddler教程</a><span style=\"line-height:1.5;\">&nbsp;</span> \r\n</p>',0,1,NULL,'post','publish',NULL,2,'1','1','1',0,0,0),(949,'html页面,手机模拟器、手机浏览器无法上下拖动，鼠标可以滚动','html页面手机模拟器-手机浏览器无法上下拖动-鼠',1475205924,1480158621,'<p>\r\n	html页面在chrome手机模拟器，手机真实浏览器环境下，无法上下拖动(滑动)，但是在模拟器下鼠标可以滚动，\r\n</p>\r\n<p>\r\n	发现：\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-js\">//这个作用: 禁掉相应的事件[禁止了touchmove事件]\r\ndocument.addEventListener(\'touchmove\', function(e) {\r\n   e.preventDefault();\r\n}, false)  \r\n\r\naddEventListener() 方法用于向指定元素添加事件句柄。 \r\n使用 removeEventListener() 方法来移除 addEventListener() 方法添加的事件句柄。\r\n</pre>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(954,'所知道的包(依赖)管理器[Package Manager]','所知道的包依赖管理器package-manager',1476688650,1480158621,'<p>\r\n	第一次听到、了解到 包管理器还是自己在Vmware上鼓捣着装MySQL、Nginx，时候：知道了yum;&nbsp;<span style=\"line-height:1.5;\">后来的composer[php</span><span style=\"line-height:1.5;\">依赖</span><span style=\"line-height:1.5;\">管理]，再是最近了解到的Node里的 nmp ,淘宝的cnmp 。</span> \r\n</p>\r\n<p>\r\n	下面具体看一下：\r\n</p>\r\n<p>\r\n	1、yum&nbsp;\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp; &nbsp;CentOS中，默认使用yum作为包管理器<span id=\"__kindeditor_bookmark_start_3__\">，以及，手动去切换国内稳定的yum源，比如阿里云yum源。</span> \r\n</p>\r\n<p>\r\n	<span>2、composer &nbsp;</span> \r\n</p>\r\n<p>\r\n	<span>&nbsp; &nbsp;&nbsp;&nbsp;是 PHP 用来管理依赖（dependency）关系的工具，其实，Composer 不是一个包管理器，它涉及 \"packages\" 和 \"libraries\"，但它在每个项目的基础上进行管理，在你项目的某个目录中（例如 vendor）进行安装。默认情况下它不会在全局安装任何东西。因此，这仅仅是一个依赖管理。</span> \r\n</p>\r\n<p>\r\n	3. npm\r\n</p>\r\n<p>\r\n	&nbsp; &nbsp;&nbsp;<span id=\"__kindeditor_bookmark_start_40__\">NPM是随同NodeJS一起安装的包管理工具，能解决NodeJS代码部署上的很多问题，</span> \r\n</p>\r\n<p>\r\n	<span>&nbsp; &nbsp;淘宝 NPM 镜像：使用定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm。</span> \r\n</p>\r\n<p>\r\n	<span>4.&nbsp;apt-get</span> \r\n</p>\r\n<p>\r\n	<span>&nbsp; &nbsp; Ubuntu中，默认采用apt-get 作为包管理器。</span> \r\n</p>\r\n<p>\r\n	<span>只是概念了解下，其中yum、npm具体使用操作过，之后具体学习下composer php的依赖关系管理。</span> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(962,'对HHVM和PHP7，Nginx、Apache、Lighttpd和Tengine的简单认识','对hhvm和php7-nginx-apache-lighttpd和tengine的简单认识',1477124806,1480158621,'<p>\r\n	一、HHVM和PHP7\r\n</p>\r\n<p>\r\n	1. HHVM ：一个运行 PHP 代码的虚拟工具，类似于java 的 JVM虚拟机&nbsp;\r\n</p>\r\n<p>\r\n	2. PHP7 ：PHP版本升级，引擎的升级，性能的升级\r\n</p>\r\n<p>\r\n	摘录自：<a href=\"http://www.nowamagic.net/librarys/news/detail/2144\" target=\"__blank\">http://www.nowamagic.net/librarys/news/detail/2144</a>&nbsp;\r\n</p>\r\n<pre class=\"prettyprint lang-bsh\">代码解析：\r\nPHP7 和 HHVM 之间的基本不同之处在于他们解析 PHP 代码的方式。PHP7 使用标准的 PHP 解析器，\r\n它是一个可以给所有人使用的免费软件，可以在服务器上直接解析和运行。它生成 HTML 代码，\r\n然后发送给客户端，客户端显示出用户期望的内容。相比之下，HHVM 首先把 PHP 代码转化为\r\nHipHop 字节代码，这个代码再被翻译成机器码然后执行。在这个过程中 HHVM 会对代码进行优化，\r\n优化一些影响执行效率的 PHP 代码，目标是提高运行速度。\r\n\r\n编写代码\r\nPHP 解析器和 HHVM 都可以接收 PHP 代码然后运行。这样写代码的过程是完全一样的。\r\n但是如果你想使用 HHVM，你需要在你的服务器上安装 HHVM 然后以命令行的方式通过HHVM命令来调用。</pre>\r\n<p>\r\n	二、web服务器[ Nginx、Apache、Lighttpd 和 <span>Tengine&nbsp;</span>]\r\n</p>\r\n<p>\r\n	1. Nginx ：Nginx是俄罗斯人编写的十分轻量级的HTTP服务器，<span id=\"__kindeditor_bookmark_start_25__\">是一个高性能的HTTP和反向代理服务器，同时也是一个IMAP/POP3/SMTP 代理服务器。</span> \r\n</p>\r\n<p>\r\n	2.Lighttpd ：Lighttpd 是一个德国人领导的开源Web服务器软件。非常低的内存开销，cpu占用率低，效能好，以及丰富的模块等特点。\r\n</p>\r\n<p>\r\n	<span>3. Apache ： 再熟悉不过的web服务器，Apache HTTP服务器是一个模块化的服务器。</span> \r\n</p>\r\n<p>\r\n	<span>4.&nbsp;Tengine : &nbsp;是由淘宝网发起的Web服务器项目。它在Nginx的基础上，针对大访问量网站的需求，添加了很多高级功能和特性。</span> \r\n</p>\r\n<p>\r\n	三、常用的服务架构\r\n</p>\r\n<p>\r\n	1. LNMP : linux + nginx + mysql + php\r\n</p>\r\n<p>\r\n	2. Lamp : linux + apache + mysql + php\r\n</p>\r\n<p>\r\n	3. LNMH : linux + nginx + mysql + HHVM\r\n</p>\r\n<p>\r\n	四、常用结合方式：\r\n</p>\r\n<p>\r\n	1.&nbsp;HHVM采用Fastcgi与Nginx结合----即：nginx+hhvm（fastcgi）\r\n</p>\r\n<p>\r\n	2.&nbsp;Nginx+PHP-FPM&nbsp;\r\n</p>\r\n<p>\r\n	具体，初步理解 fastcgi 等协议，请查看 &nbsp;<a href=\"http://www.hsblogs.com/?p=885\" target=\"__blank\">http://www.hsblogs.com/?p=885</a>&nbsp;\r\n</p>\r\n<p>\r\n	<span>以上于20161022，简单记录，对HHVM和PHP7，Nginx、Apache、Lighttpd和Tengine的简单认识</span> \r\n</p>\r\n<p>\r\n	<span>目前，本博客，采用LNMP结构搭建的服务器环境，故 LNMP 和 LAMP 还算熟悉。</span> \r\n</p>\r\n<p>\r\n	<span>计划，年前利用VMware 搭建学习下 LNMH 即HHVM。</span> \r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(967,'初探Composer[解决使用Composer的时候提示输入Token]','初探composer解决使用composer的时候提示输入token',1477127563,1480158621,'<p>\r\n	前言：<span style=\"line-height:1.5;\">&nbsp;一次面试被问到 知道 Composer ，因为之前看到过关于&nbsp;</span><span style=\"line-height:1.5;\">Composer的文章，但没有实际下载，操作过，所以，我只能回答，了解，知道它是php的依赖管理器</span> \r\n</p>\r\n<p>\r\n	1. 是什么\r\n</p>\r\n<pre class=\"prettyprint lang-js\">Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库，\r\n它会在你的项目中为你安装他们。</pre>\r\n2. 安装\r\n<p>\r\n	&nbsp;1) 可以通过命令，来安装\r\n</p>\r\n<p>\r\n	&nbsp;2) 我直接下载的windows版本，安装的，\r\n</p>\r\n<p>\r\n	&nbsp;3) windows具体安装步骤，http://jingyan.baidu.com/article/4f34706ed04013e386b56d72.html&nbsp;<span style=\"line-height:1.5;\">下载地址 &nbsp;https://getcomposer.org/download/</span> \r\n</p>\r\n<p>\r\n	&nbsp;4) Composer 中文网地址 &nbsp;http://docs.phpcomposer.com/00-intro.html &nbsp;&nbsp;\r\n</p>\r\n<p>\r\n	&nbsp;5)<span style=\"color:#E53333;\"> 切记 要打开 php的&nbsp;openssl 扩展。</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">3. &nbsp;我主要是用来 安装 YII 框架 来学习的，故Composer 安装好了，下面来安装 yii ，</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\">&nbsp;1) 按照YII 官网的 安装步骤</span> \r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\"> </span> \r\n</p>\r\n<pre class=\"prettyprint lang-bsh\">composer global require \"fxp/composer-asset-plugin:~1.1.1\"\r\ncomposer create-project --prefer-dist yiisoft/yii2-app-basic basic</pre>\r\n<p>\r\n	突然，出现让输入TOKEN的界面\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/10/20161022165810.png\" alt=\"20161022165810\" width=\"639\" height=\"340\" class=\"alignnone size-full wp-image-968\" /> \r\n</p>\r\n<p>\r\n	Token是什么鬼？哪里的token？\r\n</p>\r\n<p>\r\n	原来：\r\n</p>\r\n<pre class=\"prettyprint lang-bsh\">Note: 在安装过程中 Composer 可能会询问你 GitHub 账户的登录信息，因为可能在使用中超过了\r\nGitHub API （对匿名用户的）使用限制。因为 Composer 需要为所有扩展包从\r\nGitHub 中获取大量信息，所以超限非常正常。\r\n（译注：也意味着作为程序猿没有 GitHub 账号，就真不能愉快地玩耍了）\r\n登陆 GitHub 之后可以得到更高的 API 限额，这样 Composer 才能正常运行。</pre>\r\n那怎么得到这个token呢？即[解决使用Composer的时候提示输入Token]\r\n<pre class=\"prettyprint lang-js\">进入 https://github.com/settings/tokens 点击 「Generate new token」 新建一个 Token，\r\n选择默认新建就行，其中，Select scopes Scopes define the access for personal tokens. \r\n这里可以不用选择scope ，默认即可，\r\n然后就会得到一个 Token，然后输入这个值就 OK 了。</pre>\r\n<p>\r\n	然后将，在github上 生成的密钥，粘贴到刚才的安装命令行出，注意&lt;hidden&gt; &nbsp;你输入的内容时看不到的\r\n</p>\r\n<p>\r\n	然后提示，<span style=\"color:#E53333;\">Token stored successfully </span>即为成功验证了密钥，\r\n</p>\r\n<p>\r\n	下面开始安装 yii 框架\r\n</p>\r\n<p>\r\n	<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/10/20161022172546.png\" alt=\"20161022172546\" width=\"640\" height=\"486\" class=\"alignnone size-full wp-image-974\" />\r\n</p>\r\n<p>\r\n	安装完成，因为我用的apache ，所以要配置apache的虚拟主机文件，<span style=\"line-height:1.5;\">vhosts-conf 文件 ，到目录 <span style=\"color:#E53333;\">/basic/web</span> 下</span>\r\n</p>\r\n<p>\r\n	<span style=\"line-height:1.5;\"></span>\r\n</p>\r\n<pre class=\"prettyprint lang-js\">#新加入\r\nListen 8060 \r\n\r\n&lt;VirtualHost *:8060&gt;\r\n    DocumentRoot \"D:\\phpStudy\\yii\\basic\\web\"\r\n    ServerName yii\r\n    ServerAlias yii\r\n  &lt;Directory \"D:\\phpStudy\\yii\\basic\\web\"&gt;\r\n      Options FollowSymLinks ExecCGI\r\n      AllowOverride All\r\n      Order allow,deny\r\n      Allow from all\r\n      Require all granted\r\n  &lt;/Directory&gt;\r\n&lt;/VirtualHost&gt;</pre>\r\n访问地址出现“Congratulations!” 页面，说明yii 安装部署完成！<br />\r\n<img src=\"http://www.hsblogs.com/wp-content/uploads/2016/10/20161022172511.png\" alt=\"20161022172511\" width=\"1119\" height=\"660\" class=\"alignnone size-full wp-image-975\" />',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,1),(978,'Hexo+Github个人新博客【置顶】','hexogithub个人新博客-置顶',1477730916,1480158621,'<p>\r\n	Hexo+Github个人新博客【置顶】https://haoshuai6.github.io/\r\n</p>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','draft',NULL,0,'1','1','1',0,0,0),(982,'自动草稿','982',28800,1480158621,NULL,0,1,NULL,'post','draft',NULL,0,'1','1','1',0,0,0),(983,'自动草稿','983',28800,1480158621,NULL,0,1,NULL,'post','draft',NULL,0,'1','1','1',0,0,0),(984,'如何去掉WWW，使用顶级域名访问网站','如何去掉www-使用顶级域名访问网站',1479954821,1480158621,'<p>\r\n	拿我的域名为例：所谓顶级域名就是你申请的根域名\r\n</p>\r\n<p>\r\n	1、顶级域名(根域名)：hsblogs.com\r\n</p>\r\n<p>\r\n	2、二级域名：\r\n</p>\r\n<ul>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">www.hsblogs.com &nbsp;也是二级域名，只不过人们习惯用www.+域名而已</span> \r\n	</li>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">blog.hsblogs.com &nbsp;， xx.hsblogs.com &nbsp;都是二级域名</span> \r\n	</li>\r\n</ul>\r\n<p>\r\n	3、去域名服务商，做解析，例如阿里云万网\r\n</p>\r\n<ul>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">登录阿里云/万网【管理控制台】，点击【产品与服务】--【云解析】，进入域名解析列表；</span> \r\n	</li>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">选择需要设置解析的域名点击【添加解析】，增加两条记录分别是主机记录（RR）为空或为@，主机记录（RR）为WWW，即可实现。</span> \r\n	</li>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">例如：如果要将域名解析为 www.example.com，在主机记录（RR）处填写 WWW 即可；如需要直接解析为 example.com，主机记录（RR）处为空，或填写@。</span> \r\n	</li>\r\n</ul>\r\n<p>\r\n	4、解析完成后，web服务器<span>apache或者nginx</span>也进行修改，拿nginx为例，在<span style=\"background-color:#E53333;\">nginx单ip单端口多域名的虚拟主机</span>设置环境下，在 <span style=\"color:#E53333;\">vhost</span>文件夹下，<span style=\"color:#E53333;\">vim &nbsp; &nbsp;hsblogs.com.conf <span style=\"color:#000000;\">&nbsp;编辑</span></span> \r\n</p>\r\n<p>\r\n	<span style=\"color:#E53333;\"><span style=\"color:#000000;\"><img src=\"http://hsblogs.com/wp-content/uploads/2016/11/20161124101140.png\" alt=\"20161124101140\" width=\"402\" height=\"106\" class=\"alignnone size-full wp-image-987\" /><br />\r\n</span></span> \r\n</p>\r\n<p>\r\n	<span style=\"color:#E53333;\"><span style=\"color:#000000;\">在原来的 www.hsblogs.com.conf 处修改<span style=\"color:#E53333;\"> rewrite 如图：rewrite ^/(.*)$ http://hsblogs.com/$1 permanent;</span></span></span> \r\n</p>\r\n<p>\r\n	<img src=\"http://hsblogs.com/wp-content/uploads/2016/11/20161124101222.png\" alt=\"20161124101222\" width=\"482\" height=\"237\" class=\"alignnone size-full wp-image-986\" />&nbsp;\r\n</p>\r\n<p>\r\n	修改完成后，重启 nginx服务器即可。\r\n</p>\r\n<p>\r\n	注：如果是wordpress，更换顶级域名，就如同换了一个新域名，要在后台设置处，或者直接修改数据表\r\n</p>\r\n<p>\r\n	wp后台--&gt;设置--&gt;常规：\r\n</p>\r\n<p>\r\n	<img src=\"http://hsblogs.com/wp-content/uploads/2016/11/20161124101859.png\" alt=\"20161124101859\" width=\"616\" height=\"106\" class=\"alignnone size-full wp-image-989\" /> \r\n</p>\r\n<p>\r\n	直接修改数据表：<span style=\"color:#E53333;\">wp_options&nbsp;</span> \r\n</p>\r\n<p>\r\n	<img src=\"http://hsblogs.com/wp-content/uploads/2016/11/20161124101833.png\" alt=\"20161124101833\" width=\"492\" height=\"87\" class=\"alignnone size-full wp-image-990\" /> \r\n</p>\r\n<p>\r\n	至此完工，以后访问 www.hsblogs.com &nbsp;所有url 都会重定向到 hsblogs.com\r\n</p>\r\n<p>\r\n	5、综上：<span style=\"line-height:1.5;\">实质就是 </span><span style=\"line-height:1.5;color:#E53333;\">重定向&nbsp;</span>\r\n</p>\r\n<ul>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">需求1：将不带www的顶级域名请求全部重定向到带www的二级域名</span> \r\n	</li>\r\n	<li>\r\n		<span style=\"line-height:1.5;\">需求2：反过来，<span>将<span>带www的二级域名</span><span></span><span></span><span>请求全部重定向到</span>不带</span><span>www的顶级域名</span></span> \r\n	</li>\r\n	<li>\r\n		<span style=\"line-height:1.5;\"><span>需求3：目录重定向</span></span> \r\n	</li>\r\n	<li>\r\n		<span style=\"line-height:1.5;\"><span>需求4：目录跳转新域名</span></span>\r\n	</li>\r\n</ul>\r\n<p>\r\n	<span>需求1：</span>\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-cs\">server {\r\n      server_name hsblogs.com;\r\n      rewrite ^/(.*)$ http://www.hsblogs.com/$1  permanent;\r\n }</pre>\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	需求2：\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-cs\">server {\r\n     server_name www.hsblogs.com;\r\n     rewrite ^/(.*)$ http://hsblogs.com/$1 permanent;\r\n }</pre>\r\n需求3：\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n	<br />\r\n</p>\r\n<pre class=\"prettyprint lang-cs\">if ( $request_filename ~  blog/ ) {\r\n      rewrite  ^ http://www.hsblogs.com/newblog/?  permanent;\r\n }</pre>\r\n需求4：\r\n<p>\r\n	<br />\r\n</p>\r\n<p>\r\n<pre class=\"prettyprint lang-cs\">if ( $request_filename ~ blog/ ) {\r\n      rewrite ^ http://blog.hsblogs.com/? permanent;\r\n}</pre>\r\n</p>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,1),(988,'自动草稿','988',28800,1480158621,NULL,0,1,NULL,'post','draft',NULL,0,'1','1','1',0,0,0),(992,'解决百度分享不支持https的方法','解决百度分享不支持https的方法',1480050792,1480158621,'<p>\r\n	1. 前端时间利用Hexo+Github Pages 搭建的个人静态博客，一直分享有问题，报错\r\n</p>\r\n<p>\r\n	<img src=\"http://hsblogs.com/wp-content/uploads/2016/11/20161125130706.png\" alt=\"20161125130706\" width=\"1123\" height=\"98\" class=\"alignnone size-full wp-image-993\" /> \r\n</p>\r\n<p>\r\n	意思是在https 协议下，发起的http请求，错误的响应\r\n</p>\r\n<p>\r\n	<span>大概思路就是将js文件放到</span><span>网站的根目录下</span> \r\n</p>\r\n<p>\r\n	2. &nbsp;在github找到 【百度分享不支持Https的解决方案】--&gt; <a href=\"https://github.com/hrwhisper/baiduShare\" target=\"_blank\">https://github.com/hrwhisper/baiduShare</a>&nbsp;\r\n</p>\r\n<p>\r\n	<br />\r\n</p>',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,0),(995,'2.png','2-png',1480396429,1480396429,'a:5:{s:4:\"name\";s:5:\"2.png\";s:4:\"path\";s:34:\"/usr/uploads/2016/11/391030380.png\";s:4:\"size\";i:1080402;s:4:\"type\";s:3:\"png\";s:4:\"mime\";s:9:\"image/png\";}',1,1,NULL,'attachment','publish',NULL,0,'1','0','1',994,0,0),(996,'Typecho 二次开发文档？','996',1480401900,1480402098,'<!--markdown-->https://www.zhihu.com/question/26188547/answer/95856357',0,1,NULL,'post','publish',NULL,0,'1','1','1',0,0,1),(997,'typecho开发者网站','997',1480402177,1480402177,'<!--markdown-->https://www.typechodev.com',0,1,NULL,'post','publish',NULL,3,'1','1','1',0,0,2);

/*Table structure for table `typecho_fields` */



/*Data for the table `typecho_users` */

insert  into `typecho_users`(`uid`,`name`,`password`,`mail`,`url`,`screenName`,`created`,`activated`,`logged`,`group`,`authCode`) values (1,'admin','$P$BS4SQ.RgXZ.3I5u71PJTUPVr4NKpuW/','haoshuai_it@163.com','http://hsblogs.com','haoshuai_it',1480083646,1480405165,1480402692,'administrator','dbce17bfe167f740acd326fd56efc8ca'),(2,'ceshi','$P$B/0xKRcL5AmTU1s6s.vDrCetMva4oM0','haoshuai6@126.com',NULL,'ceshi',1480158953,1480159108,0,'subscriber','6e3c5ce4be15ca61410d1f40ff0fa0b5b6633f1c'),(3,'nihao','$P$B2/cINMcs/dWOKMcLfKtpO6OFcAgZo/','1286511224@qq.com',NULL,'nihao',1480402733,1480404423,0,'subscriber','dfe1c35e01e9864acf3c0f05450a3f24');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
