thinphp5 用input()方法接受 get/post数组 报错问题

症状:

<form>
<input name="id[]" value="1"/>
    <input name="id[]" value="2"/>
    <input name="id[]" value="3"/>
    <input name="id[]" value="4"/>
<button type="submit">提交</button>
</form>

如上表单,提交的id PHP再用 $_POST[‘id’] 接收后,会得到一个数组。

再用tp5 的   input(‘id’); 接受的时候,会报错。

后来参看手册后,发现tp5  使用 input(‘id/a‘) ; 可解决。 阅读详细 »

php环境wamp2.5下载地址

php环境wamp2.5下载地址

https://sourceforge.net/projects/wampserver/files/WampServer%202/Wampserver%202.5/

WampServer 2.5 – 32 and 64 bits

Be sure that you have installed Visual C++ Redistributable for Visual Studio 2012 : VC11 vcredist_x64/86.exe
http://www.microsoft.com/en-us/download/details.aspx?id=30679

Don’t Use previous WampServer Extensions/Addons. 
There are no more compatible with the new wampserver version’s (VC11)

Apache     : 2.4.9
MySQL      : 5.6.17
PHP        : 5.5.12
PHPMyAdmin : 4.1.14
SqlBuddy   : 1.3.3
XDebug     : 2.2.5

Source: readme.txt, updated 2014-05-01

通过php下载文件并重命名

通过php下载文件并重命名

$filename = dirname(__FILE__) . '/oldfilename.jpg';
$out_filename = 'newfilename.jpg';
if( ! file_exists($filename)){
  echo 'Not Found' . $filename;
  exit;
} else {
  // We'll be outputting a file
  header('Accept-Ranges: bytes');
  header('Accept-Length: ' . filesize($filename));
  // It will be called
  header('Content-Transfer-Encoding: binary');
  header('Content-type: application/octet-stream');
  header('Content-Disposition: attachment; filename=' . $out_filename);
  header('Content-Type: application/octet-stream; name=' . $out_filename);
  // The source is in filename
   if(is_file($filename) && is_readable($filename)){
    $file = fopen($filename, "r");
    echo fread($file, filesize($filename));
    fclose($file);
   }
  exit;
}

css+jq固定标题表格table

css+jq固定标题表格table

阅读详细 »

Windows服务器代理软件_ccproxy8.0_(带注册机)

Windows服务器代理软件_ccproxy8.0_(带注册机)

在windows服务上安装的代理软件,支持http代理,secure代理,ftp(web)代理,Gopher代理,socks代理,ftp代理,telent代理等

使用方法参考:http://www.jb51.net/softjc/528239.html

链接: https://pan.baidu.com/s/1slfY9it 密码: z3eq

谷歌代理插件——Proxy-SwitchyOmega_v2.5.2.crx

百度网盘:

链接: https://pan.baidu.com/s/1eS91fhw 密码: 55q9

mysql结果集加序号问题?

mysql结果集加序号问题?
如何在mysql查询后的结果集前加序列,类似oracle的rownum?

首先给出解决方案:
–通过一个初始值为0的变量@rownum,依次递增1来实现行号

SELECT
    @rownum:=@rownum+1 AS rownum,name
FROM temp,
    (SELECT @rownum:=0) temp
WHERE @rownum<4;

给出一般性的语句:

SELECT
    @rownum:=@rownum+1 AS rownum,所需字段
FROM 表名,
    (SELECT @rownum:=0) 表名
WHERE @rownum<N(获取多少行);

然后给出测试案例:
第一步,创建测试表;

mysql> CREATE TABLE temp(id INT(4),name VARCHAR(20));
Query OK, 0 rows affected (0.13 sec)

第二步,插入测试数据;

