<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[Java伴侣 - Asp&Php]]></title>
<link>http://www.javamilk.org/</link>
<description><![CDATA[关于工作、学习与生活]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[blurxx@yahoo.cn(Blur)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>Java伴侣</title>
	<url>http://www.javamilk.org/images/logos.gif</url>
	<link>http://www.javamilk.org/</link>
	<description>Java伴侣</description>
</image>

			<item>
			<link>http://www.javamilk.org/article.asp?id=1550</link>
			<title><![CDATA[PHP遇到指定城市后跳转到指向页面，迷惑敌人的小办法]]></title>
			<author>blurxx@yahoo.cn(admin)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Tue,12 Jun 2012 16:28:55 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1550</guid>
		<description><![CDATA[<div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code42327);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code42327>&lt;?php<br/>//返回当前IP的城市字符串<br/>function convertip($ip) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;//IP数据文件路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;$dat_path = &#39;qqwry.dat&#39;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//检查IP地址<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!preg_match(&#34;/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/&#34;, $ip)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;IP Address Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;//打开IP数据文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!$fd = @fopen($dat_path, &#39;rb&#39;)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;IP date file not exists o&#114; access denied&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//分解IP进行运算，得出整形数<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ip = explode(&#39;.&#39;, $ip);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//获取IP数据索引开始和结束位置<br/>&nbsp;&nbsp;&nbsp;&nbsp;$DataBegin = fread($fd, 4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$DataEnd = fread($fd, 4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipbegin = implode(&#39;&#39;, unpack(&#39;L&#39;, $DataBegin));<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($ipbegin &lt; 0) $ipbegin += pow(2, 32);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipend = implode(&#39;&#39;, unpack(&#39;L&#39;, $DataEnd));<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($ipend &lt; 0) $ipend += pow(2, 32);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipAllNum = ($ipend - $ipbegin) / 7 + 1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$BeginNum = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$EndNum = $ipAllNum;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//使用二分查找法从索引记录中搜索匹配的IP记录<br/>&nbsp;&nbsp;&nbsp;&nbsp;while($ip1num&gt;$ipNum || $ip2num&lt;$ipNum) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$Middle= intval(($EndNum + $BeginNum) / 2);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//偏移指针到索引位置读取4个字节<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, $ipbegin + 7 * $Middle);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipData1 = fread($fd, 4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($ipData1) &lt; 4) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//提取出来的数据转换成长整形，如果数据是负数则加上2的32次幂<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ip1num = implode(&#39;&#39;, unpack(&#39;L&#39;, $ipData1));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ip1num &lt; 0) $ip1num += pow(2, 32);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ip1num &gt; $ipNum) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$EndNum = $Middle;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取完上一个索引后取下一个索引<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$DataSeek = fread($fd, 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($DataSeek) &lt; 3) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$DataSeek = implode(&#39;&#39;, unpack(&#39;L&#39;, $DataSeek.chr(0)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, $DataSeek);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipData2 = fread($fd, 4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($ipData2) &lt; 4) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ip2num = implode(&#39;&#39;, unpack(&#39;L&#39;, $ipData2));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ip2num &lt; 0) $ip2num += pow(2, 32);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//没找到提示未知<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ip2num &lt; $ipNum) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($Middle == $BeginNum) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;Unknown&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$BeginNum = $Middle;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipFlag = fread($fd, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($ipFlag == chr(1)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipSeek = fread($fd, 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($ipSeek) &lt; 3) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipSeek = implode(&#39;&#39;, unpack(&#39;L&#39;, $ipSeek.chr(0)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, $ipSeek);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipFlag = fread($fd, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if($ipFlag == chr(2)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$AddrSeek = fread($fd, 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($AddrSeek) &lt; 3) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipFlag = fread($fd, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ipFlag == chr(2)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$AddrSeek2 = fread($fd, 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($AddrSeek2) &lt; 3) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$AddrSeek2 = implode(&#39;&#39;, unpack(&#39;L&#39;, $AddrSeek2.chr(0)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, $AddrSeek2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, -1, SEEK_CUR);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(($char = fread($fd, 1)) != chr(0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipAddr2 .= $char;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$AddrSeek = implode(&#39;&#39;, unpack(&#39;L&#39;, $AddrSeek.chr(0)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, $AddrSeek);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(($char = fread($fd, 1)) != chr(0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipAddr1 .= $char;<br/>&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, -1, SEEK_CUR);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(($char = fread($fd, 1)) != chr(0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipAddr1 .= $char;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipFlag = fread($fd, 1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($ipFlag == chr(2)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$AddrSeek2 = fread($fd, 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strlen($AddrSeek2) &lt; 3) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#39;System Error&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$AddrSeek2 = implode(&#39;&#39;, unpack(&#39;L&#39;, $AddrSeek2.chr(0)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, $AddrSeek2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fseek($fd, -1, SEEK_CUR);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(($char = fread($fd, 1)) != chr(0)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipAddr2 .= $char;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fd);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//最后做相应的替换操作后返回结果<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(preg_match(&#39;/http/i&#39;, $ipAddr2)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipAddr2 = &#39;&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipaddr = &#34;$ipAddr1 $ipAddr2&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipaddr = preg_replace(&#39;/CZ88.Net/is&#39;, &#39;&#39;, $ipaddr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipaddr = preg_replace(&#39;/^s*/is&#39;, &#39;&#39;, $ipaddr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$ipaddr = preg_replace(&#39;/s*$/is&#39;, &#39;&#39;, $ipaddr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(preg_match(&#39;/http/i&#39;, $ipaddr) || $ipaddr == &#39;&#39;) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ipaddr = &#39;Unknown&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;return $ipaddr;<br/>}<br/><br/><br/>//查找字符串<br/>function&nbsp;&nbsp;findstr($str, $substr)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $m = strlen($str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$n = strlen($substr );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($m &lt; $n) return false ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0; $i &lt;=($m-$n+1); $i ++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sub = substr( $str, $i, $n);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( strcmp($sub, $substr) ==&nbsp;&nbsp;0)&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false ;<br/>}<br/><br/> <br/><br/>$xp_UserIp = ($_SERVER[&#34;HTTP_VIA&#34;]) ? $_SERVER[&#34;HTTP_X_FORWARDED_FOR&#34;] : $_SERVER[&#34;REMOTE_ADDR&#34;];<br/>$Clientip = ($xp_UserIp) ? $xp_UserIp : $_SERVER[&#34;REMOTE_ADDR&#34;];<br/><br/>$ClientSity=convertip($Clientip);<br/><br/>//out.print($ClientSity);<br/><br/>if (findstr($ClientSity,&#34;北京&#34;)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;//out.print(&#34;是北京，暂时指向&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;Header(&#34;Location: /index1.html&#34;);<br/>}else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;//out.print(&#34;不是 北京的,永久指向&#34;);<br/>&#160;&#160;&#160;&#160;header(&#34;HTTP/1.1 301 Moved Permanently&#34;); <br/>&nbsp;&nbsp;&nbsp;&nbsp;Header(&#34;Location: /index.html&#34;);<br/>}<br/>?&gt;</div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1447</link>
			<title><![CDATA[apache问题，按钮灰色，没有服务]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Sat,02 Oct 2010 20:33:40 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1447</guid>
		<description><![CDATA[好久没有摆弄阿帕奇了，本来想使用傻瓜软件，比如EasyAPM把php环境安装上，后来想想还是动动手好了。遇到了无服务问题，解决办法：<br/><br/>cmd /k d:\progra~1\apache2.2\bin\apache.exe -k install -n apache2<br/>或者<br/>cmd /k d:\progra~1\apache2.2\bin\httpd.exe -k install -n apache2<br/><br/>net start apache2.2<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1424</link>
			<title><![CDATA[如何利用PHP來截取一段中文字符串而不出現亂碼]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Thu,13 May 2010 00:57:28 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1424</guid>
		<description><![CDATA[作者:jeffwu(327wu@263.net) <br/>[code:1:e818e36f81] <br/>/* <br/>功能：截取全角和半角混合的字符串以避免乱码 <br/>参数： <br/>$str_cut 需要截断的字符串 <br/>$length&nbsp;&nbsp;允许字符串显示的最大长度 <br/><br/>*/ <br/><br/>function substr_cut($str_cut,$length = 30){&nbsp;&nbsp;<br/><br/>if (strlen($str_cut) &gt; $length){ <br/>&nbsp;&nbsp;for($i=0; $i &lt; $length; $i++) <br/>&nbsp;&nbsp; if (ord($str_cut[$i]) &gt; 128) $i++; <br/>&nbsp;&nbsp;$str_cut = substr($str_cut,0,$i) . &#34;...&#34;; <br/>} <br/>return $str_cut; <br/>} <br/><br/>[/code:1:e818e36f81] <br/>说明： <br/>程序的关键语句是： <br/>[code:1:e818e36f81] <br/>for($i=0; $i &lt; $length; $i++) <br/>if (ord($str_cut[$i]) &gt; 128) $i++; <br/><br/>$str_cut = substr($str_cut,0,$i) . &#34;...&#34;; <br/>[/code:1:e818e36f81] <br/>如果字符的ASCII码大于128，说明当前字符和下一个字符是属于一个汉字的。 <br/>则，$i++ 跳过对下一个字符的判断。 <br/>再结合循环中的 $i++ ，实际上，当遇到一个汉字时，$i 就会加 2 ，从而正确的跳过汉字。 <br/>最终实现的效果是，$i 变量指向的要么是半角的字符，要么是全角汉字的首字符，不会指向 <br/>全角汉字的第二个字符，所以，当$i &gt;= $length 时，循环结束，使用 <br/>$str_cut = substr($str_cut,0,$i) . &#34;...&#34;; 截取字符时自然也就不会出现乱码了。 <br/><br/><br/>本人在写一个程序时需要利用PHP从一段字符串中截取指定长度的一段字符下来。以前在写ASP的时候，参考动网的程序写过类似的程序，不过，还没用PHP写过。 <br/><br/>想偷懒，看有不有现成的代码可以用。于是，在GOOGLE中输入：PHP 截断字符 后查找到一段代码。 <br/><br/>全文：<a href="http://www.yesky.com/SoftChannel/72342371945349120/20020510/1610570_3.shtml" target="_blank" rel="external">http://www.yesky.com/SoftChannel/72342371945349120/20020510/1610570_3.shtml</a> <br/><br/>引用： <br/>######################################################################### <br/>　　如何分别全角和半角以避免乱码?&nbsp;&nbsp;<br/><br/>　　我们可以写这样一个函数来实现：&nbsp;&nbsp;<br/>[code:1:e818e36f81] <br/>function ChgTitle($title)&nbsp;&nbsp;<br/>{&nbsp;&nbsp;<br/>$length = 46; //我们允许字符串显示的最大长度 <br/>if (strlen($title)＞$length) {&nbsp;&nbsp;<br/>$temp = 0;&nbsp;&nbsp;<br/>for($i=0; $i＜$length; $i++)&nbsp;&nbsp;<br/>if (ord($title[$i]) ＞ 128) $temp++;&nbsp;&nbsp;<br/>if ($temp%2 == 0)&nbsp;&nbsp;<br/>$title = substr($title,0,$length).&#34;...&#34;;&nbsp;&nbsp;<br/>else&nbsp;&nbsp;<br/>$title = substr($title,0,$length+1).&#34;...&#34;;&nbsp;&nbsp;<br/>}&nbsp;&nbsp;<br/>return $title;&nbsp;&nbsp;<br/>}&nbsp;&nbsp; <br/>[/code:1:e818e36f81] <br/>　　这个函数原理就是截断一个字符，看看其ascII码是不是大于128，如果是，说明截断的是一个全角汉字，那么就退后一个截断。用$length控制长度&nbsp;&nbsp;<br/><br/>　　备注：循环判断字符串里面的 ＞128 的字符个数，如果半角字符为偶数，则表示位置刚好为整个汉字，如果为奇数，则为半个汉字，需要取下一个字符 <br/><br/>####################################################################### <br/><br/>消化、测试这段代码后发现有问题。经过反复调试，查找出，这段代码基于的原理不正确。 <br/>它认为，汉字的两个字节其ASCII码都会大于128，其实不然，一个汉字的首个字节的ASCII码 <br/>必定是大于128的，但是第二个字节的ASCII码不一定大于128，例如：&#34;?&#34;,其两个字节的ASCII <br/>码分别为：181 和 118。 <br/><br/>经过仔细分析，最终，我利用上面的函数实现了对全角和半角字符串的截取。 <br/><br/>一点点体会，写出来也是想和大家一起交流、学习。我不知道是不是有人已经写过上面的函数，不过， <br/>我还没能读到，也就只能自己琢磨了，呵呵。 <br/><br/>欢迎有兴趣的朋友来信交流。<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1418</link>
			<title><![CDATA[PHP连接mysql测试和配置]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Tue,11 May 2010 19:08:41 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1418</guid>
		<description><![CDATA[php连接mysql测试代码：<br/><br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code63319);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.javamilk.org/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code63319>&lt;?php<br/>$link=mysql_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;123456&#39;);<br/>if(!$link) echo &#34;失败!&#34;;<br/>else echo &#34;成功!&#34;;<br/>mysql_close();<br/>?&gt;</div></div><br/> <br/><br/>运行代码出现：Call　 to　 undefined　 function　 &#39;mysql_connect()&#39;… 失败<br/><br/>百度找到结果是PHP+MYSQL 环境没配置好, php5 的默认 mysql 是关闭的<br/><br/>将php_mysql.dll和libmysql.dll文件拷贝至c:winntsystem32中（我漏了libmysql.dll）<br/><br/>找到php.ini中的;extension=php_mysql,去掉前面的&#34;;&#34;　 重启服务器<br/><br/>哈哈，问题解决<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1417</link>
			<title><![CDATA[PHP出现空白页面及无法载入mysql扩展的解决方法]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Tue,11 May 2010 19:08:02 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1417</guid>
		<description><![CDATA[当“出现空白页面”或“无法载入 mysql 扩展，请检查 PHP 配置”时，<br/><br/>可能是php.ini配置不正确，可能出错的地方如下：<br/><br/>1. extension_dir = 和PHP实际的ext目录不一致。<br/><br/>2. 没有把PHP目录和ext目录添加到环境变量中。<br/><br/>3. extension=php_mysql.dll等前的;注释没去掉。 <br/><br/><br/>4. Zend安装目录和php.ini中Zend指定的目录不一致。<br/><br/>把上面几种情况检查一下，若还不能解决，请使用其他方法。<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1369</link>
			<title><![CDATA[Apache安装出现“No installed service name Apache2”及解决]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Tue,02 Mar 2010 18:14:13 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1369</guid>
		<description><![CDATA[&nbsp;&nbsp; 继续咱的Linux架站之旅，今天尝试安装了一下Apache服务器软件。首先进入Apache网站<a href="http://httpd.apache.org/download.cgi" target="_blank" rel="external">http://httpd.apache.org/download.cgi</a>，下载最新版本的Apache（我这里选择的是：Win32 Binary including OpenSSL 0.9.7m (MSI Installer): apache_2.0.63-win32-x86-openssl-0.9.7m.msi [PGP] [MD5] 这个版本），只有4MB多点，很快就搞定了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;然后双击开始安装，开始还比较顺利，但在安装的最后出现了“No installed service name Apache2”名字为Apache2的服务没有安装的提示。任务栏右下脚的Apache没有正常启动，比较奇怪，于是上百度知道了一下，找到了答案。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;情况是这样的，Windows XP下的apache默认是不给安装ServerName的，也就是说Apache并没有安装，所以启动自然也不行，怎么办呢？很简单，安装一下就OK了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;运行，CMD进入命令行模式，进入到apache的bin目录下（我自己用的是默认路径，也就是c:\program file\apache group\apache2\bin&gt;这个目录），执行 apache.exe -k install -n apache2 这串命令，提示安装完成后，就有apache2这个服务啦。<br/><br/><br/>一切正常啦！<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1279</link>
			<title><![CDATA[QQ号码采集代码(PHP)]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Thu,22 Oct 2009 08:34:19 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1279</guid>
		<description><![CDATA[通过QQ.COM上的QQ空间里的找朋友功能，设置年龄，性别等找到符合的QQ空间，解析出QQ号码。<br/><br/>-------- const.php -------------------<br/><br/>&lt;?php<br/>/*SEX*/<br/>define(&#34;SEX_MAN&#34;,&#34;1&#34;);<br/>define(&#34;SEX_WOMAN&#34;,&#34;2&#34;);<br/>define(&#34;SEX_UNDEFINED&#34;,&#34;-1&#34;);<br/>/*MARRAY*/<br/>define(&#34;MR_YES&#34;,&#34;2&#34;);<br/>define(&#34;MR_NO&#34;,&#34;1&#34;);<br/>define(&#34;MR_UNDEFINED&#34;,&#34;-1&#34;);<br/>?&gt;<br/><br/>---------- func_lib.php --------------<br/><br/>&lt;?php<br/>require_once(&#39;const.php&#39;);<br/><br/>function build_search_url($begin,$sex = SEX_UNDEFINED, $age_s = -1, $age_e = -1, $is_m = MR_UNDEFINED)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;$s_url = <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#34;<a href="http://soren.qzone.qq.com/cgi-bin/soren/cgi_userinfo_search?sex=" target="_blank" rel="external">http://soren.qzone.qq.com/cgi-bin/soren/cgi_userinfo_search?sex=</a>{$sex}&amp;a1={$age_s}&amp;a2={$age_e}&amp;pv=0&amp;ct=0&amp;mr={$is_m}&amp;nn=&amp;interest=&amp;begin={$begin}&amp;bSimple=1&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $s_url;<br/>}<br/><br/>function get_match_qq_num(&amp;$data)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;$matchs = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$numString1 = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$pattern = &#34;/（&lt;strong&gt;(.*[^&lt;])&lt;\/strong&gt;条结果）/&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(preg_match_all($pattern,$data,$matchs) != 0 || preg_match_all($pattern,$data,$matchs) != FALSE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$numString1 = $matchs[1][1];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$numString1 = qq_num_str2int($numString1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return intval($numString1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><br/>function qq_num_str2int(&amp;$str)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;$v = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$vv = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$v = split(&#39;,&#39;,$str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach($v as $s)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$vv .= $s;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $vv;<br/>}<br/><br/>function get_qq_mail(&amp;$data)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;$matchs = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;$pattern = &#34;/http:\/\/user\.qzone\.qq\.com\/(\d*)/&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$qq_number_num = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$qq_mail = array();<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(($qq_number_num = preg_match_all($pattern,$data,$matchs) ) != FALSE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i = 0; $i &lt; $qq_number_num; $i ++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$qq_mail[] = $matchs[1][$i].&#34;@qq.com&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;return array_unique($qq_mail);<br/>}<br/><br/>function print_qq_mail(&amp;$mails)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach($mails as $mail)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $mail.&#34;\r\n&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>?&gt;<br/><br/>--------- qq_mail.php ------------------<br/><br/>&lt;?php<br/>require_once(&#39;func_lib.php&#39;);<br/>require_once(&#39;const.php&#39;);<br/><br/>$s_url = build_search_url(0,SEX_WOMAN,28,40,MR_UNDEFINED);<br/><br/>$ch = curl_init();<br/>curl_setopt($ch,CURLOPT_URL,$s_url);<br/>curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);<br/><br/>$page = curl_exec($ch);<br/>$qq_num = get_match_qq_num($page);<br/>$qq_mail = get_qq_mail($page);<br/>print_qq_mail($qq_mail);<br/><br/>for($i = 1; $i &lt; ($qq_num / 10); $i ++)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;$s_url = build_search_url($i,SEX_WOMAN,28,40,MR_UNDEFINED);<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_URL,$s_url);<br/>&nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$page = curl_exec($ch);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$qq_mail = get_qq_mail($page);<br/>&nbsp;&nbsp;&nbsp;&nbsp;print_qq_mail($qq_mail);<br/>}<br/><br/>curl_close($ch);<br/>?&gt;]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1210</link>
			<title><![CDATA[ASP小偷(远程数据获取)程序入门教程]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Mon,17 Aug 2009 13:50:17 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1210</guid>
		<description><![CDATA[这里所说的“小偷”指的是在asp中运用xml中的xmlhttp组件提供的强大功能，把远程网站上的数据（图片，网页及其他文件）抓取到本地，经过各种处理后显示到页面上或者存储进数据库的一类程序。你可以通过这种小偷程序，完成过去一些似乎完全不可能实现的任务，比如说把某个站的页面偷梁换柱后变成自己的页面，或者把某个站的一些数据（文章，图片）保存到本地数据库中加以利用。“小偷”的优点有：无须维护网站，因为小偷程序中的数据来自其他网站，它将随着该网站的更新而更新；可以节省大量的服务器资源，一般小偷程序就几个文件，所有网页内容都是来自其他网站。缺点在于：不稳定，如果目标网站出错，程序也会出错，而且，如果目标网站进行升级维护，那么小偷程序也要进行相应修改；速度，因为是远程调用，速度和在本地服务器上读取数据比起来，肯定要慢一些。怎么样，听起来很神奇吧？我们现在就开始来学习一些“小偷”程序的入门知识吧！<br/><br/>我们拿个简单点的东西来研究一下吧，qq网站上的天气预报程序<br/><br/>代码如下：<br/><br/>1 &lt;%<br/>2 On Error Resume Next<br/>3 Server.Scripttimeout=9999999<br/>4 Function Gethttppage(Path)<br/>5 T = Getbody(Path)<br/>6 Gethttppage=Bytestobstr(T,&#34;Gb2312&#34;)<br/>7 End Function<br/>8<br/>9 &#39; 首先，进行小偷程序的一些初始化设置，以上代码的作用分别是忽略掉所有非致命性错误，把小偷程序的运行超时时间设置得很长（这样不会出现运行超时的错误），转换原来默认的utf-8编码转换成gb2312编码，否则直接用xmlhttp组件调用有中文字符的网页得到的将是乱码。<br/>10<br/>11 Function Getbody(Url) <br/>12 On Error Resume Next<br/>13 Set Retrieval = Cr&#101;ateobject(&#34;Microsoft.Xmlhttp&#34;) <br/>14 With Retrieval <br/>15 .Open &#34;Get&#34;, Url, False, &#34;&#34;, &#34;&#34; <br/>16 .Send <br/>17 Getbody = .Responsebody<br/>18 End With <br/>19 Set Retrieval = Nothing <br/>20 End Function<br/>21<br/>22 &#39;然后调用xmlhttp组件创建一个对象并进行初始化设置。<br/>23<br/>24 Function Bytestobstr(Body,Cset)<br/>25 Dim Objstream<br/>26 Set Objstream = Server.Cr&#101;ateobject(&#34;Adodb.Stream&#34;)<br/>27 Objstream.Type = 1<br/>28 Objstream.Mode =3<br/>29 Objstream.Open<br/>30 Objstream.Write Body<br/>31 Objstream.Position = 0<br/>32 Objstream.Type = 2<br/>33 Objstream.Charset = Cset<br/>34 Bytestobstr = Objstream.Readtext <br/>35 Objstream.Close<br/>36 Set Objstream = Nothing<br/>37 End Function<br/>38<br/>39 Function Newstring(Wstr,Strng)<br/>40 Newstring=Instr(Lcase(Wstr),Lcase(Strng))<br/>41 If Newstring&lt;=0 Then Newstring=Len(Wstr)<br/>42 End Function<br/>43<br/>44 &#39;处理抓取回来的数据需要调用adodb.Stream组件并进行初始化设置。%&gt;<br/><br/><br/><br/><br/>以下即为页面显示部分:<br/><br/>1 &lt;%<br/>2 Dim Wstr,Str,Url,Start,Over,City<br/>3 &#39;定义一些需要使用到的变量<br/>4<br/>5 City = Request.Querystring(&#34;Id&#34;)<br/>6 &#39;程序传回的id变量（即用户选择的城市）赋给id<br/>7<br/>8 Url=&#34;<a href="Http://Appnews.Qq.Com/Cgi-bin/News_qq_search?city=" target="_blank" rel="external">Http://Appnews.Qq.Com/Cgi-bin/News_qq_search?city=</a>&#34;&amp;City&amp;&#34;&#34;<br/>9 &#39;这里设置需要抓取的页面地址，当然你也可以直接指定某个地址而不使用变量<br/>10<br/>11 Wstr=Gethttppage(Url) <br/>12 &#39;获取指定页面的全部数据 <br/>13<br/>14 Start=Newstring(Wstr,&#34; &#34;)<br/>15 &#39;这里设置需要处理的数据的头部，这个变量应视不同情况而设置，具体内容可以通过查看需要抓取的页面的源代码来确定。因为在这个程序里我们需要抓取整个页面,所以设置为页面全部抓取。注意，设置的内容必须是页面内容唯一的，不可以重复。<br/>16<br/>17 Over=Newstring(Wstr,&#34; &#34;)<br/>18 &#39;和start相对应的就是需要处理的数据的尾部，同样的，设置的内容必须是页面中唯一的。<br/>19<br/>20 Body=Mid(Wstr,Start,Over-start)<br/>21 &#39;设置显示页面的范围<br/>22<br/>23 &#39;下面就是动用乾坤挪移+++的时候了，通过replace可以用一些字符替换掉数据中指定的字符。<br/>24<br/>25 Body = Replace(Body,&#34;Skin1&#34;,&#34;天气预报 - 斯克网络&#34;)<br/>26 Body = Replace(Body,&#34;<a href="Http://Appnews.Qq.Com/Cgi-bin/News_qq_search?city" target="_blank" rel="external">Http://Appnews.Qq.Com/Cgi-bin/News_qq_search?city</a>&#34;,&#34;Tianqi.Asp?id&#34;)<br/>27<br/>28 &#39;本程序中已经完成了替换的工作，如果有其他需要的话可以继续进行类似的替换操作。<br/>29<br/>30 Response.Write Body<br/>31 %&gt;<br/>替换完需要修改的内容后，就可以把修改的内容显示在页面上了。至此程序结束<br/><br/>程序使用方法及结果：把上述代码去掉说明部分后保存为tianqi.Asp，上传到支持asp和xml的空间下，在浏览器中运行即可。你可以在在这个程序的基础上进行进一步的界面美化或者程序优化。<br/><br/>以上只是一些关于xmlhttp组件的初级应用，实际上它还能实现的功能还有很多，比如说保存远程图片到本地服务器上，配合adodb.Stream组件可以把获取来的数据保存进数据库。小偷的作用和使用范围都很广。但是不可以拿来做违法的事哦！<br/><br/>也许还有人要问了，这种“小偷”程序难道只是asp的专利吗？非也，php通过fopen函数一样可以实现同样的效果，由于php本身的各种特点，写出来的小偷程序和asp相比，在体积和执行效率上都有者明显的优势，但限于篇幅，这里就不一一说明了。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1208</link>
			<title><![CDATA[asp下载次数统计代码]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Sun,16 Aug 2009 12:12:30 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1208</guid>
		<description><![CDATA[&lt;%<br/>&nbsp;&nbsp; sub numpad()<br/>&nbsp;&nbsp; set files=server.cr&#101;ateobject(&#34;scripting.filesystemobject&#34;)<br/>&nbsp;&nbsp; set numtxt=files.opentextfile(server.mappath(&#34;/num/num.txt&#34;))<br/>&nbsp;&nbsp; application(&#34;num&#34;)=numtxt.readline<br/>&nbsp;&nbsp; numtxt.close<br/>&nbsp;&nbsp; application(&#34;num&#34;)=application(&#34;num&#34;)+1<br/>&nbsp;&nbsp; response.write application(&#34;num&#34;)<br/>&nbsp;&nbsp; set numtxt=files.cr&#101;atetextfile(server.mappath(&#34;\num\num.txt&#34;),true)<br/>&nbsp;&nbsp; numtxt.writeline(application(&#34;num&#34;))<br/>&nbsp;&nbsp; numtxt.close<br/>&nbsp;&nbsp; end sub<br/>&nbsp;&nbsp; application.lock<br/>&nbsp;&nbsp; numpad<br/>&nbsp;&nbsp; application.unlock<br/>&nbsp;&nbsp; %&gt;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.javamilk.org/article.asp?id=1148</link>
			<title><![CDATA[apache用urlrewrite实现二级域名]]></title>
			<author>blurxx@yahoo.cn(Java伴侣)</author>
			<category><![CDATA[Asp&amp;Php]]></category>
			<pubDate>Mon,25 May 2009 10:14:29 +0800</pubDate>
			<guid>http://www.javamilk.org/default.asp?id=1148</guid>
		<description><![CDATA[服务器是apache带了iis和tomcat，又要加一个系统跑了一个第三方的类似iis的web服务还要加二级域名，烦，这就是集成？还要搞单点登录，哎<br/><br/>80端口给apache，iis给了6666，类iis给了801，tomcat给了8081，琢磨了一天才实现这个功能记一笔不要忘了。<br/>首先泛域名解析要找域名商设置的，其他的urlrewrite就在apache里做了<br/>一切尽在这段中<br/>&lt;VirtualHost *&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ServerAdmin hibj@letgoo.com<br/>&nbsp;&nbsp;&nbsp;&nbsp;DocumentRoot /webs/hosts/hibj/html/<br/>&nbsp;&nbsp;&nbsp;&nbsp;ServerName www.XXXX.cn<br/>&nbsp;&nbsp;&nbsp;&nbsp;ServerAlias www.XXXX.cn<br/>&nbsp;&nbsp;&nbsp;&nbsp;ErrorLog c:/webs/logs/www.XXXX.cn-error_log<br/>&nbsp;&nbsp;&nbsp;&nbsp;CustomLog c:/webs/logs/www.XXXX.cn-access_log common<br/>#前面的就不说了一个VirtualHost 的设置<br/>#这个是把iis代理到虚拟目录shop1上<br/>ProxyPass /shop1/ <a href="http://127.0.0.1:6666/" target="_blank" rel="external">http://127.0.0.1:6666/</a><br/>#这个是把类iis代理到虚拟目录store上<br/>ProxyPass /store/ <a href="http://127.0.0.1:801/" target="_blank" rel="external">http://127.0.0.1:801/</a><br/>#下面是rewrite的写法，三个rewritecond三个的关系默认是AND，第2和第3个rewritecond表示如果是www\.XXXX\.cn或者shop\.XXXX\.cn就不做url rewrite<br/>Rewriteengine on<br/>rewritecond %{HTTP_HOST} ^[^.]+\.XXXX\.cn$ [NC]<br/>rewritecond %{HTTP_HOST} !^www\.XXXX\.cn.*$ [NC]<br/>rewritecond %{HTTP_HOST} !^shop\.XXXX\.cn.*$ [NC]<br/>rewriterule ^(.+) %{HTTP_HOST}$1 [C] <br/>#这里就把符合条件的HTTP_HOST请求转发到/store/index.asp，并且把请求的地址作为参数传递给index.asp,当然在index.asp中怎么分配转发自己写了<br/>rewriterule ^([a-z-]+\.XXXX\.cn/.*) /store/index.asp?site=$1 [PT]<br/>&lt;/VirtualHost&gt;<br/>这样用户abc创建自己的账户后就可以用 abc.XXXX.com来访问了]]></description>
		</item>
		
</channel>
</rss>
