Jquery date picker z-index 问题,Timepicker,层叠样式z-index

20130826165016

Timepicker 官方 http://trentrichardson.com/examples/timepicker/
在使用 Jquery date Timepicker 时候 由于还使用了其他弹出层,导致层叠样式出现些问题。 总结下解决方法

方法一:css里加入这么一行

.ui-datepicker { z-index:9999 !important}

方法二:

$('#timepicker').datetimepicker({
	beforeShow: function() {
		setTimeout(function(){
			$('.ui-datepicker').css('z-index', 9);
		}, 0);
	}
});

方法三:

$('#timepicker').datetimepicker({
	beforeShow:function(input) {
		$(input).css({
			"position": "relative",
			"z-index": 999999
		});
	}
});

参考网址:
http://stackoverflow.com/questions/715677/trouble-with-jquery-dialog-and-datepicker-plugins
http://stackoverflow.com/questions/11533161/jquery-ui-datepicker-change-z-index
http://stackoverflow.com/questions/7033420/jquery-date-picker-z-index-issue

隐藏nginx响应头,修改nginx返回头信息,隐藏php版本号,隐藏服务器信息

隐藏服务器信息可以让服务器更加的安全,响应头中隐藏nginx版本号 隐藏php信息尤为重要,本例中分别介绍了隐藏nginx响应头信息,隐藏php返回头信息。
首先隐藏nginx版本信息,只需编辑 nginx.conf 文件
添加一行

server_tokens off;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    index index.php index.html index.htm;
    server_tokens off;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

响应头隐藏PHP版本休息,编辑php.ini文件找到expose_php = On , 修改为 expose_php = Off

;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://www.php.net/manual/en/ini.core.php#ini.expose-php
expose_php = Off

超强mysql语句转义,sql特殊字符转义,PK弱爆了的php mysql_escape_string

前一段时间发现公司数据库中存在大量的注入代码,都是因为对用户录入数据限制宽松导致,但是要根据这些东西查询的时候就会出现问题
当sql where 条件等于一串特殊符号时候 就容易报错,切断,甚至不执行,或者造成数据库危险。
下面我们简单测试下
创建测试数据

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES ('1', ''\\'''\\\'');

测试数据截图
20130804113740

如果我们通过这样的sql语句查询,是查不到的

select * from user where name = "'\'''\'"

必须要经过转义后才能查询,这样才能查询到结果

select * from user where name = "'\\'''\\\'"

有些人可能会想到用模糊查询比如like,但并不是一个很好的解决方案,导致查询不准确

那我们在执行sql之前要进行转义
但是 mysql_real_escape_string 和 mysql_escape_string 这样的转移函数 也并不是所有时候都靠谱。
这里我写了个php函数

function escape($sql_str) {
	$search = array('\', '/', '"', "'", '|', '-', ';', '[', ']');
	$replace = array('\\', '\/', '\"', "\'", '\|', '\-', '\;', '\[', '\]');
	return str_replace($search, $replace, $sql_str);
}

在执行sql前进行一次特殊符号转义即可
$sql = escape($sql);