mysql> INSERT INTO temp VAlUES(1,'robin');
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO temp VAlUES(2,'wentasy');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO temp VAlUES(3,'justdb');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO temp VAlUES(4,'wen');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 4 rows affected (0.03 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 8 rows affected (0.02 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 16 rows affected (0.02 sec)
Records: 16  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 32 rows affected (0.03 sec)
Records: 32  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 64 rows affected (0.04 sec)
Records: 64  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 128 rows affected (0.03 sec)
Records: 128  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 256 rows affected (0.04 sec)
Records: 256  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 512 rows affected (0.05 sec)
Records: 512  Duplicates: 0  Warnings: 0

mysql> INSERT INTO temp SELECT * FROM temp;
Query OK, 1024 rows affected (0.05 sec)
Records: 1024  Duplicates: 0  Warnings: 0

第三步,实现类似Oracle中的rownum效果;
mysql> SELECT
    ->     @rownum:=@rownum+1 AS rownum,name
    -> FROM temp,
    ->     (SELECT @rownum:=0) temp
    -> WHERE @rownum<4;
+--------+---------+
| rownum | name    |
+--------+---------+
|      1 | robin   |
|      2 | wentasy |
|      3 | justdb  |
|      4 | wen     |
+--------+---------+
4 rows in set (0.01 sec)

MySQL 设置数据按条件查询下的序号

ALTER TABLE mytable ADD forder INT DEFAULT 0;

UPDATE mytable r,(
    SELECT a.fid,(@rownum:=@rownum+1) AS forder
    FROM mytable a,(SELECT @rownum:=0) b
    ORDER BY ftype ASC,fnum ASC
) t
SET r.forder=t.forder
WHERE r.fid =t.fid

https://www.cnblogs.com/yjl49/archive/2012/08/21/2649582.html

mysql查询结果添加序列号的方法

第一种方法:
复制代码 代码如下:

select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it

第二种方法:

set @rownum=0;
select @rownum:=@rownum+1 as rownum, t.username from auth_user t limit 1,5;

Apache用.htaccess来实现强制https访问

首先需要帮保证Apache已经开启了  模块

查找 httpd.conf 文件

找到

#LoadModule rewrite_module modules/mod_rewrite.so

去掉前边的#号 ,重启Apache服务器。

———————————-

然后是关于.htaccess文件的设置。

用Apache的.htaccess的重定向规则来实现http强制跳转到https访问网站。
重要提示:必须将代码放到.htaccess文件内容的最前面,以保证重定向优先权。

代码如下:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]

或者

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

或者

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

如果是在子目录,可以用
RewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://www.domain.com/subfolder [R,L]

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} subfolder
RewriteRule ^(.*)$ https://www.domain.com/subfolder [R,L]

将以上代码复制到.htaccess中即可。

商业模式画布是什么?

商业模式画布是会议和头脑风暴的工具,它通常由一面大黑板或干脆一面墙来呈现。这块板子按照一定的顺序被分成九个方格,方格的内容如下::
1)客户细分——你的目标用户群,一个或多个集合
2)价值主张——客户需要的产品或服务,商业上的痛点
3)渠道通路——你和客户如何产生联系,不管是你找到他们还是他们找到你,比如实体店、网店、中介
4)客户关系——客户接触到你的产品后,你们之间应建立怎样的关系,一锤子买卖抑或长期合作
5)收入来源——你将怎样从你提供的价值中取得收益
6)核心资源——为了提供并销售这些价值,你必须拥有的资源,如资金、技术、人才
7)关键业务——商业运作中必须要从事的具体业务
8)重要伙伴——哪些人或机构可以给予战略支持
9)成本结构——你需要在哪些项目付出成本

商业模式画布的优点在于让讨论商业模式的会议变得高效率、可执行,同时产生不止一套的方案,让每个决策者心中留下多种可能性。

css画梯形,css画五角星, css画六角星 ,css画六边形

css画梯形,css画五角星, css画六角星 ,css画六边形

css画梯形

<div class="triangle"></div>
<style>
.triangle {
    border-bottom: 100px solid #F36823;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;

    height: 0px;
    width: 100px;
}
</style>

css画五角星

<div class="triangle"></div>

