<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[我用百度 无所不能]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[踩着蚂蚁看墙角]]></description>
<link>http://hi.baidu.com/phphp</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[wget]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/642806955290ac087af4807e.html]]></link>
        <description><![CDATA[
		
		<p>[转自]http://www.amigosky.com/post/83.htm&nbsp;<br>
</p>
<p>wget是一个从网络上自动下载文件的自由工具。它支持HTTP，HTTPS和FTP协议，可以使用HTTP代理.&nbsp;<br>
<br>
所谓的自动下载是指，wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统，启动一个wget下载任务，然后退出系统，wget将在后台执行直到任务完成，相对于其它大部分浏览器在下载大量数据时需要用户一直的参与，这省去了极大的麻烦。&nbsp;<br>
<br>
wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本，完全重建原始站点的目录结构。这又常被称作"递归下载"。在递归下载的时候，wget遵循Robot&nbsp;Exclusion标准(/robots.txt).&nbsp;wget可以在下载的同时，将链接转换成指向本地文件，以方便离线浏览。&nbsp;<br>
<br>
<br>
wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败，wget会不断的尝试，直到整个文件下载完毕。如果是服务器打断下载过程，它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。&nbsp;<br>
<br>
wget的常见用法<br>
wget的使用格式&nbsp;<br>
<br>
</p>
<div class="code">Usage:&nbsp;wget&nbsp;[OPTION]...&nbsp;[URL]...<br>
</div>
<br>
用wget做站点镜像:&nbsp;<br>
<div class="code">wget&nbsp;-r&nbsp;-p&nbsp;-np&nbsp;-k&nbsp;http://dsec.pku.edu.cn/~usr_name/<br>
#&nbsp;或者<br>
wget&nbsp;-m&nbsp;http://www.tldp.org/LDP/abs/html/<br>
</div>
<br>
在不稳定的网络上下载一个部分下载的文件，以及在空闲时段下载&nbsp;<br>
<div class="code">wget&nbsp;-t&nbsp;0&nbsp;-w&nbsp;31&nbsp;-c&nbsp;http://dsec.pku.edu.cn/BBC.avi&nbsp;-o&nbsp;down.log&nbsp;&amp;<br>
#&nbsp;或者从filelist读入要下载的文件列表<br>
wget&nbsp;-t&nbsp;0&nbsp;-w&nbsp;31&nbsp;-c&nbsp;-B&nbsp;ftp://dsec.pku.edu.cn/linuxsoft&nbsp;-i&nbsp;filelist.txt&nbsp;-o&nbsp;down.log&nbsp;&amp;<br>
</div>
<br>
上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中，在晚上要出去系统前执行上面代码的第二条。&nbsp;<br>
<br>
使用代理下载&nbsp;<br>
<br>
<div class="code">wget&nbsp;-Y&nbsp;on&nbsp;-p&nbsp;-k&nbsp;https://sourceforge.net/projects/wvware/<br>
</div>
<br>
代理可以在环境变量或wgetrc文件中设定&nbsp;<br>
<div class="code">#&nbsp;在环境变量中设定代理<br>
export&nbsp;PROXY=http://211.90.168.94:8080/<br>
#&nbsp;在~/.wgetrc中设定代理<br>
http_proxy&nbsp;=&nbsp;http://proxy.yoyodyne.com:18023/<br>
ftp_proxy&nbsp;=&nbsp;http://proxy.yoyodyne.com:18023/<br>
</div>
<br>
wget各种选项分类列表<br>
启动&nbsp;<br>
<div class="code"><br>
&nbsp;-V,&nbsp;&nbsp;--version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示wget的版本后退出<br>
&nbsp;-h,&nbsp;&nbsp;--help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打印语法帮助<br>
&nbsp;-b,&nbsp;&nbsp;--background&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;启动后转入后台执行<br>
&nbsp;-e,&nbsp;&nbsp;--execute=COMMAND&nbsp;&nbsp;&nbsp;执行`.wgetrc'格式的命令，wgetrc格式参见/etc/wgetrc或~/.wgetrc<br>
</div>
<br>
记录和输入文件&nbsp;<br>
<div class="code"><br>
&nbsp;-o,&nbsp;&nbsp;--output-file=FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把记录写到FILE文件中<br>
&nbsp;-a,&nbsp;&nbsp;--append-output=FILE&nbsp;&nbsp;&nbsp;把记录追加到FILE文件中<br>
&nbsp;-d,&nbsp;&nbsp;--debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打印调试输出<br>
&nbsp;-q,&nbsp;&nbsp;--quiet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;安静模式(没有输出)<br>
&nbsp;-v,&nbsp;&nbsp;--verbose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;冗长模式(这是缺省设置)<br>
&nbsp;-nv,&nbsp;--non-verbose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关掉冗长模式，但不是安静模式<br>
&nbsp;-i,&nbsp;&nbsp;--input-file=FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下载在FILE文件中出现的URLs<br>
&nbsp;-F,&nbsp;&nbsp;--force-html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把输入文件当作HTML格式文件对待<br>
&nbsp;-B,&nbsp;&nbsp;--base=URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将URL作为在-F&nbsp;-i参数指定的文件中出现的相对链接的前缀<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--sslcertfile=FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可选客户端证书<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--sslcertkey=KEYFILE&nbsp;&nbsp;&nbsp;可选客户端证书的KEYFILE<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--egd-file=FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定EGD&nbsp;socket的文件名<br>
</div>
<br>
下载&nbsp;<br>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--bind-address=ADDRESS&nbsp;&nbsp;&nbsp;指定本地使用地址(主机名或IP，当本地有多个IP或名字时使用)<br>
&nbsp;-t,&nbsp;&nbsp;--tries=NUMBER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定最大尝试链接次数(0&nbsp;表示无限制).<br>
&nbsp;-O&nbsp;&nbsp;&nbsp;--output-document=FILE&nbsp;&nbsp;&nbsp;把文档写到FILE文件中<br>
&nbsp;-nc,&nbsp;--no-clobber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不要覆盖存在的文件或使用.#前缀<br>
&nbsp;-c,&nbsp;&nbsp;--continue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接着下载没下载完的文件<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--progress=TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定进程条标记<br>
&nbsp;-N,&nbsp;&nbsp;--timestamping&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不要重新下载文件除非比本地文件新<br>
&nbsp;-S,&nbsp;&nbsp;--server-response&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打印服务器的回应<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--spider&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不下载任何东西<br>
&nbsp;-T,&nbsp;&nbsp;--timeout=SECONDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定响应超时的秒数<br>
&nbsp;-w,&nbsp;&nbsp;--wait=SECONDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;两次尝试之间间隔SECONDS秒<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--waitretry=SECONDS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在重新链接之间等待1...SECONDS秒<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--random-wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在下载之间等待0...2*WAIT秒<br>
&nbsp;-Y,&nbsp;&nbsp;--proxy=on/off&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开或关闭代理<br>
&nbsp;-Q,&nbsp;&nbsp;--quota=NUMBER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置下载的容量限制<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--limit-rate=RATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;限定下载输率<br>
</div>
<br>
目录&nbsp;<br>
<div class="code"><br>
&nbsp;-nd&nbsp;&nbsp;--no-directories&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不创建目录<br>
&nbsp;-x,&nbsp;&nbsp;--force-directories&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;强制创建目录<br>
&nbsp;-nH,&nbsp;--no-host-directories&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不创建主机目录<br>
&nbsp;-P,&nbsp;&nbsp;--directory-prefix=PREFIX&nbsp;&nbsp;&nbsp;将文件保存到目录&nbsp;PREFIX/...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cut-dirs=NUMBER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;忽略&nbsp;NUMBER层远程目录<br>
</div>
<br>
HTTP&nbsp;选项&nbsp;<br>
<div class="code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--http-user=USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定HTTP用户名为&nbsp;USER.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--http-passwd=PASS&nbsp;&nbsp;&nbsp;&nbsp;设定http密码为&nbsp;PASS.<br>
&nbsp;-C,&nbsp;&nbsp;--cache=on/off&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;允许/不允许服务器端的数据缓存&nbsp;(一般情况下允许).<br>
&nbsp;-E,&nbsp;&nbsp;--html-extension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将所有text/html文档以.html扩展名保存<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--ignore-length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;忽略&nbsp;`Content-Length'头域<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--header=STRING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在headers中插入字符串&nbsp;STRING<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-user=USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设定代理的用户名为&nbsp;USER<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-passwd=PASS&nbsp;&nbsp;&nbsp;设定代理的密码为&nbsp;PASS<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--referer=URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在HTTP请求中包含&nbsp;`Referer:&nbsp;URL'头<br>
&nbsp;-s,&nbsp;&nbsp;--save-headers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;保存HTTP头到文件<br>
&nbsp;-U,&nbsp;&nbsp;--user-agent=AGENT&nbsp;&nbsp;&nbsp;&nbsp;设定代理的名称为&nbsp;AGENT而不是&nbsp;Wget/VERSION.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--no-http-keep-alive&nbsp;&nbsp;关闭&nbsp;HTTP活动链接&nbsp;(永远链接).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cookies=off&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不使用&nbsp;cookies.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--load-cookies=FILE&nbsp;&nbsp;&nbsp;在开始会话前从文件&nbsp;FILE中加载cookie<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--save-cookies=FILE&nbsp;&nbsp;&nbsp;在会话结束后将&nbsp;cookies保存到&nbsp;FILE文件中<br>
</div>
<br>
FTP&nbsp;选项&nbsp;<br>
<div class="code">&nbsp;-nr,&nbsp;--dont-remove-listing&nbsp;&nbsp;&nbsp;不移走&nbsp;`.listing'文件<br>
&nbsp;-g,&nbsp;&nbsp;--glob=on/off&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开或关闭文件名的&nbsp;globbing机制<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--passive-ftp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用被动传输模式&nbsp;(缺省值).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--active-ftp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用主动传输模式<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--retr-symlinks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在递归的时候，将链接指向文件(而不是目录)<br>
</div>
<br>
递归下载&nbsp;<br>
<div class="code"><br>
&nbsp;-r,&nbsp;&nbsp;--recursive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;递归下载－－慎用!<br>
&nbsp;-l,&nbsp;&nbsp;--level=NUMBER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大递归深度&nbsp;(inf&nbsp;或&nbsp;0&nbsp;代表无穷).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--delete-after&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在现在完毕后局部删除文件<br>
&nbsp;-k,&nbsp;&nbsp;--convert-links&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转换非相对链接为相对链接<br>
&nbsp;-K,&nbsp;&nbsp;--backup-converted&nbsp;&nbsp;&nbsp;在转换文件X之前，将之备份为&nbsp;X.orig<br>
&nbsp;-m,&nbsp;&nbsp;--mirror&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等价于&nbsp;-r&nbsp;-N&nbsp;-l&nbsp;inf&nbsp;-nr.<br>
&nbsp;-p,&nbsp;&nbsp;--page-requisites&nbsp;&nbsp;&nbsp;&nbsp;下载显示HTML文件的所有图片<br>
</div>
<br>
递归下载中的包含和不包含(accept/reject)&nbsp;<br>
<div class="code"><br>
&nbsp;-A,&nbsp;&nbsp;--accept=LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分号分隔的被接受扩展名的列表<br>
&nbsp;-R,&nbsp;&nbsp;--reject=LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分号分隔的不被接受的扩展名的列表<br>
&nbsp;-D,&nbsp;&nbsp;--domains=LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分号分隔的被接受域的列表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--exclude-domains=LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分号分隔的不被接受的域的列表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--follow-ftp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;跟踪HTML文档中的FTP链接<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--follow-tags=LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分号分隔的被跟踪的HTML标签的列表<br>
&nbsp;-G,&nbsp;&nbsp;--ignore-tags=LIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分号分隔的被忽略的HTML标签的列表<br>
&nbsp;-H,&nbsp;&nbsp;--span-hosts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当递归时转到外部主机<br>
&nbsp;-L,&nbsp;&nbsp;--relative&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仅仅跟踪相对链接<br>
&nbsp;-I,&nbsp;&nbsp;--include-directories=LIST&nbsp;&nbsp;&nbsp;允许目录的列表<br>
&nbsp;-X,&nbsp;&nbsp;--exclude-directories=LIST&nbsp;&nbsp;&nbsp;不被包含目录的列表<br>
&nbsp;-np,&nbsp;--no-parent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不要追溯到父目录<br>
</div>
<br>
问题<br>
在递归下载的时候，遇到目录中有中文的时候，wget创建的本地目录名会用URL编码规则处理。如"天网防火墙"会被存为"%CC%EC%CD%F8%B7%C0%BB%F0%C7%BD",这造成阅读上的极大不方便。&nbsp;<br> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Shell">Shell</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/642806955290ac087af4807e.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-30  16:54</pubDate>
        <category><![CDATA[Shell]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/642806955290ac087af4807e.html</guid>
</item>

<item>
        <title><![CDATA[netsh]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/5ec92dd194e815389b502791.html]]></link>
        <description><![CDATA[
		
		<p>[转载]用netsh命令完成网络设置的导入导出以及快速修改</p>
<p>&nbsp;&nbsp;每次查看或者修改网络设置信息非常麻烦，特别是当你给QQ上的MM进行帮助指导的时候，经常是你解释了半天而她不知所云。那么有没有更加方便的方法能够一次性的把网络设置保存到一个文件，或者通过编辑一个文件然后用命令将这个文件导入从而实现网络参数的修改呢？其实我们使用网络DOS命令的NETSH就完全可以实现。</p>
<p>&nbsp;&nbsp;适用系统：2000/XP/2003</p>
<p>&nbsp;&nbsp;实现过程：</p>
<p>&nbsp;&nbsp;STEP1：将本机的网络设置导出成TXT文件。方法是进入命令行模式后输入“netsh&nbsp;-c&nbsp;interface&nbsp;dump&gt;c:\web1.txt”（不含引号），这样就把当前的网络设置保存到c:\web1.txt文件下。</p>
<p>&nbsp;&nbsp;STEP2：我们打开c:\web1.txt后就会看到保存的网络参数了，数据非常全面。（如图4）我们可以利用这个命令让MM把网络参数保存到一个TXT文件中，然后再把这个文件发给你，这样你对她的网络配置就会了如执掌，解决起故障来会更加轻松。</p>
<p>&nbsp;&nbsp;STEP3：导入网络参数设置也非常简单，只要按照自己希望的参数编辑好c:\web1.txt这个文件，然后在命令行模式下输入netsh&nbsp;-f&nbsp;c:\web1.txt，就可以把该文件的网络参数信息保存到本机，实现了网络设置的快速更改。该方法非常适合于将已编辑好的文件发回给MM，让其通过这个网络DOS命令实现设置新的网络参数。<br>
&nbsp;<br>
</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/5ec92dd194e815389b502791.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-29  14:39</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/5ec92dd194e815389b502791.html</guid>
</item>

<item>
        <title><![CDATA[Windows 中的启动项]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/082660f46e1fc7d9f2d38599.html]]></link>
        <description><![CDATA[
		
		转自<a href="http://hi.baidu.com/umu618/blog/item/eecd3aadcaa9f9094b36d6e4.html">http://hi.baidu.com/umu618/blog/item/eecd3aadcaa9f9094b36d6e4.html</a><br>
本篇比较全面地总结一下&nbsp;Windows&nbsp;里可以启动程序的地方，手动查毒的时候可以参考！<br>
&nbsp;<br>
1、古老的&nbsp;BAT&nbsp;和&nbsp;SYS<br>
　　从&nbsp;Win16&nbsp;和&nbsp;Win9X&nbsp;时代遗留下来的，%BOOTDRV%\Autoexec.bat、%windir%\WinStart.bat、%windir%\DosStart.bat，没见过不稀奇，什么意思可以体会出来，不解释了。%BOOTDRV%\Config.sys&nbsp;装载&nbsp;16&nbsp;位设备驱动用的，最常见的是&nbsp;DOS&nbsp;下要用光驱，都是在这个文件配制的。<br>
&nbsp;<br>
2、古老的&nbsp;INI<br>
　　从&nbsp;Win16&nbsp;时代遗留下来的，%windir%\Win.ini（load\run）、%windir%\System.ini（shell）。<br>
&nbsp;<br>
3、常规的“启动”<br>
　　开始菜单－程序里那个，注意隐藏、系统属性的文件不会显示在菜单里。而且这个项是多用户的，也就是说这里显示的是“All&nbsp;Users”和当前用户的“启动”目录。一般系统装在&nbsp;C&nbsp;盘的话就是“C:\Documents&nbsp;and&nbsp;Settings\All&nbsp;Users\「开始」菜单\程序\启动”。检查这个启动项的时候，应该把所有用户都查看一下，包括&nbsp;Default&nbsp;User&nbsp;的。不过这些启动文件夹，是可以该位置的，它们都是由注册表决定的。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders&nbsp;下的&nbsp;Common&nbsp;Startup，HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell&nbsp;Folders&nbsp;和&nbsp;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User&nbsp;Shell&nbsp;Folders&nbsp;下的&nbsp;Startup。<br>
&nbsp;<br>
4、注册表中专门的“启动”<br>
　　HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run，对当前用户有效；　　HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run，对默认用户有效，比如匿名用户、SYSTEM；　　HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run，对本机所有用户有效。<br>
&nbsp;<br>
5、注册表中专门用来安装程序的“启动”<br>
　　把上面的&nbsp;Run&nbsp;换成&nbsp;RunOnce、RunOnceEx，也就是只运行一次，运行后系统就把这个值删除。这是给安装、更新程序用的，只需要运行一次。WinNT&nbsp;系统可以用gpedit.msc&nbsp;把这个项设置为忽略，在“计算机配制-管理模板-系统-登录”。<br>
&nbsp;<br>
6、注册表中用来运行系统服务的“启动”<br>
　　把３的&nbsp;Run&nbsp;换成&nbsp;RunServices。这个在&nbsp;Win98&nbsp;下据说是把一般的程序当系统服务来运行，可以不出现在任务列表里，我试过把屏保程序放这里启动，结果出现的是屏保程序的设置界面，在&nbsp;WinNT&nbsp;下我就没用过这个项了。同理，还有&nbsp;RunServicesOnce。<br>
&nbsp;<br>
7、注册表中册组策略用的“启动”　　<br>
&nbsp;&nbsp;&nbsp;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run，这个项比较少人知道。<br>
&nbsp;<br>
8、注册表中对&nbsp;Win.ini&nbsp;和&nbsp;System.ini&nbsp;的替代Win.ini&nbsp;的&nbsp;load&nbsp;和&nbsp;run&nbsp;对应&nbsp;HKEY_CURRENT_USER\Software\Microsoft\Windows&nbsp;NT\CurrentVersion\Windows&nbsp;下的&nbsp;load&nbsp;和&nbsp;run。System.ini&nbsp;的&nbsp;shell&nbsp;对应<br>
&nbsp;&nbsp;&nbsp;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&nbsp;NT\CurrentVersion\Winlogon&nbsp;下的&nbsp;Shell，另外这个下面还有&nbsp;UIHost、userinit、VmApplet&nbsp;也都可以启动程序。NT&nbsp;有用到一个映射，可以研究一下<br>
&nbsp;&nbsp;&nbsp;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&nbsp;NT\CurrentVersion\IniFileMapping&nbsp;下的&nbsp;system.ini&nbsp;和&nbsp;win.ini&nbsp;两个子键。<br>
&nbsp;<br>
9、注册表中全局&nbsp;DLL&nbsp;“启动”<br>
　　HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&nbsp;NT\CurrentVersion\Windows&nbsp;下的&nbsp;AppInit_DLLs。<br>
&nbsp;<br>
10、Windows&nbsp;NT&nbsp;开关机脚本<br>
　　%windir%\system32\GroupPolicy\Machine\Scripts&nbsp;下有两个目录，Startup&nbsp;存放开机脚本，Shutdown&nbsp;存放关机脚本。这个要配合注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\System\Scripts，下面有&nbsp;Startup、Shutdown&nbsp;两个子键，再下面会有数字命名的键，对着研究就知道了。<br>
&nbsp;<br>
11、Windows&nbsp;NT&nbsp;系统服务<br>
　　HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services&nbsp;下。<br>
&nbsp;<br>
12、文件关联<br>
　　HKEY_CLASSES_ROOT&nbsp;下，以前的冰河关联了&nbsp;.txt&nbsp;文件，如果没注意，杀了一个后，双击&nbsp;.txt&nbsp;文件，又中了。<br>
&nbsp;<br>
13、CMD&nbsp;AutoRun（很少人知道）<br>
　　HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command&nbsp;Processor&nbsp;下的&nbsp;AutoRun，在运行&nbsp;cmd.exe&nbsp;的时候，这里的命令会被执行。如果我们在这里写上&nbsp;exit，则&nbsp;cmd&nbsp;一出现马上又关闭，应该用&nbsp;cmd&nbsp;/d&nbsp;来避免。建议如果是通过快捷方式运行的应该加上&nbsp;/d&nbsp;的参数，如果是通过“运行”运行的应该多打一下“　/d”，这样可以减少危险。<br>
&nbsp;<br>
14、根目录下的&nbsp;AutoRun.inf<br>
　　在这个文件里可以定义驱动器的图标和右键菜单，还有双击默认执行的命令。不过可以关闭的，把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer&nbsp;下的&nbsp;NoDriveTypeAutoRun&nbsp;设置为&nbsp;DWORD:ff&nbsp;整个世界就清净了。<br>
&nbsp;<br>
15、其他软件自定义的启动项<br>
　　比如&nbsp;OFFICE&nbsp;的宏就可以在启动&nbsp;Word&nbsp;的时候执行，宏代码可以调用外部程序；QQ装皮肤用的是一个&nbsp;.VBS&nbsp;脚本程序……<br>
&nbsp;<br>
16、驱动<br>
　　和&nbsp;Win32&nbsp;系统服务一样是在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services&nbsp;下，不过&nbsp;Type&nbsp;=&nbsp;1（服务一般是&nbsp;20）。而且文件一般都放在&nbsp;C:\WINDOWS\system32\drivers。驱动运行在&nbsp;Ring0&nbsp;的，服务虽然是&nbsp;SYSTEM&nbsp;身份运行，不过是在&nbsp;Ring3，所以还是不可以直接访问硬件。<br>
&nbsp;<br>
17、GINA&nbsp;DLL<br>
　　HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows&nbsp;NT\CurrentVersion\Winlogon&nbsp;下的&nbsp;GinaDLL，这个如果存在，一般是&nbsp;Gina&nbsp;木马，或者是一些指纹、虹膜验证的程序，比如是&nbsp;IBM&nbsp;笔记本有见过带指纹验证的，省去输入登录密码的麻烦。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Windows">Windows</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/082660f46e1fc7d9f2d38599.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-25  15:48</pubDate>
        <category><![CDATA[Windows]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/082660f46e1fc7d9f2d38599.html</guid>
</item>

<item>
        <title><![CDATA[2007-01-21]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/614e173317a174f81b4cff70.html]]></link>
        <description><![CDATA[
		
		<p>你说的原来是那个照片啊，认不出来了，很好。<br>
不过我好好的，干吗又扯我出来，佛本无心。<br>
新增相册一个，俊男靓女，不错，很般配的。<br>
<font color="#ffffff">爱生活，爱老婆</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Life">Life</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/614e173317a174f81b4cff70.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-22  00:34</pubDate>
        <category><![CDATA[Life]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/614e173317a174f81b4cff70.html</guid>
</item>

<item>
        <title><![CDATA[2007-01-20]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/245d90d4ea8d1901a18bb7a4.html]]></link>
        <description><![CDATA[
		
		<p>你们都在一起，跟我说什么.<br>
这几天郁闷的，得好好计划了.</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Life">Life</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/245d90d4ea8d1901a18bb7a4.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-21  03:43</pubDate>
        <category><![CDATA[Life]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/245d90d4ea8d1901a18bb7a4.html</guid>
</item>

<item>
        <title><![CDATA[CSS标题自动截取]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/c73f698b48632412c8fc7ac5.html]]></link>
        <description><![CDATA[
		
		&lt;html&gt;<br>
&lt;body&gt;<br>
&lt;style&gt;<br>
.ellipsis&nbsp;span&nbsp;{<br>
&nbsp;&nbsp;&nbsp;white-space:nowrap;<br>
&nbsp;&nbsp;<font color="#ff0000">&nbsp;text-overflow:ellipsis;&nbsp;/*&nbsp;for&nbsp;internet&nbsp;explorer&nbsp;*/<br>
</font><font color="#ff0000">&nbsp;&nbsp;&nbsp;overflow:hidden;</font><br>
&nbsp;&nbsp;&nbsp;width:190px;<br>
&nbsp;&nbsp;&nbsp;display:block;<br>
}<br>
html&gt;body&nbsp;.ellipsis&nbsp;{<br>
&nbsp;&nbsp;&nbsp;clear:both;<br>
}<br>
html&gt;body&nbsp;.ellipsis&nbsp;span:after&nbsp;{<br>
&nbsp;&nbsp;&nbsp;content:&nbsp;"...";<br>
}<br>
html&gt;body&nbsp;.ellipsis&nbsp;span&nbsp;{<br>
&nbsp;&nbsp;&nbsp;max-width:180px;<br>
&nbsp;&nbsp;&nbsp;width:auto&nbsp;!important;<br>
&nbsp;&nbsp;&nbsp;float:left;<br>
}<br>
&lt;/style&gt;<br>
&lt;div&nbsp;class="ellipsis"&gt;<br>
&lt;span&gt;A&nbsp;very,&nbsp;very,&nbsp;very,&nbsp;very,&nbsp;very,&nbsp;very,&nbsp;very,&nbsp;very,&nbsp;very&nbsp;long&nbsp;text&lt;/span&gt;<br>
&lt;/div&gt; 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Css">Css</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/c73f698b48632412c8fc7ac5.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-20  11:54</pubDate>
        <category><![CDATA[Css]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/c73f698b48632412c8fc7ac5.html</guid>
</item>

<item>
        <title><![CDATA[mm明天考运筹]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/920c690e87994dca7bcbe1fd.html]]></link>
        <description><![CDATA[
		
		<p>mm准备得那么充分，肯定考得好的了，</p>
<p><font color="#ffffff">爱生活,&nbsp;&nbsp;爱老婆</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Life">Life</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/920c690e87994dca7bcbe1fd.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-18  01:20</pubDate>
        <category><![CDATA[Life]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/920c690e87994dca7bcbe1fd.html</guid>
</item>

<item>
        <title><![CDATA[[转]Rediff Bol Downloader ActiveX控件 执行]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/3c54c1b42fdfa1738bd4b205.html]]></link>
        <description><![CDATA[
		
		<p>Rediff&nbsp;Bol&nbsp;Downloader&nbsp;ActiveX控件<br>
&lt;html&gt;<br>
&lt;body&gt;<br>
&lt;OBJECT&nbsp;id="rboldwn"&nbsp;WIDTH=445&nbsp;HEIGHT=40&nbsp;classid="clsid:<font color="#ff0000">BADA82CB-BF48-4D76-9611-78E2C6F49F03</font>"&nbsp;codebase="<a href="http://imdownloads.rediff.com/newbol/Bol.CAB">http://imdownloads.rediff.com/newbol/Bol.CAB</a>"&gt;<br>
&lt;/OBJECT&gt;</p>
<p>&lt;script&nbsp;language="vbscript"&gt;<br>
&nbsp;rboldwn.url&nbsp;=&nbsp;"<a href="file:///C:/windows/system32/notepad.exe">file:///C:/windows/system32/notepad.exe</a>"<br>
&nbsp;rboldwn.fontsize&nbsp;=&nbsp;14<br>
&nbsp;rboldwn.barcolor&nbsp;=&nbsp;EE4E00<br>
&nbsp;rboldwn.start&nbsp;=&nbsp;"start"<br>
&lt;/script&gt;</p>
<p>&lt;/body&gt;<br>
&lt;/html&gt;</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Javascript">Javascript</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/3c54c1b42fdfa1738bd4b205.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-09  06:47</pubDate>
        <category><![CDATA[Javascript]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/3c54c1b42fdfa1738bd4b205.html</guid>
</item>

<item>
        <title><![CDATA[[转]系统颜色选择器]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/72deec36e1eff6310a55a93f.html]]></link>
        <description><![CDATA[
		
		<code><span style="COLOR: #000000">&lt;OBJECT&nbsp;id=dlgHelper&nbsp;CLASSID="clsid:<font color="#ff0000">3050f819-98b5-11cf-bb82-00aa00bdce0b</font>"&nbsp;width="0px"&nbsp;height="0px"&gt;&lt;/OBJECT&gt;&nbsp;&nbsp;<br>
&lt;script&gt;&nbsp;<br>
var&nbsp;oldColor&nbsp;=&nbsp;"0099cc";&nbsp;<br>
function&nbsp;returnColor(){&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;Hcolor&nbsp;=&nbsp;dlgHelper.ChooseColorDlg(oldColor).toString(16);&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;with(event.srcElement){&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;((Hcolor.length&lt;6)?"000000".substring(0,6-Hcolor.length):"")&nbsp;+&nbsp;Hcolor;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;style.backgroundColor&nbsp;=&nbsp;((Hcolor.length&lt;6)?"000000".substring(0,6-Hcolor.length):"")&nbsp;+&nbsp;Hcolor;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;oldColor&nbsp;=&nbsp;Hcolor&nbsp;<br>
}&nbsp;<br>
&lt;/script&gt;&nbsp;<br>
&lt;input&nbsp;type="text"&nbsp;value="#0099CC"&nbsp;size="12"&nbsp;onclick="returnColor()"&nbsp;style="background-color:&nbsp;#0099CC"&gt;</span>&nbsp;</code> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Javascript">Javascript</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/72deec36e1eff6310a55a93f.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-09  04:03</pubDate>
        <category><![CDATA[Javascript]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/72deec36e1eff6310a55a93f.html</guid>
</item>

<item>
        <title><![CDATA[佛本无心]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/5b21c2f970c0ed59242df27d.html]]></link>
        <description><![CDATA[
		
		<p>电话掉了</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Life">Life</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/5b21c2f970c0ed59242df27d.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-08  00:22</pubDate>
        <category><![CDATA[Life]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/5b21c2f970c0ed59242df27d.html</guid>
</item>

<item>
        <title><![CDATA[php5 上传钩子 (Upload Progress Meter extension for PHP 5.2)]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/c435861615442351f3de3289.html]]></link>
        <description><![CDATA[
		
		<p><span style="COLOR: #000000"><font face="NSimsun"><span style="COLOR: #0000bb">php5&nbsp;上传钩子&nbsp;(Upload&nbsp;Progress&nbsp;Meter&nbsp;extension&nbsp;for&nbsp;PHP&nbsp;5.2)<br>
体验:&nbsp;<a href="http://progphp.com/upload.php">http://progphp.com/upload.php</a><br>
代码:&nbsp;<a href="http://progphp.com/upload.phps">http://progphp.com/upload.phps</a><br>
其它:&nbsp;<a target="_blank" href="http://www.bitflux.ch/mo/archive/2006/09/28/upload-progress-meter-extension-for-php-5-2.html">http://www.bitflux.ch/...php-5-2.html</a></span></font></span></p>
<p><span style="COLOR: #000000"><font face="NSimsun"><span style="COLOR: #0000bb">&lt;?php<br>
</span><span style="COLOR: #007700">if(</span><span style="COLOR: #0000bb">$_SERVER</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">'REQUEST_METHOD'</span><span style="COLOR: #007700">]==</span><span style="COLOR: #dd0000">'POST'</span></font><font face="NSimsun"><span style="COLOR: #007700">)&nbsp;{<br>
&nbsp;&nbsp;</span><span style="COLOR: #0000bb">$status&nbsp;</span><span style="COLOR: #007700">=&nbsp;</span><span style="COLOR: #0000bb">apc_fetch</span><span style="COLOR: #007700">(</span><span style="COLOR: #dd0000">'upload_'</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">$_POST</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">'APC_UPLOAD_PROGRESS'</span></font><font face="NSimsun"><span style="COLOR: #007700">]);<br>
&nbsp;&nbsp;</span><span style="COLOR: #0000bb">$status</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">'done'</span><span style="COLOR: #007700">]=</span><span style="COLOR: #0000bb">1</span></font><font face="NSimsun"><span style="COLOR: #007700">;<br>
&nbsp;&nbsp;echo&nbsp;</span><span style="COLOR: #0000bb">json_encode</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$status</span></font><font face="NSimsun"><span style="COLOR: #007700">);<br>
&nbsp;&nbsp;exit;<br>
}&nbsp;else&nbsp;if(isset(</span><span style="COLOR: #0000bb">$_GET</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">'progress_key'</span></font><font face="NSimsun"><span style="COLOR: #007700">]))&nbsp;{<br>
&nbsp;&nbsp;</span><span style="COLOR: #0000bb">$status&nbsp;</span><span style="COLOR: #007700">=&nbsp;</span><span style="COLOR: #0000bb">apc_fetch</span><span style="COLOR: #007700">(</span><span style="COLOR: #dd0000">'upload_'</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">$_GET</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">'progress_key'</span></font><font face="NSimsun"><span style="COLOR: #007700">]);<br>
&nbsp;&nbsp;echo&nbsp;</span><span style="COLOR: #0000bb">json_encode</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$status</span></font><span style="COLOR: #007700"><font face="NSimsun">);<br>
&nbsp;&nbsp;exit;<br>
}<br>
</font></span><font face="NSimsun"><span style="COLOR: #0000bb">?&gt;<br>
</span>&lt;html&gt;<br>
&lt;head&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/yahoo.js"&gt;&lt;/script&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/event.js"&gt;&lt;/script&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/dom.js"&gt;&lt;/script&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/animation.js"&gt;&lt;/script&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/dragdrop.js"&gt;&lt;/script&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/connection.js"&gt;&lt;/script&gt;<br>
&lt;script&nbsp;type="text/javascript"&nbsp;src="/yui/container.js"&gt;&lt;/script&gt;<br>
&lt;link&nbsp;rel="stylesheet"&nbsp;type="text/css"&nbsp;href="/yui/build/container/assets/container.css"&nbsp;/&gt;<br>
&lt;script&nbsp;type="text/javascript"&gt;<br>
var&nbsp;fN&nbsp;=&nbsp;function&nbsp;callBack(o)&nbsp;{<br>
&nbsp;&nbsp;var&nbsp;resp&nbsp;=&nbsp;eval('('&nbsp;+&nbsp;o.responseText&nbsp;+&nbsp;')');<br>
&nbsp;&nbsp;var&nbsp;rate&nbsp;=&nbsp;parseInt(resp['rate']/1024);<br>
&nbsp;&nbsp;if(resp['cancel_upload'])&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;txt="Cancelled&nbsp;after&nbsp;"+resp['current']+"&nbsp;bytes!";&nbsp;<br>
&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;txt=resp['total']+"&nbsp;bytes&nbsp;uploaded!";<br>
&nbsp;&nbsp;}<br>
&nbsp;&nbsp;txt&nbsp;+=&nbsp;"&lt;br&gt;Upload&nbsp;rate&nbsp;was&nbsp;"+rate+"&nbsp;kbps.";<br>
&nbsp;&nbsp;document.getElementById('pbar').style.width&nbsp;=&nbsp;'100%';<br>
&nbsp;&nbsp;document.getElementById('ppct').innerHTML&nbsp;=&nbsp;"100%";<br>
&nbsp;&nbsp;document.getElementById('ptxt').innerHTML&nbsp;=&nbsp;txt;<br>
&nbsp;&nbsp;setTimeout("progress_win.hide();&nbsp;window.location.reload(true);",2000);<br>
}<br>
var&nbsp;callback&nbsp;=&nbsp;{&nbsp;upload:fN&nbsp;}<br>
<br>
var&nbsp;fP&nbsp;=&nbsp;function&nbsp;callBack(o)&nbsp;{<br>
&nbsp;&nbsp;var&nbsp;resp&nbsp;=&nbsp;eval('('&nbsp;+&nbsp;o.responseText&nbsp;+&nbsp;')');<br>
&nbsp;&nbsp;if(!resp['done'])&nbsp;{&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(resp['total'])&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;pct&nbsp;=&nbsp;parseInt(100*(resp['current']/resp['total']));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('pbar').style.width&nbsp;=&nbsp;''+pct+'%';<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('ppct').innerHTML&nbsp;=&nbsp;"&nbsp;"+pct+"%";<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('ptxt').innerHTML&nbsp;=&nbsp;resp['current']+"&nbsp;of&nbsp;"+resp['total']+"&nbsp;bytes";<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;setTimeout("update_progress()",500);<br>
&nbsp;&nbsp;}&nbsp;else&nbsp;if(resp['cancel_upload'])&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;txt="Cancelled&nbsp;after&nbsp;"+resp['current']+"&nbsp;bytes!";&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('ptxt').innerHTML&nbsp;=&nbsp;txt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;setTimeout("progress_win.hide();&nbsp;window.location.reload(true);",2000);<br>
&nbsp;&nbsp;}<br>
}<br>
var&nbsp;progress_callback&nbsp;=&nbsp;{&nbsp;success:fP&nbsp;}<br>
<br>
function&nbsp;update_progress()&nbsp;{<br>
&nbsp;&nbsp;progress_key&nbsp;=&nbsp;document.getElementById('progress_key').value;<br>
&nbsp;&nbsp;YAHOO.util.Connect.asyncRequest('GET','upload.php?progress_key='+progress_key,&nbsp;progress_callback);<br>
}<br>
<br>
var&nbsp;progress_win;<br>
<br>
function&nbsp;postForm(target,formName)&nbsp;{<br>
&nbsp;&nbsp;YAHOO.util.Connect.setForm(formName,true);<br>
&nbsp;&nbsp;YAHOO.util.Connect.asyncRequest('POST',target,callback);<br>
/*&nbsp;Is&nbsp;there&nbsp;some&nbsp;event&nbsp;that&nbsp;triggers&nbsp;on&nbsp;an&nbsp;aborted&nbsp;file&nbsp;upload?&nbsp;*/<br>
/*&nbsp;&nbsp;&nbsp;YAHOO.util.Event.addListener(window,&nbsp;"abort",&nbsp;function&nbsp;()&nbsp;{&nbsp;alert('abort')&nbsp;}&nbsp;);&nbsp;*/<br>
&nbsp;&nbsp;progress_win&nbsp;=&nbsp;new&nbsp;YAHOO.widget.Panel("progress_win",&nbsp;{&nbsp;width:"420px",&nbsp;fixedcenter:false,&nbsp;underlay:"shadow",&nbsp;close:false,&nbsp;draggable:true,&nbsp;modal:true,&nbsp;effect:{effect:YAHOO.widget.ContainerEffect.FADE,&nbsp;duration:0.3}&nbsp;}&nbsp;);<br>
&nbsp;&nbsp;progress_win.setHeader("Uploading&nbsp;"+document.getElementById('test_file').value+"&nbsp;...");<br>
&nbsp;&nbsp;progress_win.setBody('&lt;div&nbsp;style="height:&nbsp;1em;&nbsp;width:&nbsp;400px;&nbsp;border:1px&nbsp;solid&nbsp;#000;"&gt;&nbsp;&lt;div&nbsp;id="pbar"&nbsp;style="background:&nbsp;#99e;&nbsp;height:&nbsp;98%;&nbsp;width:0%;&nbsp;float:left;"&gt;&amp;nbsp;&lt;/div&gt;&nbsp;&lt;div&nbsp;id="ppct"&nbsp;style="height:&nbsp;90%;&nbsp;position:&nbsp;absolute;&nbsp;margin:&nbsp;1&nbsp;0&nbsp;0&nbsp;185;"&gt;0%&lt;/div&gt;&lt;/div&gt;&lt;div&nbsp;id="ptxt"&nbsp;style="margin:&nbsp;3&nbsp;0&nbsp;0&nbsp;5"&gt;0&nbsp;of&nbsp;0&nbsp;bytes&lt;/div&gt;');<br>
&nbsp;&nbsp;progress_win.render(document.body);<br>
&nbsp;&nbsp;update_progress();<br>
}<br>
&lt;/script&gt;<br>
&lt;/head&gt;<br>
&lt;body&gt;<br>
&nbsp;&lt;form&nbsp;enctype="multipart/form-data"&nbsp;id="upload_form"&nbsp;action=""&nbsp;onsubmit="postForm('upload.php','upload_form');&nbsp;return&nbsp;false;"&nbsp;method="POST"&gt;<br>
&nbsp;&nbsp;&lt;input&nbsp;type="hidden"&nbsp;name="APC_UPLOAD_PROGRESS"&nbsp;id="progress_key"&nbsp;value="<span style="COLOR: #0000bb">&lt;?php&nbsp;</span><span style="COLOR: #007700">echo&nbsp;</span><span style="COLOR: #0000bb">uniqid</span><span style="COLOR: #007700">()</span><span style="COLOR: #0000bb">?&gt;</span>"/&gt;<br>
&nbsp;&nbsp;&lt;input&nbsp;type="file"&nbsp;id="test_file"&nbsp;name="test_file"/&gt;&lt;br/&gt;<br>
&nbsp;&nbsp;&lt;input&nbsp;type="submit"&nbsp;value="Upload!"/&gt;<br>
&nbsp;&lt;/form&gt;<br>
&nbsp;&lt;div&nbsp;id="progress_win"&gt;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class="hd"&nbsp;style="color:&nbsp;#222;&nbsp;background:&nbsp;#bbb"&gt;&lt;/div&gt;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class="bd"&gt;&lt;/div&gt;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;class="ft"&gt;&lt;/div&gt;&nbsp;<br>
&nbsp;&lt;/div&gt;&nbsp;<br>
&lt;/body&gt;<br>
&lt;/html&gt;</font><br>
</span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/c435861615442351f3de3289.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-07  02:49</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/c435861615442351f3de3289.html</guid>
</item>

<item>
        <title><![CDATA[MIME邮件]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/4d3ea212eaca4fcec3fd7800.html]]></link>
        <description><![CDATA[
		
		<p><font size=3> </font></p>
<p class=bhw98><strong class=bhw98>Q</strong> 什么是MIME？什么是MIME邮件？ 
<p class=bhw98><strong class=bhw98>A</strong> MIME, 全称为“Multipurpose Internet Mail Extensions”, 比较确切的中文名称为“多用途互联网邮件扩展”。它是当前广泛应用的一种电子邮件技术规范，基本内容定义于RFC 2045-2049。 
<p class=bhw98>自然，MIME邮件就是符合MIME规范的电子邮件，或者说根据MIME规范编码而成的电子邮件。 
<p class=bhw98>在MIME出台之前，使用RFC 822只能发送基本的ASCII码文本信息，邮件内容如果要包括二进制文件、声音和动画等，实现起来非常困难。MIME提供了一种可以在邮件中附加多种不同编码文件的方法，弥补了原来的信息格式的不足。实际上不仅仅是邮件编码，现在MIME经成为HTTP协议标准的一个部分。 
<p class=bhw98>下面举几个MIME邮件的例子，让我们先对MIME编码的格式有个直观的印象。例1是最简单的，只带纯文本正文，基本上就是RFC 822格式；例2复杂一些，包含纯文本和超文本正文；例3是最复杂的，包含纯文本正文、超文本正文、内嵌资源和文件附件。其中，行号和行号后的空格是为了分析方便而另外加的，“... ... ... ...”表示此处省略了大段编码。 
<p class=bhw98>例1 <pre class=bhw98><code class=bhw98>   1 Date: Thu, 18 Apr 2002 09:32:45 +0800
   2 From: &lt;bhw98@sina.com&gt;
   3 To: &lt;bhwang@jlonline.com&gt;
   4 Subject: Test
   5 Mime-Version: 1.0
   6 Content-Type: text/plain; charset="iso-8859-1"
   7
   8 This is a simple mail.
   9</code></pre>
<p class=bhw98>例2 <pre class=bhw98><code class=bhw98>   1 From: "bhw98" &lt;bhw98@sina.com&gt;
   2 Reply-To: bhw98@sina.com
   3 To: &lt;bluesky7810@163.com&gt;
   4 Subject: Re: help
   5 X-Mailer: Foxmail 4.2 [cn]
   6 Mime-Version: 1.0
   7 Content-Type: multipart/alternative;
   8  boundary="=====002_Dragon307572345230_====="
   9
  10
  11 This is a multi-part message in MIME format.
  12
  13 --=====002_Dragon307572345230_=====
  14 Content-Type: text/plain; charset="GB2312"
  15 Content-Transfer-Encoding: quoted-printable
  16
  17 bluesky7810=A3=AC=C4=FA=BA=C3=A3=A1
  18
  19 =A1=A1=A1=A1=D4=DA=CF=C2=C6=AA=D7=EE=BA=F3=BF=C9=D2=D4=CF=C2=D4=D8=B0=A1=A3=AC=C4=E3
     ... ...  ... ...
  30 =A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A1=A12003-04-07
  31
  32 --=====002_Dragon307572345230_=====
  33 Content-Type: text/html; charset="GB2312"
  34 Content-Transfer-Encoding: quoted-printable
  35
  36 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;
  37 &lt;HTML&gt;&lt;HEAD&gt;
  38 &lt;META content=3D"text/html; charset=3Dgb2312"=
  39  http-equiv=3DContent-Type&gt;
  40 &lt;META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR&gt;
     ... ...  ... ...
  79 &lt;/HTML&gt;
  80
  81 --=====002_Dragon307572345230_=====--
  82</code></pre>
<p class=bhw98>例3 <pre class=bhw98><code class=bhw98>   1 Return-Path: &lt;bluesky7810@163.com&gt;
   2 Delivered-To: bhw98@sina.com
   3 Received: (qmail 75513 invoked by alias); 20 May 2002 02:19:53 -0000
   4 Received: from unknown (HELO bluesky) (61.155.118.135)
   5   by 202.106.187.143 with SMTP; 20 May 2002 02:19:53 -0000
   6 Message-ID: &lt;007f01c3111c$742fec00$0100007f@bluesky&gt;
   7 From: "=?gb2312?B?wLbAtrXEzOwNCg==?=" &lt;bluesky7810@163.com&gt;
   8 To: "bhw98" &lt;bhw98@sina.com&gt;
   9 Cc: &lt;bhwang@jlonline.com&gt;
  10 Subject: =?gb2312?B?ztK1xLbgtK6/2rPM0PI=?=
  11 Date: Sat, 20 May 2002 10:03:36 +0800
  12 MIME-Version: 1.0
  13 Content-Type: multipart/mixed;
  14    boundary="----=_NextPart_000_007A_01C3115F.80DFC5E0"
  15 X-Priority: 3
  16 X-MSMail-Priority: Normal
  17 X-Mailer: Microsoft Outlook Express 5.00.2919.6700
  18 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
  19
  20 This is a multi-part message in MIME format.
  21
  22 ------=_NextPart_000_007A_01C3115F.80DFC5E0
  23 Content-Type: multipart/related; type="multipart/alternative";
  24     boundary="----=_NextPart_001_007B_01C3115F.80DFC5E0"
  25
  26
  27 ------=_NextPart_001_007B_01C3115F.80DFC5E0
  28 Content-Type: multipart/alternative;
  29     boundary="----=_NextPart_002_007C_01C3115F.80DFC5E0"
  30
  31 ------=_NextPart_002_007C_01C3115F.80DFC5E0
  32 Content-Type: text/plain; charset="gb2312"
  33 Content-Transfer-Encoding: quoted-printable
  34
  35 bhw98, =C4=E3=BA=C3!
  36 =D5=E2=CA=C7=CE=D2=D0=B4=B5=C4=B6=E0=B4=AE=BF=DA=CD=A8=D0=C5=B5=C4=B3=CC=D0=
  37 =F2, =C7=EB=D6=B8=BD=CC!
  38
  39
  40 ------=_NextPart_002_007C_01C3115F.80DFC5E0
  41 Content-Type: text/html; charset="gb2312"
  42 Content-Transfer-Encoding: quoted-printable
  43
  44 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;
  45 &lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;=C7=E7=C0=CA&lt;/TITLE&gt;
  46 &lt;META content=3D"text/html; charset=3Dgb2312" http-equiv=3DContent-Type&gt;
  47 &lt;STYLE&gt;BODY {
  48     COLOR: #0033cc; FONT-FAMILY: =CB=CE=CC=E5, Arial, Helvetica; FONT-SIZE: =
  49 9pt; MARGIN-LEFT: 10px; MARGIN-TOP: 25px
  50 }
  51 &lt;/STYLE&gt;
  52 &lt;META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR&gt;&lt;/HEAD&gt;
  53 &lt;BODY background=3Dcid:007901c3111c$72b978a0$0100007f@bluesky =
  54 bgColor=3D#ffffff&gt;
  55 &lt;DIV&gt;
  56 &lt;DIV&gt;bhw98, =C4=E3=BA=C3!&lt;/DIV&gt;
  57 &lt;P&gt;=D5=E2=CA=C7=CE=D2=D0=B4=B5=C4=B6=E0=B4=AE=BF=DA=CD=A8=D0=C5=B5=C4=B3=CC=
  58 =D0=F2, =C7=EB=D6=B8=BD=CC!&lt;/P&gt;&lt;/DIV&gt;
  59 &lt;P&gt;&nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;
  60
  61 ------=_NextPart_002_007C_01C3115F.80DFC5E0--
  62
  63 ------=_NextPart_001_007B_01C3115F.80DFC5E0
  64 Content-Type: image/jpeg; name="=?gb2312?B?x+fAyrGzvrAuSlBH?="
  65 Content-Transfer-Encoding: base64
  66 Content-ID: &lt;007901c3111c$72b978a0$0100007f@bluesky&gt;
  67
  68 /9j/4AAQSkZJRgABAgEASABIAAD/7QVoUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
  69 AQBIAAAAAQABOEJJTQPzAAAAAAAIAAAAAAAAAAA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgAB
  70 AAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEA
     ... ...  ... ...
 169 RxVw98Vawq12xQ44q0cKtHFDWKGsKt4EtiuKt4q//9k=
 170
 171 ------=_NextPart_001_007B_01C3115F.80DFC5E0--
 172
 173 ------=_NextPart_000_007A_01C3115F.80DFC5E0
 174 Content-Type: application/msword; name="readme.doc"
 175 Content-Transfer-Encoding: base64
 176 Content-Disposition: attachment; 2005712131350.htm="readme.doc"
 177
 178 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAJgAAAAAAAAAA
 179 EAAAKAAAAAEAAAD+////AAAAACUAAAD/////////////////////////////////////////////
 180 ////////////////////////////////////////////////////////////////////////////
     ... ...  ... ...
1688 AAAAAAAAAAAAAAAAAAA=
1689
1690 ------=_NextPart_000_007A_01C3115F.80DFC5E0
1691 Content-Type: application/x-zip-compressed;
1692     name="=?gb2312?B?tuC0rr/azajQxbXE1LTC6y56aXA=?="
1693 Content-Transfer-Encoding: base64
1694 Content-Disposition: attachment;
1695     2005712131350.htm="=?gb2312?B?tuC0rr/azajQxbXE1LTC6y56aXA=?="
1696
1697 UEsDBBQAAAAIAFKAoi7qOMOvLw0AAABWAAAUAAAAtuC0rr/azajQxbXE1LTC6y5kb2PtXHtwVNUZ
1698 /+4+kk3IQoAkBkRYQkSgbrKb7IYNEMwmm6ckG0jCI0boZneTbJJ9sNlAEsdOtFqd8Z846tQ6PhB1
1699 hrZTJoK0Vhgf1aGt4rMy6D8tdugfTjuOpcBIR9j+vvsIy4YkRNTRen87v/ud53cee+6557vn7L73
     ... ...  ... ...
3125 zajQxbXE1LTC6y5kb2NQSwUGAAAAAAEAAQBCAAAAYQ0AAA==
3126
3127 ------=_NextPart_000_007A_01C3115F.80DFC5E0--
3128</code></pre>
<p class=bhw98><strong class=bhw98>Q</strong> 在开始研究MIME邮件的时候，如何得到这样的源码？ 
<p class=bhw98><strong class=bhw98>A</strong> 一些功能比较完善的邮件客户端软件，如微软的Outlook Express，国产的Foxmail等，都提供了查看和保存邮件源码(原始信息)的功能。在Foxmail中，选择邮件列表右键菜单的“原始信息”进行查看，主菜单的“文件-导出”进行保存。在Outlook Express中，对应的操作分别是“属性”和“另存为”。所保存的.eml文件，可以调用这些程序打开。 
<p class=bhw98><strong class=bhw98>Q</strong> 请介绍一下MIME邮件的组成？ 
<p class=bhw98><strong class=bhw98>A</strong> 总体来说，MIME消息由消息头和消息体两大部分组成。现在我们关注的是MIME邮件，因此在以下的讨论中姑且称“消息”为“邮件”。在上面的例子中，例1的1-6行，例2的1—8行，例3的1-18行，是邮件头；例1的8—9行，例2的10—82行，例3的20—3128行，是邮件体。邮件头与邮件体之间以空行进行分隔，如例1的第7行，例2的第9行，例3的第19行。邮件头中不允许出现空行。有一些邮件不能被邮件客户端软件识别，显示的是原始码，就是因为首行是空行。 
<p class=bhw98>邮件头包含了发件人、收件人、主题、时间、MIME版本、邮件内容的类型等重要信息。每条信息称为一个域，由域名后加“: ”和信息内容构成，可以是一行，较长的也可以占用多行。域的首行必须“顶头”写，即左边不能有空白字符（空格和制表符）；续行则必须以空白字符打头，且第一个空白字符不是信息本身固有的，解码时要过滤掉。如例2的7-8行，例3的4-5行，13-14行，分别属于一个域。 
<p class=bhw98>邮件体包含邮件的内容，它的类型由邮件头的“Content-Type”域指出。常见的简单类型有text/plain(纯文本)和text/html(超文本)。 
<p class=bhw98>例2和例3中出现的multipart类型，是MIME邮件的精髓。邮件体被分为多个段，每个段又包含段头和段体两部分，这两部分之间也以空行分隔。常见的multipart类型有三种：multipart/mixed, multipart/related和multipart/alternative。从它们的名称，不难推知这些类型各自的含义和用处。它们之间的层次关系可归纳为下图所示： <pre class=diag>+------------------------- multipart/mixed ----------------------------+
|                                                                      |
|  +----------------- multipart/related ------------------+            |
|  |                                                      |            |
|  |  +----- multipart/alternative ------+  +----------+  |  +------+  |
|  |  |                                  |  | 内嵌资源 |  |  | 附件 |  |
|  |  |  +------------+  +------------+  |  +----------+  |  +------+  |
|  |  |  | 纯文本正文 |  | 超文本正文 |  |                |            |
|  |  |  +------------+  +------------+  |  +----------+  |  +------+  |
|  |  |                                  |  | 内嵌资源 |  |  | 附件 |  |
|  |  +----------------------------------+  +----------+  |  +------+  |
|  |                                                      |            |
|  +------------------------------------------------------+            |
|                                                                      |
+----------------------------------------------------------------------+
</pre>
<p class=bhw98>可以看出，如果在邮件中要添加附件，必须定义multipart/mixed段；如果存在内嵌资源，至少要定义multipart/related段；如果纯文本与超文本共存，至少要定义multipart/alternative段。什么是“至少”？举个例子说，如果只有纯文本与超文本正文，那么在邮件头中将类型扩大化，定义为multipart/related，甚至multipart/mixed，都是允许的。 
<p class=bhw98>multipart诸类型的共同特征是，在段头指定“boundary”参数字符串，段体内的每个子段以此串定界。所有的子段都以“--”+boundary行开始，父段则以“--”+boundary+“--”行结束。段与段之间也以空行分隔。在邮件体是multipart类型的情况下，邮件体的开始部分(第一个“--”+boundary行之前)可以有一些附加的文本行，相当于注释，解码时应忽略。段间也可以有一些附加的文本行，不会显示出来，如果有兴趣，不妨验证一下。 
<p class=bhw98>结合boundary定界和multipart层次关系图，我们分析一下例2和例3的邮件体层次与段嵌套关系。 
<p class=bhw98>在例2中，10-12行是附加文本行，13-82行是multipart/alternative型的段，包含两个子段：13-30行是纯文本正文，32-79行是超文本正文。 
<p class=bhw98>在例3中，20-21行是附加文本行，22-3127行是multipart/mixed型的段，包含3个子段：22-171行是multipart/related段，173-1688行与1690-3125行是两个附件。multipart/related段又包含两个子段：27-61行是multipart/alternative段，63-169行是一个内嵌资源(图片)。multipart/alternative段又包含两个子段：31-48行是纯文本正文，40-59行是超文本正文。 
<p class=bhw98>例1只有纯文本正文，实际上属于multipart层次关系图中的一个特殊情况。如果非要避简就繁，写成下面的形式，也是完全符合MIME精神的。 <pre class=bhw98><code class=bhw98>Date: Thu, 18 Apr 2002 09:32:45 +0800
From: &lt;bhw98@sina.com&gt;
To: &lt;bhwang@jlonline.com&gt;
Subject: Test
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="{[(^_^)]}"
  
--{[(^_^)]}
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
 
This is a simple mail.
 
--{[(^_^)]}--</code></pre>
<p class=bhw98><strong class=bhw98>Q</strong> 在邮件头和段头中，有哪一些常见的域？ 
<p class=bhw98><strong class=bhw98>A</strong> 在邮件头中，有很多从RFC 822沿用的域名，MIME也增加了一些。常见的标准域名和含义如下 
<table class=bhw98  align=center>
<tbody>
<tr class=bhw98>
<td class=bhw98>域名 
<td class=bhw98>含义 
<td class=bhw98>添加者 
<tr class=bhw98>
<td class=bhw98>Received 
<td class=bhw98>传输路径 
<td class=bhw98>各级邮件服务器 
<tr class=bhw98>
<td class=bhw98>Return-Path 
<td class=bhw98>回复地址 
<td class=bhw98>目标邮件服务器 
<tr class=bhw98>
<td class=bhw98>Delivered-To 
<td class=bhw98>发送地址 
<td class=bhw98>目标邮件服务器 
<tr class=bhw98>
<td class=bhw98>Reply-To 
<td class=bhw98>回复地址 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>From 
<td class=bhw98>发件人地址 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>To 
<td class=bhw98>收件人地址 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Cc 
<td class=bhw98>抄送地址 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Bcc 
<td class=bhw98>暗送地址 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Date 
<td class=bhw98>日期和时间 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Subject 
<td class=bhw98>主题 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Message-ID 
<td class=bhw98>消息ID 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>MIME-Version 
<td class=bhw98>MIME版本 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Content-Type 
<td class=bhw98>内容的类型 
<td class=bhw98>邮件的创建者 
<tr class=bhw98>
<td class=bhw98>Content-Transfer-Encoding 
<td class=bhw98>内容的传输编码方式 
<td class=bhw98>邮件的创建者 </td></tr></tbody></table>
<p class=bhw98>非标准的、自定义域名都以X-开头，例如X-Mailer, X-MSMail-Priority等，通常在接收和发送邮件的是同一程序时才能理解它们的意义。 
<p class=bhw98>在段头中，大致有如下一些域 
<table class=bhw98  align=center>
<tbody>
<tr class=bhw98>
<td class=bhw98>域名 
<td class=bhw98>含义 
<tr class=bhw98>
<td class=bhw98>Content-Type 
<td class=bhw98>段体的类型 
<tr class=bhw98>
<td class=bhw98>Content-Transfer-Encoding 
<td class=bhw98>段体的传输编码方式 
<tr class=bhw98>
<td class=bhw98>Content-Disposition 
<td class=bhw98>段体的安排方式 
<tr class=bhw98>
<td class=bhw98>Content-ID 
<td class=bhw98>段体的ID 
<tr class=bhw98>
<td class=bhw98>Content-Location 
<td class=bhw98>段体的位置(路径) 
<tr class=bhw98>
<td class=bhw98>Content-Base 
<td class=bhw98>段体的基位置 </td></tr></tbody></table>
<p class=bhw98>有的域除了值之外，还带有参数。值与参数、参数与参数之间以“;”分隔。参数名与参数值之间以“=”分隔。如例3的28-29行，Content-Type域的值为“multipart/alternative”，此外有一个参数boundary，值为"----=_NextPart_002_007C_01C3115F.80DFC5E0"。又如例3的第176行，Content-Disposition域的值为“attachment”，此外有一个参数2005712131350.htm，值为“readme.doc”。 
<p class=bhw98><strong class=bhw98>Q</strong> Content-Type以及它们的参数有哪些形式？ 
<p class=bhw98><strong class=bhw98>A</strong> Content-Type都是“主类型/子类型”的形式。主类型有text, image, audio, video, application, multipart, message等，分别表示文本、图片、音频、视频、应用、分段、消息等。每个主类型都可能有多个子类型，如text类型就包含plain, html, xml, css等子类型。以X-开头的主类型和子类型，同样表示自定义的类型，未向IANA正式注册，但大多已经约定成俗了。如application/x-zip-compressed是ZIP文件类型。在Windows中，注册表的“HKEY_CLASSES_ROOT\MIME\Database\Content Type”内列举了除multipart之外大部分已知的Content-Type。 
<p class=bhw98>关于参数的形式，RFC里有很多补充规定，有的允许带几个参数，较为常见的有 
<table class=bhw98  align=center>
<tbody>
<tr class=bhw98>
<td class=bhw98>主类型 
<td class=bhw98>参数名 
<td class=bhw98>含义 
<tr class=bhw98>
<td class=bhw98>text 
<td class=bhw98>charset 
<td class=bhw98>字符集 
<tr class=bhw98>
<td class=bhw98>image 
<td class=bhw98>name 
<td class=bhw98>名称 
<tr class=bhw98>
<td class=bhw98>application 
<td class=bhw98>name 
<td class=bhw98>名称 
<tr class=bhw98>
<td class=bhw98>multipart 
<td class=bhw98>boundary 
<td class=bhw98>边界 </td></tr></tbody></table>
<p class=bhw98>其中字符集也能在Windows注册表的“HKEY_CLASSES_ROOT\MIME\Database\Charset”内见到。 
<p class=bhw98><strong class=bhw98>Q</strong> Content-Transfer-Encoding有哪些？有什么特点？ 
<p class=bhw98><strong class=bhw98>A</strong> Content-Transfer-Encoding共有Base64, Quoted-printable, 7bit, 8bit, Binary等几种。其中7bit是缺省的编码方式。电子邮件源码最初设计为全部是可打印的ASCII码的形式。非ASCII码的文本或数据要编码成要求的格式，如上面的三个例子。Base64, Quoted-Printable是在非英语国家使用最广使的编码方式。Binary方式只具有象征意义，而没有任何实用价值。 
<p class=bhw98>Base64将输入的字符串或一段数据编码成只含有{'A'-'Z', 'a'-'z', '0'-'9', '+', '/'}这64个字符的串，'='用于填充。其编码的方法是，将输入数据流每次取6 bit，用此6 bit的值(0-63)作为索引去查表，输出相应字符。这样，每3个字节将编码为4个字符(3×8 → 4×6)；不满4个字符的以'='填充。有的场合，以“=?charset?B?xxxxxxxx?=”表示xxxxxxxx是Base64编码，且原文的字符集是charset。如例3第7行"=?gb2312?B?wLbAtrXEzOwNCg==?="是由简体中文“蓝蓝的天”编码而成的。在段体内则直接编码，适当时机换行，MIME建议每行最多76个字符。如例3的1697-3125行，是一个ZIP文件的Base64编码。 
<p class=bhw98>Quoted-printable根据输入的字符串或字节范围进行编码，若是不需编码的字符，直接输出；若需要编码，则先输出'='，后面跟着以2个字符表示的十六进制字节值。有的场合，以“=?charset?Q?xxxxxxxx?=”表示xxxxxxxx是Quoted-printable编码，且原文的字符集是charset。在段体内则直接编码，适当时机换行，换行前额外输出一个'='。如例3的44-59行，是HTML文本的Quoted-printable编码。其中第45行“=C7=E7=C0=CA”原文是“晴朗”，因为“晴”的GB2312码是C7E7，“朗”的GB2312码是C0CA。第48、53、57行末尾只有孤零零的'='，表示这是由编码造成的软回车，而非原文固有的。 
<p class=bhw98>近年来，国内多数邮件服务器已经支持8bit方式，因此只在国内传输的邮件，特别是在邮件头中，可直接使用8bit编码，对汉字不做处理。如果邮件要出国，还是老老实实地按Base64或Quoted-printable编码才行。 
<p class=bhw98><strong class=bhw98>Q</strong> 什么是内嵌资源？它有哪些形式？ 
<p class=bhw98><strong class=bhw98>A</strong> 内嵌资源也是MIME的一个发光点，它能使邮件内容变得生动活泼、丰富多彩。可在邮件的multipart/related框架内定义一些与正文关联的图片、动画、声音甚至CSS样式和脚本的段。通常在HTML正文内，使用超级链接与内嵌资源相联系。如在例3中，HTML正文53-54行，解码后为 <pre class=bhw98><code class=bhw98>&lt;BODY background=cid:007901c3111c$72b978a0$0100007f@bluesky bgColor=#ffffff&gt;</code></pre>
<p class=bhw98>它指出用一个Content-ID为007901c3111c$72b978a0$0100007f@bluesky的图片作为背景(cid:xxxxxxxx也是一种超级链接)。而64-169行恰好就是这样一个内嵌资源。 
<p class=bhw98>除了用Content-ID进行联系外，还有另外一种常用形式：用普通超级连接和Content-Location。例如： 
<p class=bhw98>在HTML正文中， <pre class=bhw98><code class=bhw98>... ...  ... ...
&lt;IMG SRC="http://www.dangdang.com/images/all/anti_joyo_dm_book.gif"&gt;
... ...  ... ...
&lt;IMG SRC="http://www.dangdang.com/dd2001/getimage_small.asp?id=486341"&gt;
... ...  ... ...</code></pre>
<p class=bhw98>对应的内嵌资源为 <pre class=bhw98><code class=bhw98>Content-Type: image/gif; name="anti_joyo_dm_book.gif"
Content-Transfer-Encoding: base64
Content-Location: http://www.dangdang.com/images/all/anti_joyo_dm_book.gif
... ... ... ...
Content-Type: application/octet-stream; name="getimage_small.asp?id=486341"
Content-Transfer-Encoding: base64
Content-Location: http://www.dangdang.com/dd2001/getimage_small.asp?id=486341
... ... ... ...</code></pre>
<p class=bhw98>另外， <pre class=bhw98><code class=bhw98>Content-Location: http://www.dangdang.com/images/all/anti_joyo_dm_book.gif</code></pre>
<p class=bhw98>与 <pre class=bhw98><code class=bhw98>Content-Location: anti_joyo_dm_book.gif
Content-Base: http://www.dangdang.com/images/all/</code></pre>
<p class=bhw98>是等效的。 
<p class=bhw98><strong class=bhw98>Q</strong> 邮件病毒如何利用附件和内嵌资源传播？ 
<p class=bhw98><strong class=bhw98>A</strong> 有的邮件附件可能带有病毒，容易理解。附件毕竟是文件，也好预防，不轻易打开就是了。但内嵌资源是在浏览邮件内容时就要访问的，若其中藏有病毒或恶意代码，你在不知不觉中就中招了。如前两年曾经在全球范围内流行的Nimda病毒，功能性源码如下： <pre class=bhw98><code class=bhw98>MIME-Version: 1.0
Content-Type: multipart/related;
 type="multipart/alternative";
 boundary="====_ABC1234567890DEF_===="
 
--====_ABC1234567890DEF_====
Content-Type: multipart/alternative;
 boundary="====_ABC0987654321DEF_===="
 
--====_ABC0987654321DEF_====
Content-Type: text/html;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
 
&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY bgColor=#ffffff&gt;
&lt;iframe src=cid:EA4DMGBP9p height=0 width=0&gt;
&lt;/iframe&gt;&lt;/BODY&gt;&lt;/HTML&gt;
--====_ABC0987654321DEF_====--
 
--====_ABC1234567890DEF_====
Content-Type: audio/x-wav; name="readme.exe"
Content-Transfer-Encoding: base64
Content-ID: &lt;EA4DMGBP9p&gt;
 
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAAA11CFvcbVPPHG1TzxxtU88E6pcPHW1TzyZqkU8dbVPPJmqSzxytU88cbVO
... ...  ... ...  ... ...  ... ...
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
 
--====_ABC1234567890DEF_====</code></pre>
<p class=bhw98>它将一个可执行文件作为资源嵌入了框架型页面，却声明这段可执行代码是波形声音类型。由于当时微软的IE(版本5.0及以下)存在重大安全漏洞，没有检查Content-Type与name的扩展名是否匹配，于是就被轻易骗过了，致使点选或打开邮件时自动运行了这个“readme.exe”，机器就感染上病毒。带毒的机器利用地址簿向别人发送带毒的邮件，一传十，十传百，Nimda蠕虫大行其道。 
<p class=bhw98>纵观历史，病毒刚出来时是厉害，但没有任何一种能够持续肆虐下去。Nimda如此，SARS亦当如此。曰：“多难兴邦，众志成城”，又曰：“非典终将倒下，城市精神永存”，相信我们定能很快战胜“非典”! 
<p class=bhw98>病毒库升级是跟在新病毒屁股后进行的，不要过分依赖杀毒软件。一个良好的习惯是关闭邮件预览功能，或者设定预览纯文本部分，先查看邮件源码，确信排除病毒嫌疑后再打开。对陌生人发来的带超文本正文的邮件，尤其要当心。永远不要在邮件客户端软件内直接打开附件。 
<p class=bhw98><strong class=bhw98>Q</strong> 一些垃圾邮件采取隐藏发件人的方式，如何追查它们来自哪里？ 
<p class=bhw98><strong class=bhw98>A</strong> 从上面的邮件头域名表中可以看出，邮件的创建者可以掌握大部分的域的内容，但Received等域由各级服务器自动添加，发件人是鞭长莫及。垃圾邮件一般采用了群发软件发送，邮件头的From域(发件人地址)可以任意伪造，甚至写成收件人地址(收到了自己并没有发过的垃圾邮件，气愤吧？)。查看Received域(传输路径)链可以找到真正的出处。每个服务器添加的Received语句都在邮件首，故最下面一个Received就包含了发件人所用的SMTP或HTTP服务器，及最初的网关外部IP地址。 
<p class=bhw98>Receive语句的基本格式是：from A by B。A为发送方，B为接收方。例如： <pre class=bhw98><code class=bhw98>Received: (qmail 45304 invoked from network); 4 May 2003 17:05:47 -0000
Received: from unknown (HELO bjapp9.163.net) (202.108.255.197)
  by 202.106.182.244 with SMTP; 4 May 2003 17:05:47 -0000
Received: from localhost (localhost [127.0.0.1])
  by bjapp9.163.net (Postfix) with SMTP id E1C761D84C631
  for &lt;bhw98@sina.com&gt;; Mon,  5 May 2003 01:07:26 +0800 (CST)
Received: from fanyingxxxx@tom.com (unknown [211.99.162.194])
  by bjapp9.163.net (Coremail) with SMTP id OgEAAM1ItT7MNaLC.1
  for &lt;bhw98@sina.com&gt;; Mon, 05 May 2003 01:07:26 +0800 (CST)
</code></pre>
<p class=bhw98>从上面的例子中不难看出，该邮件的传输路径是：211.99.162.194 → bjapp9.163.net (Coremail 202.108.255.197?) → bjapp9.163.net (Postfix, 202.108.255.197?) → 202.106.182.244。恰好出现了发件人邮箱fanyingxxxx@tom.com，但多数情况不一定能列出来。 
<p class=bhw98>此例的localhost [127.0.0.1]，意味着bjapp9.163.net上安装了邮件服务代理性质的软件。 </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Tech">Tech</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/4d3ea212eaca4fcec3fd7800.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-06  18:38</pubDate>
        <category><![CDATA[Tech]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/4d3ea212eaca4fcec3fd7800.html</guid>
</item>

<item>
        <title><![CDATA[巧合again]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/9513e3dccd3636a1cd116600.html]]></link>
        <description><![CDATA[
		
		<p>梦到有人给我巧克力..</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Life">Life</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/9513e3dccd3636a1cd116600.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-06  18:38</pubDate>
        <category><![CDATA[Life]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/9513e3dccd3636a1cd116600.html</guid>
</item>

<item>
        <title><![CDATA[常用js]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/a2fde61f4c021b0a304e1500.html]]></link>
        <description><![CDATA[
		
		<font color=#007700>&lt;</font><font color=#0000bb>script language</font><font color=#007700>=</font><font color=#dd0000>"Javascript"</font><font color=#007700>&gt;<br><br> </font><font color=#ff8000>//屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键<br><br> //屏蔽F1帮助<br><br></font><font color=#007700>function </font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>onhelp</font><font color=#007700>()<br><br>{<br><br> return </font><font color=#0000bb>false<br><br></font><font color=#007700>}<br><br>function </font><font color=#0000bb>KeyDown</font><font color=#007700>()<br><br>{<br><br>&nbsp;&nbsp;</font><font color=#ff8000>//alert(event.keyCode);<br><br> //屏蔽 Alt+ 方向键 ← 屏蔽 Alt+ 方向键 →<br><br>&nbsp;&nbsp;</font><font color=#007700>if ((</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>altKey</font><font color=#007700>)&amp;&amp;((</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>37</font><font color=#007700>)||(</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>39</font><font color=#007700>)))<br><br>&nbsp;&nbsp;{&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#ff8000>//alert("不准你使用ALT+方向键前进或后退网页！");<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>returnValue</font><font color=#007700>=</font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;</font><font color=#ff8000>//屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl + R<br><br>&nbsp;&nbsp;</font><font color=#007700>if ((</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>116</font><font color=#007700>)||(</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>ctrlKey </font><font color=#007700>&amp;&amp; </font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>82</font><font color=#007700>))<br><br>&nbsp;&nbsp;{ <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>=</font><font color=#0000bb>0</font><font color=#007700>;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>returnValue</font><font color=#007700>=</font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;} <br><br>&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</font><font color=#ff8000>//屏蔽 Ctrl+n<br><br>&nbsp;&nbsp;</font><font color=#007700>if ((</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>ctrlKey</font><font color=#007700>)&amp;&amp;(</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>78</font><font color=#007700>))<br><br>&nbsp;&nbsp;{&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>returnValue</font><font color=#007700>=</font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</font><font color=#ff8000>//屏蔽 shift+F10<br><br>&nbsp;&nbsp;</font><font color=#007700>if ((</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>shiftKey</font><font color=#007700>)&amp;&amp;(</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>121</font><font color=#007700>))<br><br>&nbsp;&nbsp;{ <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>returnValue</font><font color=#007700>=</font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</font><font color=#ff8000>//屏蔽 shift 加鼠标左键新开一网页<br><br>&nbsp;&nbsp;</font><font color=#007700>if (</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>srcElement</font><font color=#007700>.</font><font color=#0000bb>tagName </font><font color=#007700>== </font><font color=#dd0000>"A" </font><font color=#007700>&amp;&amp; </font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>shiftKey</font><font color=#007700>) <br><br>&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>returnValue </font><font color=#007700>= </font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;</font><font color=#ff8000>//屏蔽Alt+F4<br><br>&nbsp;&nbsp;</font><font color=#007700>if ((</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>altKey</font><font color=#007700>)&amp;&amp;(</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>115</font><font color=#007700>))<br><br>&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;</font><font color=#0000bb>window</font><font color=#007700>.</font><font color=#0000bb>showModelessDialog</font><font color=#007700>(</font><font color=#dd0000>"about :blank"</font><font color=#007700>,</font><font color=#dd0000>""</font><font color=#007700>,</font><font color=#dd0000>"dialogWidth:1px;dialogheight:1px"</font><font color=#007700>);<br><br>&nbsp;&nbsp;return </font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</font><font color=#ff8000>//屏蔽Ctrl+A<br><br>&nbsp;&nbsp;</font><font color=#007700>if((</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>ctrlKey</font><font color=#007700>)&amp;&amp;(</font><font color=#0000bb>event</font><font color=#007700>.</font><font color=#0000bb>keyCode</font><font color=#007700>==</font><font color=#0000bb>65</font><font color=#007700>))<br><br>&nbsp;&nbsp;{<br><br> return </font><font color=#0000bb>false</font><font color=#007700>;<br><br>&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;<br><br>}<br><br></font><font color=#0000bb>&lt;/script&gt;<br></font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Javascript">Javascript</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/a2fde61f4c021b0a304e1500.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-06  18:37</pubDate>
        <category><![CDATA[Javascript]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/a2fde61f4c021b0a304e1500.html</guid>
</item>

<item>
        <title><![CDATA[党旗飘飘]]></title>
        <link><![CDATA[http://hi.baidu.com/phphp/blog/item/917e54c20a570935e5dd3b00.html]]></link>
        <description><![CDATA[
		
		党旗飘飘 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/phphp/blog/category/Life">Life</a>&nbsp;<a href="http://hi.baidu.com/phphp/blog/item/917e54c20a570935e5dd3b00.html#comment">查看评论</a>]]></description>
        <pubDate>2007-01-06  18:37</pubDate>
        <category><![CDATA[Life]]></category>
        <author><![CDATA[phpor]]></author>
		<guid>http://hi.baidu.com/phphp/blog/item/917e54c20a570935e5dd3b00.html</guid>
</item>


</channel>
</rss>