月份: 2016-03

jquery插件框架

jquery插件框架

// JavaScript Document
(function($){

	 $.fn.extend({
		//定义插件名称
		pluginName: function(options){
		// 插件开始	 ---------------------------------------------
		//默认参数
        var defaults = {
		/**参数 1 */
                 a:1,
		/**参数 2 */
                 b:2,
		 /**参数 3 */
                 c:3
				 
            } 
		//参数合并	
        var options = $.extend(defaults, options); 

		return $(this).each(function( i , v ){
			//针对每一个被选定的 元素操作  ----------- 功能 开始 -----------------
			var o = options;// 在函数内部 就可以 用 o.a  o.b  o.c 调用参数
			var $that  = $(this);// $(this) 
			
			// 功能代码 ...	
				
			//针对每一个被选定的 元素操作  ----------- 功能 结束 -----------------	  
		});
		// 插件开始	 ---------------------------------------------
		}		 
	 });
})(jQuery);

调用插件

$('选择器').pluginName(json格式参数);

一个简单的双色li列表,基于jquery

一个简单的双色li列表,基于jquery

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>一个简单的双色li列表,基于jquery</title>
<script src="js/jquery.js"></script>
<script>
$(document).ready(function(){

	$('.dbcolor').each(function(){
		$(this).children(':even').addClass('bg1');
		$(this).children(':odd').addClass('bg2');
		$(this).children().mouseover(function(){
			$(this).addClass('hover');
		}).mouseout(function(){
			$(this).removeClass('hover');
		});
		
	});

});
</script>