<style>
.triangle{
    margin: 50px 0;
    position: relative;
    display: block;
    color: #F36823;
    width: 0px;
    height: 0px;
    border-right:  100px solid transparent;
    border-bottom: 70px  solid #F36823;
    border-left:   100px solid transparent;
    -moz-transform:    rotate(35deg);
    -webkit-transform: rotate(35deg);
    -ms-transform:     rotate(35deg);
    -o-transform:      rotate(35deg);
}
  
.triangle:before {
    border-bottom: 80px solid #F36823;
    border-left: 30px solid transparent;
    border-right: 30px solid transparent;
    position: absolute;
    height: 0;
    width: 0;
    top: -45px;
    left: -65px;
    display: block;
    content: '';
    -webkit-transform: rotate(-35deg);
    -moz-transform:    rotate(-35deg);
    -ms-transform:     rotate(-35deg);
    -o-transform:      rotate(-35deg);
}
  
.triangle:after {
    position: absolute;
    display: block;
    color: #F36823;
    top: 3px;
    left: -105px;
    width: 0px;
    height: 0px;
    border-right: 100px solid transparent;
    border-bottom: 70px solid #F36823;
    border-left: 100px solid transparent;
    -webkit-transform: rotate(-70deg);
    -moz-transform:    rotate(-70deg);
    -ms-transform:     rotate(-70deg);
    -o-transform:      rotate(-70deg);
    content: '';
}
</style>

css画六角星

<style>
.triangle{
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 100px solid red;
    position: relative;
}
  
.triangle:after{
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-top: 100px solid red;
    position: absolute;
    content: "";
    top: 30px;
    left: -50px;
}
</style>

css画六边形

<div class="triangle"></div>

<style>
.triangle{
    width: 100px;
    height: 55px;
    background: #F36823;
    position: relative;
}
  
.triangle:before {
    content: "";
    position: absolute;
    top: -25px;
    left: 0;
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 25px solid #F36823;
}
  
.triangle:after {
    content: "";
    position: absolute;
    bottom: -25px;
    left: 0;
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-top: 25px solid #F36823;
}
</style>

https://github.com/FineUploader/fine-uploader

Reset CSS

css Reset

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

/* ----------------Reset Css--------------------- */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video, input  {
    margin: 0;
    padding: 0;
    border: none;
    outline: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {
    -webkit-text-size-adjust: none;
}

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
    display: block;
}

body {
    font-family: arial, sans-serif;
}

ol, ul {
    list-style: none;
}

blockquote, q {
    quotes: none;
}

blockquote:before, blockquote:after, q:before, q:after {
    content: '';
    content: none;
}

ins {
    text-decoration: none;
}

del {
    text-decoration: line-through;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

此段包含HTML5的CSS reset来自:http://html5reset.org/

/* 
html5doctor.com Reset Stylesheet
v1.4.1 
2010-03-01
Author: Richard Clark - http://richclarkdesign.com
*/

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
    margin:0;
    padding:0;
    border:0;
    outline:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}

body {
    line-height:1;
}

:focus {
outline: 1;
}

article,aside,canvas,details,figcaption,figure,
footer,header,hgroup,menu,nav,section,summary { 
    display:block;
}

nav ul {
    list-style:none;
}

blockquote, q {
    quotes:none;
}

blockquote:before, blockquote:after,
q:before, q:after {
    content:'';
    content:none;
}

a {
    margin:0;
    padding:0;
    border:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}

ins {
    background-color:#ff9;
    color:#000;
    text-decoration:none;
}

mark {
    background-color:#ff9;
    color:#000; 
    font-style:italic;
    font-weight:bold;
}

del {
    text-decoration: line-through;
}

abbr[title], dfn[title] {
    border-bottom:1px dotted #000;
    cursor:help;
}

table {
    border-collapse:collapse;
    border-spacing:0;
}

hr {
    display:block;
    height:1px;
    border:0;   
    border-top:1px solid #cccccc;
    margin:1em 0;
    padding:0;
}

input, select {
    vertical-align:middle;
}

js将url查询字符串转换为json数据

js将url查询字符串转换为json数据

