王新阳

wangxinyang

防止网站内部搜索被他人恶意利用

详见百度站长学院:https://zhanzhang.baidu.com/college/articleinfo?id=117

除了文章中说的方法,也可以把搜索页地址写入robots.txt,禁止搜索引擎收录。

Fatal error: Call-time pass-by-reference has been removed in...的处理方法

以前的php代码在升级到5.4版本的php可能会出现这种错误:
当我们这样使用函数(或者类)的话,会产生一个error:
foo(&$var);
实际上,这样用本来就是错的,只是之前的错误级别仅仅是Deprecated而已。
而正确的使用方法应该是在函数定义时:
function foo(& $var) {
    //other code
}
而在调用时直接传参就行了: foo($var);

PHP:Fatal error: Class 'COM' not found in … 的处理办法

一般执行3、4两条即可

1、首先在windows的“服务”里面检查COM+服务是否已经启动。如果未启动,请启动它。

大概是该服务:Windows Management Instrumentation

2、检查php目录ext文件夹下面php_com_dotnet.dll是否存在。(顺便说一下,ext通常作为php程序的扩展目录,在安装php的时候一般已经设置好。否则就应该不仅仅报主题所说的错咯。)

3、如果没问题,在php.ini里面加入以下语句:
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll

4、php.ini中设置
com.allow_dcom = true

5.PHP版本
PHP 5.4.5以前的版本,只需要在php.ini中把com.allow_dcom = true打开就可以了,但是5.4.5版本以后,PHP把com/dotnet 模块集成到了一个单独的扩展中,所以需要在php.ini中加一行扩展extension=php_com_dotnet.dll,是加一行,不是打开,默认配置文件中没有这一行的,然后重启IIS或Apache,再次运行就正常了!

CodeIgniter使用rewrite时出现404的原因

.htaccess中有如下一条,本意是要把/m重写为/m.php,结果总是 404错误

RewriteRule ^m/(.*)$ m.php/$1 [L]

原因:
config/config.php

$config['uri_protocol'] = 'REQUEST_URI';

要改为

$config['uri_protocol'[ = 'PATH_INFO';

否则CI无法根据重写后的uri获取请求的class和method,从而导致出错。
当访问地址为 http://abc.com/m   没有以 / 结尾时仍不能正确重写到 m.php,需要在.htaccess中增加如下一行(加在 RewriteRule ^m/(.*)$ m.php/$1 [L] 的前面):

RewriteRule ^m$ /m/ [R=301,NC,L]

参考:http://blog.csdn.net/newjueqi/article/details/12014673

如果服务器不支持$_SERVER['PATH_INFO'],可以在服务器上输入$_SERVER数组,查看是否支持$_SERVER['ORIG_PATH_INFO'],支持的话以ORIG_PATH_INFO代替PATH_INFO,当前要观察两个值是否相同,如果不相同,需要同时修改 system/core/URI.php 中关于$uri获取的部分。我本地电脑中ORIG_PATH_INFO和PATH_INFO的值不一样。阿里云虚拟主机不支持PATH_INFO,但ORIG_PATH_INFO的值却与我本地的PATH_INFO一样。

border-radius溢出

如下CSS鼠标滑过时在360浏览器的极速模式下,会出现border-radisu溢出,图片仍是方形,直至transform动画结束。

a{
	display:block;
	width:100px;
	height:100px;
	border-radius:50%;
	overflow:hidden;
}
a img{
	width:100%;
	height:100%;
	transition:transform ease .5s;
}
a:hover img{
	transform:scale(1.05);
}

解决方法:

a{
	position:relative;
	z-index:1;
}

MySQL运算符优先级

常常发现很多基础的知识才是最重要的,是我们修复Bug的利器。

#MySQL运算符的优先级

运算符的优先级决定了不同的运算符在表达式中计算的先后顺序。

MySQL中所有运算符的优先级的顺序按照从高到低,从上到下,依次降低。一般情况下,级别高的运算符先进行计算,如果级别相同,MySQL按照表达式的顺序从左到右依次计算。

MySQL运算符的优先级如下:

优先级 运算符
(最高)  !
 3     -(负号),~(按位取反)
 4     ^(按位异或)
 5     *,/(DIV),%(MOD)
 6     +,-
 7     >>,<<
 8     &
 9     |
10     =(比较运算),<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP
11    BETWEEN AND,CASE,WHEN,THEN,ELSE
12    NOT
13    &&,AND
14    XOR
15    ||,OR
(最低)    =(赋值运算),:=

我们可以看出,不同运算符的优先级是不同的。在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。

301转跳

ASP:

<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", new_url
%>

PHP:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://abc.com".$_SERVER['REQUEST_URI']);
?>

mysql UNIX时间戳与日期的相互转换

UNIX时间戳转换为日期用函数: FROM_UNIXTIME()
select FROM_UNIXTIME(1156219870);

日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()
Select UNIX_TIMESTAMP('2006-11-04 12:23:00');

例:mysql查询当天的记录数:
$sql="select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc";

KindEditor编辑器的bug

1、字体设置为微软雅黑时,内部编码为Microsoft Yahei,带空格,设置失败。
  解决办法:/lang/zh-CN.js 或 kindeditor-all-min.js中把Microsoft Yahei直接替换为中文微软雅黑

2、响应式网站,后台发布新闻等内容时,通常不需要给图片设置宽度和高度,但编辑器图片插件中删除图片宽高中的一项,另一项会变为NaN,
修改kindeditor-all-min.js中的图片插件(或plugins/image/image.js中相应部分):
D.change(function(){J>0&&E.val(Math.round(K/J*parseInt(this.value,10)))}),E.change(function(){K>0&&D.val(Math.round(J/K*parseInt(this.value,10)))})
改为:
D.change(function(){this.value&&J>0&&E.val(Math.round(K/J*parseInt(this.value,10)))}),E.change(function(){this.value&&K>0&&D.val(Math.round(J/K*parseInt(this.value,10)))})

浏览器全屏

function fullscreen(){
    elem=document.body;
    if(elem.webkitRequestFullScreen){
        elem.webkitRequestFullScreen();   
    }else if(elem.mozRequestFullScreen){
        elem.mozRequestFullScreen();
    }else if(elem.requestFullScreen){
        elem.requestFullscreen();
    }else{
        //浏览器不支持全屏API或已被禁用
    }
}

function exitFullscreen(){
    var elem=document;
	$("#fullscreen").show();
    if(elem.webkitCancelFullScreen){
        elem.webkitCancelFullScreen();    
    }else if(elem.mozCancelFullScreen){
        elem.mozCancelFullScreen();
    }else if(elem.cancelFullScreen){
        elem.cancelFullScreen();
    }else if(elem.exitFullscreen){
        elem.exitFullscreen();
    }else{
        //浏览器不支持全屏API或已被禁用
    }
}
2025-04-05 星期六 农历三月初八