<style>
	
	.ulA li.bg1 { background:#f4f4f4;}
	.ulA li.bg2 { background:#fff9c3;}
	.ulA li.hover { background:#f88;}
	
	.ulB li.bg1 { background:#f4f4f4;}
	.ulB li.bg2 { background:#fff9c3;}
	.ulB li.hover { background:#f88;}
	
</style>
</head>

<body>
<ul class="dbcolor ulA">
	<li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
</ul>

<ul class="dbcolor ulB">
	<li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
    <li>一个简单的双色li列表,基于jquery</li>
</ul>

</body>
</html>

一个简单的jquery选项卡例子_tabforid

一个简单的jquery选项卡例子_tabforid

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>一个简单的jquery选项卡例子_tabforid</title>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
	$('[_tabforid] li').click(function(){
		var $that  = $(this);//获取当前 操作对象 (谁被点击了)
		var i = $that.index(); //获取当前 对象 的 下标 (第几个被点击)
		var ul = $that.parent();//获取父元素对象 为 获取 _tabforid 做准备
		
			$that.addClass('selected');	
			$that.siblings('li').removeClass('selected');
			//*** 拼接 选择器 
			$('#'+ul.attr('_tabforid')+' div').eq(i).show().siblings('div').hide();

	});
	//默认 每组[_tabforid] li的第一个 触发点击事件。
	$('[_tabforid]').each(function(){
       $(this).children('li').first().click() ;
    });
	//[_tabforid=tabContentA] li 第一个 触发点击事件 
	$('[_tabforid=tabContentA] li').eq(0).click();
						   
});
</script>


<style>
ul,li{ list-style:none; margin:0px; padding:0px;}
.tabBox{ border:2px solid #000; width:800px; margin:0px auto 20px;}
.tabBox-title{ border-bottom:2px solid #000; }
.tabBox-title li{ background:#FFFF00; float:left; line-height:40px; width:100px; text-align:center; border-right:1px solid #000; cursor:pointer;}
/* tab 被中 状态 */
.tabBox-title li.selected { background:#f88; color:#FFFFFF;}
</style>
</head>
<body>


<div class="tabBox">
	<div class="tabBox-title">
   	  <ul _tabforid='tabContentA' >
        <li>选项卡1</li>
            <li>选项卡2</li>
            <li>选项卡3</li>
            <li>选项卡4</li>
      </ul>
        <br clear="all"/>
    </div>
  <div class="tabBox-body" id="tabContentA">
    	<div>选项卡1 de 内容</div>
        <div>选项卡2 de 内容</div>
        <div>选项卡3 de 内容</div>
        <div>选项卡4 de 内容</div>
  </div>
</div>

<center>
右一个选卡 修改了 【_tabforid='tabContentB'】 和 【id="tabContentB"】
</center>

<div class="tabBox">
	<div class="tabBox-title">
   	  <ul _tabforid='tabContentB' >
        <li>选项卡1</li>
            <li>选项卡2</li>
            <li>选项卡3</li>
            <li>选项卡4</li>
      </ul>
        <br clear="all"/>
    </div>
  <div class="tabBox-body" id="tabContentB">
    	<div>选项卡1 de 内容</div>
        <div>选项卡2 de 内容</div>
        <div>选项卡3 de 内容</div>
        <div>选项卡4 de 内容</div>
  </div>
</div>

</body>
</html>

批量命名工具_功能强大的批量更名工具_绿盟专用版

功能强大的批量更名工具 绿盟专用版

批量命名工具_功能强大的批量更名工具_绿盟专用版

百度网盘:http://pan.baidu.com/s/1kVhGzDt

纯CSS3 旋转动画 页面加载中,请稍候… 效果 适合做页面跳转

纯CSS3 旋转动画  页面加载中,请稍候… 效果 适合做页面跳转

代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="10;url='http://www.lrxin.com/';">
<title>页面加载中,请稍候...</title>
<style type="text/css">
body {
background: #555
}
.loading {
-webkit-animation: fadein 2s;
-moz-animation: fadein 2s;
-o-animation: fadein 2s;
animation: fadein 2s
}
@-moz-keyframes fadein {
from {
opacity: 0
}
to {
opacity: 1
}
}
@-webkit-keyframes fadein {
from {
opacity: 0
}
to {
opacity: 1
}
}
@-o-keyframes fadein {
from {
opacity: 0
}
to {
opacity: 1
}
}
@keyframes fadein {
from {
opacity: 0
}
to {
opacity: 1
}
}
.spinner-wrapper {
position: absolute;
top: 0;
left: 0;
z-index: 300;
height: 100%;
min-width: 100%;
min-height: 100%;
background: rgba(255,255,255,0.93)
}
.spinner-text {
position: absolute;
top: 45%;
left: 50%;
margin-left: -100px;
margin-top: 2px;
color: #000;
letter-spacing: 1px;
font-size: 20px;
font-family: Arial
}
.spinner {
position: absolute;
top: 45%;
left: 50%;
display: block;
margin-left: -160px;
width: 1px;
height: 1px;
border: 20px solid rgba(255,0,0,1);
-webkit-border-radius: 50px;
-moz-border-radius: 50px;
border-radius: 50px;
border-left-color: transparent;
border-right-color: transparent;
-webkit-animation: spin 1.5s infinite;
-moz-animation: spin 1.5s infinite;
animation: spin 1.5s infinite
}
@-webkit-keyframes spin {
0%,100% {
-webkit-transform: rotate(0deg) scale(1)
}
50% {
-webkit-transform: rotate(720deg) scale(0.6)
}
}
@-moz-keyframes spin {
0%,100% {
-moz-transform: rotate(0deg) scale(1)
}
50% {
-moz-transform: rotate(720deg) scale(0.6)
}
}
@-o-keyframes spin {
0%,100% {
-o-transform: rotate(0deg) scale(1)
}
50% {
-o-transform: rotate(720deg) scale(0.6)
}
}
@keyframes spin {
0%,100% {
transform: rotate(0deg) scale(1)
}
50% {
transform: rotate(720deg) scale(0.6)
}
}
</style>
</head>
<body>
<div class="loading">
  <div class="spinner-wrapper">
    <span class="spinner-text">页面加载中,请稍候...</span>
    <span class="spinner"></span>
  </div>
</div>
</body>
</html>

比较好用的PHP防注入漏洞过滤函数代码

比较好用的PHP防注入漏洞过滤函数代码

PHP整站防注入程序,需要在公共文件中require_once本文件,因为现在网站被注入攻击现象很严重,所以推荐大家使用。

<?php
//PHP整站防注入程序,需要在公共文件中require_once本文件
//判断magic_quotes_gpc状态
if (@get_magic_quotes_gpc()) {
    $_GET = sec($_GET);
    $_POST = sec($_POST);
    $_COOKIE = sec($_COOKIE);
    $_FILES = sec($_FILES);
}
$_SERVER = sec($_SERVER);
function sec(&$array)
{
    //如果是数组,遍历数组,递归调用
    if (is_array($array)) {
        foreach ($array as $k => $v) {
            $array[$k] = sec($v);
        }
    } else {
        if (is_string($array)) {
            //使用addslashes函数来处理
            $array = addslashes($array);
        } else {
            if (is_numeric($array)) {
                $array = intval($array);
            }
        }
    }
    return $array;
}
//整型过滤函数
function num_check($id)
{
    if (!$id) {
        die('参数不能为空!');
    } else {
        if (inject_check($id)) {
            die('非法参数');
        } else {
            if (!is_numetic($id)) {
                die('非法参数');
            }
        }
    }
    //数字判断
    $id = intval($id);
    //整型化
    return $id;
}
//字符过滤函数
function str_check($str)
{
    if (inject_check($str)) {
        die('非法参数');
    }
    //注入判断
    $str = htmlspecialchars($str);
    //转换html
    return $str;
}
function search_check($str)
{
    $str = str_replace('_', '\\_', $str);
    //把"_"过滤掉
    $str = str_replace('%', '\\%', $str);
    //把"%"过滤掉
    $str = htmlspecialchars($str);
    //转换html
    return $str;
}
//表单过滤函数
function post_check($str, $min, $max)
{
    if (isset($min) && strlen($str) < $min) {
        die('最少$min字节');
    } else {
        if (isset($max) && strlen($str) > $max) {
            die('最多$max字节');
        }
    }
    return stripslashes_array($str);
}
//防注入函数
function inject_check($sql_str)
{
    return eregi('select|inert|update|delete|\'|\\/\\*|\\*|\\.\\.\\/|\\.\\/|UNION|into|load_file|outfile', $sql_str);
}
function stripslashes_array(&$array)
{
    if (is_array($array)) {
        foreach ($array as $k => $v) {
            $array[$k] = stripslashes_array($v);
        }
    } else {
        if (is_string($array)) {
            $array = stripslashes($array);
        }
    }
    return $array;
}
?>

防止sql注入的三种方法

(1)mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
下列字符受影响:
\x00
\n
\r
\


\x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

使用方法如下:

$username = 'john';
$pw = "' OR ''='";
$sql = "select count(*) as dd  from admin where username
='".mysql_real_escape_string($username)."' and
password='". mysql_real_escape_string($pw)."' limit 1";

使用 mysql_real_escape_string() 作为用户输入的包装器,就可以避免用户输入中的任何恶意 SQL 注入。

(2) 打开magic_quotes_gpc来防止SQL注入

php.ini中有一个设置:magic_quotes_gpc = Off
这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,
比如把 ‘ 转为 \’等,对于防止sql注射有重大作用。

     如果magic_quotes_gpc=Off,则使用addslashes()函数

    
(3)自定义函数

//检测 SQL 语法特殊字符
function inject_check($sql_str) {
    return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);
}


//检测 id 合法性
function verify_id($id=null) {
    if(!$id) {
        exit('没有提交参数!');
    } elseif(inject_check($id)) {
        exit('提交的参数非法!');
    } elseif(!is_numeric($id)) {
        exit('提交的参数非法!');
    }
    $id = intval($id);
    return $id;
}
 
//字符串 过滤
function str_check( $str ) {
    if(!get_magic_quotes_gpc()) {
        $str = addslashes($str); // 进行过滤
    }
    $str = str_replace("_", "\_", $str);
    $str = str_replace("%", "\%", $str);
     
   return $str;
}
 
//post数据 过滤
function post_check($post) {
    if(!get_magic_quotes_gpc()) {
        $post = addslashes($post);
    }
    $post = str_replace("_", "\_", $post); //SQL中 _ 代表一个通配符 一个字符
    $post = str_replace("%", "\%", $post); //SQL中 % 代表通配符 任意个字符
    $post = nl2br($post);  //在字符串中的新行(\n)之前插入换行符:
    $post = htmlspecialchars($post);  //把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:
     
    return $post;
}

C语言和C++ C#的区别在什么地方?

按时间顺序说一说这三门语言的基本吧,这样比较一下儿就能知道他们的区别了。

一:C语言。
C语言诞生得非常早,当时人们普遍还习惯用汇编语言编写软件,而且没有什么统一,通用的操作系统,基本上软件都是从0开始写的。C语言的目标就是比汇编方便易用,同时不要损失汇编的表达能力。所以C语言可以看成是“高级的汇编”语言。C语言的源代码基本上可以非常容易地对应到汇编代码,而且可以不需要什么运行时环境的支持。C的特点,简单容易编译,灵活贴近底层。所以一直到现在,一些需要直接和硬件打交道的软件都还是用C语言写的,比如(但不限于)Linux Kernel和一些嵌入式领域。


二:C++ 语言。

C++早期是基于C的,C++早期的编译方法是将C++的代码编译成C代码然后再调用C的编译器来生成机器码。C++的目标是提高编程人员的生产率,哪怕代价是增加编译器的复杂度。而提高编程人员生产率的方法有如下几种:提高抽象层次,支持模块化编程,模块内紧耦合,模块间松耦合,自动化的代码生成等等,这些在C++中都有体现(“有体现”不是说只有C++能做这些,理论上C++能做的事情C和汇编都能做,“有体现”是指C++里面你可以更直接,更自然地做到这些)。面向对象只是C++的一部分,现代的C++的目标是支持多种编程范型,同时并不会离硬件太远。所以C++是非常适合写一些基础架构级软件的,比如编译器,GUI库等等。


三:C#以及.net框架。

时光荏冉,岁月如梭。当进入21世纪的时候,Java的成功已经变成了铁一样的事实。背后的思潮就是managed code的崛起,与之对应的就是C/C++这种native code的衰落。当计算机的性能越来越好,但是好的码农却越来越少,然而对代码的需求却越来越高的时候,业界的选择只剩下一个:运行性能换开发效率,降低从新手到一般可接受水平的曲线。C#就是微软想要复制Java的成功。C#的特点就是:抽象层次高且基本只有一种(面向对象的),运行时支持丰富(垃圾回收等),类库丰富。所以它就是好学,易用,同时兼顾运行效率,尽量优化。说起这个,并不是说越高级的语言就越慢,运行时性能跟很多东西有关。