function query2Hash(queryStr) {
    var h = {};
    console.log(window.location.search);
    var qArr = (queryStr || window.location.search.replace(/\?/, '')).split('&');
    for (var i = 0,
    len = qArr.length; i < len; i += 1) {
        var kvArr = qArr[i].split('=');
        h[kvArr[0]] = kvArr[1];
    }
    return h;
}

事件DOMContentLoaded和load的区别

事件DOMContentLoaded和load的区别

他们的区别是,触发的时机不一样,先触发DOMContentLoaded事件,后触发load事件。

DOM文档加载的步骤为

1. 解析HTML结构。
2. 加载外部脚本和样式表文件。
3. 解析并执行脚本代码。
4. DOM树构建完成。//DOMContentLoaded   //jQuery.ready
5. 加载图片等外部文件。
6. 页面加载完毕。//load

在第4步,会触发DOMContentLoaded事件。在第6步,触发load事件。

用原生js可以这么写

// 不兼容老的浏览器,兼容写法见[jQuery中ready与load事件](http://www.imooc.com/code/3253),或用jQuery
document.addEventListener("DOMContentLoaded", function() {
   // ...代码...
}, false);

window.addEventListener("load", function() {
    // ...代码...
}, false);

用jQuery这么写

// DOMContentLoaded
$(document).ready(function() {
    // ...代码...
});

//load  
$(document).load(function() {
    // ...代码...
});
//貌似1.8版本之后,load就抛弃了.只能用window.onload()或者addEventListener这两个事件监听页面加载完成

页面滚动到底部 ajax加载内容代码 示例代码

页面滚动到底部 ajax加载内容代码:

html结构:

    <div class="ipshowListA">
        <ul class="clearfix">
        <!--<li class="item">内容块</li>-->
        </ul>
    </div>
    
    <div class="pagesA">
        <div class="more" data-url = "jsonlist.php?page=1" >点击加载更多</div>
        <div class="loading"><!--数据加载中...--></div>
        <div class="nodata">没有更多数据了...</div>
    </div>

js代码:

// JavaScript Document
$(function(){
    
    var $btn_more    = $('.pagesA .more');//更多按钮
    var $btn_loading = $('.pagesA .loading');//载入中
    var $btn_nodata  = $('.pagesA .nodata');//没有数据了
    var $box         = $('.ipshowListA ul');//容器
    var lock = false;
    var nexturl =  $btn_more.data('url');//第一次url
    
    function _more(){
        $btn_more.show();
        $btn_loading.hide();
        $btn_nodata.hide();
    }
    function _loading(){
        $btn_more.hide();
        $btn_loading.show();
        $btn_nodata.hide();
    }
    function _nodata(){
        $btn_more.hide();
        $btn_loading.hide();
        $btn_nodata.show();
    }
    //点击触发 (ajax加载数据)
    $btn_more.on('click',function(){
        ajaxLoad();                       
    });
    //距离底部300触发  (ajax加载数据)
    $(window).on('scroll',function(){
        if( $(document).height() - $(window).scrollTop() - $(window).height() < 300 ){
            ajaxLoad(); 
        }                    
    })
    
    
    //ajax加载数据
    function ajaxLoad(){
        //锁
        if( lock ){return false; }else{ lock = true; }
        _loading();
        $.ajax({
            url:nexturl,
            type:'get',
            dataType:'json',
            success:function(d){
                //{"error":0 , "msg":"ok" , "html":"6666", "nexturl":"jsonlist.php?page=1"} 
                if(d.error == 0 ){
                    //加载成功
                    $box.append( d.html );
                    lock = false;
                    _more();
                    nexturl = d.nexturl; //更新下一页地址
                }else if(d.error == 1 ){
                    //没有数据了
                    _nodata();
                    
                }else{
                    //其他错误
                    alert( d.msg );
                    lock = false;
                }
                
            },
            error:function( a,b,c){
                console.log('ajax错误:', a,b,c );
            }
        })
        
    }
});

php代码:

<?php 
sleep(3);//模拟网络延时 3秒

//返回的 json数据结构
//{"error":0 , "msg":"ok" , "html":"6666", "nexturl":"jsonlist.php?page=1"} 


$page = $_GET['page'];



if( $page > 5 ){
    //没有数据了 
    //{"error":1 , "msg":"没有数据了" , "html":"", "nexturl":""} 
    $j = array();
    $j['error'] = 1;
    $j['msg'] = '没有数据了';
    $j['nexturl'] = '';
    $j['html'] = '';
    
    die( json_encode($j) ); 

}
/////////////////////////////////////////////////////////////////////////////


$page++;

$j = array();
$j['error'] = 0;
$j['msg'] = 'ok';
$j['nexturl'] = 'jsonlist.php?page=' . $page;
$j['html'] = '
    <li class="item">内容块</li>
    <li class="item">内容块</li>
    <li class="item">内容块</li>
    ...
';

die( json_encode($j) );

设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的js代码

// 设置为主页 
//<a href="javascript:void(0)" onclick="SetHome(this,window.location)">设为首页</a>
function SetHome(obj, vrl) {
    try {
        obj.style.behavior = 'url(#default#homepage)';
        obj.setHomePage(vrl);
    } catch(e) {
        if (window.netscape) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            } catch(e) {
                alert("此操作被浏览器拒绝!\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");
            }
            var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
            prefs.setCharPref('browser.startup.homepage', vrl);
        } else {
            alert("您的浏览器不支持,请按照下面步骤操作:1.打开浏览器设置。2.点击设置网页。3.输入:" + vrl + "点击确定。");
        }
    }
}
// 加入收藏 兼容360和IE6
//<a href="javascript:void(0)" onclick="shoucang(document.title,window.location)">加入收藏</a>
function shoucang(sTitle, sURL) {
    try {
        window.external.addFavorite(sURL, sTitle);
    } catch(e) {
        try {
            window.sidebar.addPanel(sTitle, sURL, "");
        } catch(e) {
            alert("加入收藏失败,请使用Ctrl+D进行添加");
        }
    }
}

jQuery笔记_选择器

2.2.判断dom是否为空   js 直接判断  jQuery if( $('#id').length ) 
										if( $('#id').length > 0 )
										if( $('#id')[0] )
										if( $('#id').get(0) )


2.3.选择器

2.3.1 基础选择器
	#id
	.class
	h1
	*
	选择器1 ,选择器2 ,选择器3   


2.3.2 层次选择器(关系)
	空格 
	>
	+   next()
	~   nextAll() 

2.3.3 过滤选择器
	1.基本的过滤选择器
		:first
		:last
		:not('选择器')
		:even   偶数
		:odd    奇数
		:eq(数)  第几个 index 从0 
		:gt(数)  大于index的 对象
		:lt(数)  大于index的 对象   
		:header  标题  h1 . h2 , h3 ...
		:animated  ****正在执行动画的*****
		:focus     获取焦点的(表单元素)
	2.内容过滤选择器
		:contains(text)   选取含有内容 = “text” 的元素
		:empty            空元素
		:has( selector )  有 (。。。。)的元素
		:parent           与empty相反  选取有内容 或 子元素
	3.可见性 过滤选择器
		:hidden           不可见 隐藏域<input type="hidden"/>   display:none   visibility:hidden 
		:visible          可见
	4.属性的过滤选择器
		[属性]
		[属性=值]
		!= 			  属性的值 不等于 XXX
		^=            属性的值 以 xxx 开始
		$=            属性的值 以 xxx 结束
		*=            属性的值 包含 xxx
		|=            属性的值 等于 xxx  或者 以xxx为前缀的
		~=            选择属性的值 
		[属性][属性][属性N]   满足多个属性条件的

	5.子元素 过滤选择器
		:nth-child( index / even / odd/ 表达式 )
		:nth-child(1)     选取每个父元素下的 索引=1的  与:eq(1) 不同
		:nth-child(even)  :even 偶数
		:nth-child(odd)   :odd  奇数
		:nth-child(2n)    2的倍数 :even 偶数
		:nth-child(3n)      3的倍数   :nth-child(3n + 0)    
		:nth-child(3n+1)    3的倍数 +1 
		:nth-child(3n-1)    3的倍数 -1 

		:first-child     选取的是每一个父元素下的 第一个子元素   与 :first 区别
		:last-child      选取的是每一个父元素下的 最后一个子元素   与 :last 区别
		:only-child      选取的是每一个父元素下的 唯一 一个子元素 
	6.表单对象属性 过滤选择器
		:disabled         选择禁用 <input disabled />
		:enabled          可以使用 表单元素 没有 disabled 属性
		:checked          被选中的(单选和多选 )
		:selected         被选中项 (下拉菜单)  $("select option:selected") 

2.3.4 表单选择器
	:input  		选取 input textarea select button( 表单元素 )
	:text   		选取 单行文本输入框  <input type="text" />
	:password       选取 密码输入框  <input type="password" />
	:radio			选取 单选按钮  <input type="radio" />
	:checkbox		选取 多选按钮  <input type="checkbox" />
	:submit		    选取 提交按钮  <input type="submit" />   <button type="submit"></button>
	:reset		    选取 重置按钮  <input type="reset" />    <button type="reset"></button>
	:button		    选取 重置按钮  <input type="button" />   <button type="button"></button>
	:file			选取 上传域   <input type="file" />
	input:hidden    选取 隐藏域   <input type="hidden" />	

2.5 选择中的注意事项
	1.选择器中含有 特殊字符 . # () []

		在写 jQuery选择器的时候  加 \\

		例如:
		<div class="name.aaa#bbb(ccc)ddd[eeee]"></div>
		$('.name\\.aaa\\#bbb\\(ccc\\)ddd\\[eeee\\]')
	2.属性选择器@符号问题 (历史问题)

	3.选择是否有空格问题。
		$('.aaa  .bbb')
		$('.aaa.bbb')






	 return false ;  可以阻止 a链接 和 提交按钮的 默认动作

路由器中的【静态路由】有什么用?

路由器中的静态路由 (静态路由列表)有什么用???

路由器的作用是帮你把数据包发送到某个地址,比如有个数据包要发给115.239.210.27,路由器其实不认识这个地址,那么它就会发给wan口,wan口通向电信服务器那边,而服务器知道这是百度的地址,这样就联通了。这个例子中115.239.210.27这个ip是服务器认识的,但是如果服务器不认识这个地址的话,那么数据包就不能发到目的地址。比如两个路由器串联,A路由到B路由的lan口是互不认识的,当然电信服务器也不可能认识这种内网地址,因此这种情况下路由器就不能帮你转发到目的地址了。所以就有了静态路由这个东西,比如有这样的静态路由192.168.2.0 255.255.255.0 192.168.1.2,意思让路由器一发现有发到192.168.2.0 255.255.255.0这个地方去的数据,就啥也不管直接发到192.168.1.2即可。192.168.1.2这个地址不能路由器自己的地址,但是一定要是某个跟自己连接着的路由器那个口的ip。

举个例子来说明一下:
A路由wan口192.168.0.1 255.255.255.0,lan口192.168.1.1 255.255.255.0
B路由wan口192.168.1.2 255.255.255.0,lan口192.168.2.1 255.255.255.0

A的lan口出来的线接B的wan口,这种情况下,接Awan口的电脑是ping不到B路由lan口下的电脑的。路由器的基本作用是连接两个网络,可以让连接的2个网段互相连通,所以A路由wan下的电脑可以ping通A路由lan口下的电脑。然而A路由却不知道192.168.2.0这个网络,所以无法ping通B路由lan口下的电脑,所以要在A路由下做192.168.2.0 255.255.255.0 192.168.1.2的静态路由
B路由下做192.168.0.0 255.255.255.0 192.168.1.1的静态路由

以上只适用于高端路由器,普通家用路由器是不一样的,后者就算不做静态路由B下的电脑还是可以ping通A下的电脑,反过来就不行,因为普通家用路由器是做了动态路由的

更多:

静态路由表配置实例

http://blog.163.com/zq_llm/blog/static/8280972012111285340893/