<?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>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制,  PHP代码, ASP代码, 精选JS代码, WORDPRESS, 网站SEO,Flash焦点广告,JS焦点广告,CSS技巧 &#124; 九创主题 &#187; PHP</title>
	<atom:link href="http://www.3code.cn/tag/php-tag/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.3code.cn</link>
	<description>Wordpress外贸企业主题, Wp企业主题, wordpress企业主题, wordpress主题定制,  PHP代码,ASP代码,精选JS代码,WORDPRESS,网站SEO,Flash焦点广告,JS焦点广告,CSS技巧</description>
	<lastBuildDate>Thu, 09 Feb 2012 01:52:35 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>PHP上传文件夹设置禁止执行脚本文件</title>
		<link>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/</link>
		<comments>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 08:22:07 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2866</guid>
		<description><![CDATA[只需要将上面的内容保存为.htaccess文件，并上传到想要禁止执行的文件夹内即可禁止执行.php.html.htm这三种类型的文件。]]></description>
			<content:encoded><![CDATA[<p>&lt;Files ~ ".php"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;<br />
&lt;Files ~ ".html"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;<br />
&lt;Files ~ ".htm"&gt;<br />
Order allow,deny<br />
Deny from all<br />
&lt;/Files&gt;</p>
<p>只需要将上面的内容保存为.htaccess文件，并上传到想要禁止执行的文件夹内即可禁止执行.php.html.htm这三种类型的文件。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e5%a4%b9%e8%ae%be%e7%bd%ae%e7%a6%81%e6%ad%a2%e6%89%a7%e8%a1%8c%e8%84%9a%e6%9c%ac%e6%96%87%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php防采集代码</title>
		<link>http://www.3code.cn/php%e9%98%b2%e9%87%87%e9%9b%86%e4%bb%a3%e7%a0%81/</link>
		<comments>http://www.3code.cn/php%e9%98%b2%e9%87%87%e9%9b%86%e4%bb%a3%e7%a0%81/#comments</comments>
		<pubDate>Tue, 31 May 2011 06:08:55 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php防采集]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2690</guid>
		<description><![CDATA[&#60;?php $HTTP_REFERER = $_SERVER["HTTP_REFERER"]; $HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"]; $SERVER_NAME = $_SERVER["SERVER_NAME"]; $CompCharArr = explode(",","Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp"); $CompCharArrSize = sizeof($CompCharArr); $CheckSign = ""; for($i=0;$i&#60;$CompCharArrSize;$i++) { $ComChar = trim($CompCharArr[$i]); if($CompChar&#60;&#62;"" &#38;&#38; eregi($CompChar,$HTTP_USER_AGENT)) { $CheckSign = "T"; } } $SERVER_NAME_M = "http://".$SERVER_NAME;//strlen $EndLenth = strlen($SERVER_NAME_M) + 1; $CompServerName = "http://".$SERVER_NAME."/"; if(empty($CheckSign) &#38;&#38; ($HTTP_REFERER == "" or substr($HTTP_REFERER,0,$EndLenth) &#60;&#62; $CompServerName )) { [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
$HTTP_REFERER = $_SERVER["HTTP_REFERER"];<br />
$HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"];<br />
$SERVER_NAME = $_SERVER["SERVER_NAME"];<br />
$CompCharArr = explode(",","Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp");<br />
$CompCharArrSize = sizeof($CompCharArr);<br />
$CheckSign = "";<br />
for($i=0;$i&lt;$CompCharArrSize;$i++)<br />
{<br />
$ComChar = trim($CompCharArr[$i]);<br />
if($CompChar&lt;&gt;"" &amp;&amp; eregi($CompChar,$HTTP_USER_AGENT))<br />
{<br />
$CheckSign = "T";<br />
}<br />
}<br />
$SERVER_NAME_M = "http://".$SERVER_NAME;//strlen<br />
$EndLenth = strlen($SERVER_NAME_M) + 1;<br />
$CompServerName = "http://".$SERVER_NAME."/";<br />
if(empty($CheckSign) &amp;&amp; ($HTTP_REFERER == "" or substr($HTTP_REFERER,0,$EndLenth) &lt;&gt; $CompServerName ))<br />
{<br />
?&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;form action='' name=checkrefer id=checkrefer method=post&gt;&lt;/form&gt;<br />
&lt;script&gt;<br />
document.all.checkrefer.action=document.URL;<br />
document.all.checkrefer.submit();&lt;/script&gt;<br />
&lt;/body&gt;&lt;/html&gt;<br />
&lt;?php }?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e9%98%b2%e9%87%87%e9%9b%86%e4%bb%a3%e7%a0%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>数据库Mysql优化技巧常用方法</title>
		<link>http://www.3code.cn/%e6%95%b0%e6%8d%ae%e5%ba%93mysql%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95/</link>
		<comments>http://www.3code.cn/%e6%95%b0%e6%8d%ae%e5%ba%93mysql%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Mon, 16 May 2011 05:03:54 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2595</guid>
		<description><![CDATA[满足GROUP BY子句的最一般的方法是扫描整个表并创建一个新的临时表，表中每个组的所有行应为连续的，然后使用该临时表来找到组并应用累积函数(如 果有)。在某些情况中，MySQL能够做得更好，通过索引访问而不用创建临时表。数据库Mysql索引优化是数据库优化技巧常用的重要方法。]]></description>
			<content:encoded><![CDATA[<p>Mysql数据库优化技巧有很多，这里摘抄了一些许多程序员常用的Mysql优化方法，供参考及备忘。</p>
<h3>1. MySQL优化WHERE子句</h3>
<p>下面以SELECT语句为例，不过DELETE和UPDATE语句中的WHERE子句优化和这里SELECT  语句的Mysql优化技巧一样，下面只列出了一部分的MYSQL 优化方法实例。</p>
<p>减少括号嵌套：</p>
<pre>WHERE ((a AND b) AND c OR (((a AND b) AND (c AND d))))
优化-&gt; WHERE (a AND b AND c) OR (a AND b AND c AND d)</pre>
<p>常量重叠，去除不必要的常量：</p>
<pre>(a&lt;b AND b=c) AND a=5 AND (5=5)
优化-&gt; b&gt;5 AND b=c AND a=5</pre>
<p>如果不使用GROUP BY或分组函数(COUNT()、MIN()……)，HAVING与WHERE合   并。所有常数的表在查询中比其它表先读出。常数表为：1. 空表或只有1行的表; 2. 与在一个PRIMARY   KEY或UNIQUE索引的WHERE子句一起使用的表，这里所有的索引 部分使用常数表达式并且索引部分被定义为NOT NULL。</p>
<div><a title="34 topics" href="http://www.moldchina.org/tag/china-injection-mold-manufacturer">china injection mold manufacturer</a> <a title="29 topics" href="http://www.moldchina.org/tag/china-injection-mold">China Injection Mould</a> <a title="25 topics" href="http://www.moldchina.org/tag/china-mold-factory">china mold factory</a> <a title="39 topics" href="http://www.moldchina.org/tag/china-mold-makers">china mold maker</a> <a title="23 topics" href="http://www.moldchina.org/tag/china-mold-supplier">china mold supplier</a> <a title="23 topics" href="http://www.moldchina.org/tag/china-mould-maker">China Mould maker</a> <a title="10 topics" href="http://www.moldchina.org/tag/china-tooling-maker">china tooling maker</a> <a title="20 topics" href="http://www.moldchina.org/tag/toolmaker-china">China toolmaker</a> <a title="2 topics" href="http://www.moldchina.org/tag/in-china">in china</a> <a title="30 topics" href="http://www.moldchina.org/tag/plastic-injection-molding">plastic injection molding</a> <a title="41 topics" href="http://www.moldchina.org/tag/plastic-mould-china">plastic mould china</a> <a title="13 topics" href="http://www.moldchina.org/tag/china-prototype-parts">Prototype parts</a></div>
<h3><strong><strong>2. Mysql 优化</strong></strong><strong>避免SELECT *命令</strong></h3>
<p>从表中读取越多的数据，查询会变得更慢。始终指定你需要的列，这是一个非常良好的习惯。</p>
<pre>
<ol>
<li>$r = mysql_query("SELECT * FROM user WHERE user_id = 1");</li>
<li>$d = mysql_fetch_assoc($r);</li>
<li>echo "Welcome {$d['username']}";</li>
<li>// 优化如下:</li>
<li>$r = mysql_query("SELECT username FROM user WHERE user_id = 1");</li>
<li>$d = mysql_fetch_assoc($r);</li>
<li>echo "Welcome {$d['username']}";</li>
</ol>
</pre>
<h3>3. MySQL 如何优化DISTINCT 语句</h3>
<p>在大多数情况下，DISTINCT子句可以视为GROUP BY的特殊情况。例如，下面的两个数据库查询是等效的：</p>
<p>SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 &gt; <em>const</em>;<br />
SELECT c1, c2, c3 FROM t1 WHERE c1 &gt; <em>const</em> GROUP BY c1, c2,  c3;</p>
<p>由于这个等效性，适用于GROUP  BY查询的优化技巧和方法也适用于有DISTINCT子句的查询。</p>
<h3><strong>4. 优化MySQL查询缓存</strong></h3>
<p>MySQL查询可以启用高速查询缓存。这是提高数据库性能的有效Mysql优化方法之一。当同一个查询被执行多次时，从缓存中提取数据和直接从数据库中返回数据快很多，小小的Mysql优化技巧。</p>
<pre>
<ol>
<li>// query cache does NOT <strong>work</strong></li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= CURDATE()");</li>
<li>// query cache works!</li>
<li>$today = <strong>date</strong>("Y-m-d");</li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= '$today'");</li>
<li>// query cache does NOT <strong>work</strong></li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= CURDATE()");</li>
<li>// query cache works!</li>
<li>$today = <strong>date</strong>("Y-m-d");</li>
<li>$r = mysql_query("SELECT username FROM user WHERE signup_date &gt;= '$today'");</li>
</ol>
</pre>
<h3><strong><strong>5. Mysql 优化：</strong></strong><strong>用EXPLAIN优化SELECT查询</strong></h3>
<p>使用EXPLAIN关键字是另一个MySQL优化技巧，了解MySQL正在进行什么样的数据库查询操作。</p>
<p>实现一个SELECT查询（最好是比较复杂的一个，带joins方式的），在里面添加上你的关键词解释，在这里我们可以使用phpMyAdmin， 他会告诉你表中的结果。举例来说，假如当我在执行joins时，正忘记往一个数据库索引中添加列，EXPLAIN能帮助我找到问题的所在。</p>
<div>
<div>
<div>
<div>
<h3>6. MySQL如何优化ORDER BY</h3>
</div>
</div>
</div>
<p>MySQL可以使用一个索引来满足ORDER  			BY子句，而不需要额外的排序。下面看看ORDER BY 优化技巧和方法。</p>
<p>即使ORDER  			BY不确切匹配索引，只要WHERE子句中的所有未使用的索引部分和所有额外的ORDER  			BY  列为常数，就可以使用索引。在某些情况下，MySQL<em>不能</em>使用索引来解决ORDER  			 BY，尽管它仍然行使用索引来找到匹配WHERE子句。如：</p>
<p>对不同的关键字使用ORDER  			BY：SELECT * FROM t1 ORDER BY <em>key1</em>, <em>key2；</em></p>
<p>对关键字的非连续元素使用ORDER  			BY：SELECT * FROM t1 WHERE <em>key2</em>=<em>constant</em> ORDER BY <em>key_part2</em>；</p>
<p>混合ASC和DESC：SELECT * FROM t1 ORDER BY <em>key_part1</em> DESC, <em>key_part2</em> ASC；</p>
<p>用于查询行的关键字与ORDER BY中所使用的不相同：SELECT * FROM t1 WHERE <em>key2</em>=<em>constant</em> ORDER BY <em>key1</em>；</p>
<p>联接许多表，并且ORDER BY中的列并不是全部来自第1个 用于搜索行的非常量表。(这是EXPLAIN输出中的没有const联  接类型的第1个表）。</p>
<p>有不同的ORDER  			BY和GROUP  			BY表达式。</p>
<p>使用的表索引的类型不能按顺序保存行。例如，对于HEAP表的HASH索 引情况即如此。</p>
<p>通过EXPLAIN  			SELECT …ORDER BY，可以检查MySQL是否可以使用索引来解决查询。</p>
<p>文件排序优化不仅用于记录排序关键字和行的位置，并且还记录数据库查询需要的列。这样可以避免两次读取行。</p>
</div>
<h3><strong><strong>7. Mysql 优化</strong></strong><strong>：使用LIMIT 1取得唯一行</strong></h3>
<p>有时，当你要查询一张表是，你知道自己只需要看一行。你可能会去的一条十分独特的记录，或者只是刚好检查了任何存在的记录数，他们都满足了你的  WHERE子句。增加一个LIMIT  1会令你的查询更加有效，这个方法是Mysql优化很有效的一个技巧。这样数据库引擎发现只有1后将停止扫描，而不是去扫描整个表或索引。</p>
<pre>
<ol>
<li>$r = mysql_query("SELECT * FROM user WHERE state = 'Alabama'")</li>
<li>$r = mysql_query("SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1");</li>
</ol>
</pre>
<h3>8. MySQL如何优化 LIMIT</h3>
<p>使用LIMIT <em>row_count</em>而不使用HAVING时，<strong>MySQL</strong>将 以不同方式处理数据库查询。</p>
<p>如果你用LIMIT只选择一些行，当<strong>MySQL选 择</strong>做完整的表扫描时，它将在一些情况下使用索引，涉及到Mysql索引优化。</p>
<p>如果你使用LIMIT <em>row_count</em>与ORDER  			BY，<strong>MySQL</strong>一旦找到了排序结果的第一个<em>row_count</em>行，  将结束排序而不是排序整个表。如果使用索引，将很快。如果必须进行文件排序（filesort），必须选择所有匹配查询没有LIMIT子  句的行，并且在确定已经找到第1个<em>row_count</em>行  前，必须对它们的大部分进行排序。在任何一种情况下，一旦找到了行，则不需要再排序结果的其它部分，并且MySQL不再进行排 序。</p>
<p>当结合LIMIT <em>row_count</em>和DISTINCT时，<strong>MySQL</strong>一旦找到<em>row_count</em>个  唯一的行，它将停止。</p>
<p>在一些情况下，GROUP  			BY能通过顺序读取键(或在键上做排序)来解决，然后计算摘要直到关键字的值 改变。在这种情况下，LIMIT  			<em>row_count</em>将不计算任何不必要的GROUP  			BY值。</p>
<p>只要MySQL已经发送了需要的行数到客户，它将放弃查询，除非你正使用SQL_CALC_FOUND_ROWS。</p>
<p>LIMIT  			0将总是快速返回一个空集合。这对检查数据库查询的有效性是有用的。当使用MySQL  			  API时，它也可以用来得到结果列的列类型。(该mysql优化技巧在MySQL  			Monitor中不工作，只显示Empty  set；应使用SHOW  		 	COLUMNS或DESCRIBE）。</p>
<p>当服务器使用临时表来进行查询时，使用LIMIT 			<em>row_count</em>子句来计算需要多少空间。</p>
<h3><strong><strong>9. Mysql 优化</strong></strong><strong>：保证连接的索引是相同的类型</strong></h3>
<p>如果应用程序中包含多个连接查询，你需要确保你链接的列在两边的数据库表上都被索引。这会影响MySQL如何优化内部联接操作。此外，加入的列，必须是同一类型。例如，你加入一个DECIMAL列，而同时加入另一个表中的int列，MySQL将无法使用其中至少一个 指标。这种方法即使字符编码必须同为字符串类型。</p>
<pre>
<ol>
<pre>
<li>// looking <strong>for</strong> companies in my state</li>
<li>$r = mysql_query("<strong>SELECT</strong> company_name <strong>FROM</strong> users</li>
<li>    LEFT JOIN companies <strong>ON</strong> (users.state = companies.state)</li>
<li>    <strong>WHERE</strong> users.id = $user_id")</li>
<li>// both state columns should be indexed</li>
<li>// and they both should be the same type and <strong>character</strong> encoding</li>
<li>// or MySQL might do <strong>full</strong> <strong>table</strong> scans</li>
</pre>
</ol>
</pre>
<h3><strong><strong>10. Mysql 优化</strong></strong><strong>避免使用BY RAND()命令</strong></h3>
<p>若需要随机显示结果，MySQL可能 会为表中每一个独立的行执行数据库BY RAND()命令（这会消耗处理器的处理能力，不利于Mysql数据库优化），这种方法然后给你仅返回一行。</p>
<pre>
<ol>
<li>$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1");</li>
<li>// Mysql 优化如下:</li>
<li>$r = mysql_query("SELECT count(*) FROM user");</li>
<li>$d = mysql_fetch_row($r);</li>
<li>$rand = mt_rand(0,$d[0] - 1);</li>
<li>$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");</li>
</ol>
</pre>
<h3><strong>11. Mysql 优化变量类型：将IP地址存储为无符号整型</strong></h3>
<p>程序员经常在创建一个VARCHAR（15）时并没有意识到他们可以将IP地址以整数形式来存储，没有考虑到Mysql优化的问题。当你有一个 INT类型时，你只占用4个字 节的空间，这是一个固定大小的领域。确定所操作的数据库列是一个UNSIGNED  INT类型的,因为IP地址将使用32位unsigned integer。</p>
<h3>12. MySQL如何优化LEFT JOIN和RIGHT JOIN</h3>
<p>在MySQL中，LEFT JOIN和STRAIGHT_JOIN强制的表读顺序可以帮助联接数据库Mysql优化器更快地工作，因为检查的表交换更少。</p>
<pre>SELECT *</pre>
<pre>    FROM b,a LEFT JOIN c ON (c.key=a.key) LEFT JOIN d ON (d.key=a.key)</pre>
<pre>    WHERE b.key=d.key;</pre>
<p>MySQL可以进行下面方法的LEFT JOIN优化：如果对于产生的NULL行，WHERE条件总为假，LEFT JOIN变为普通联接。</p>
<p>例如，在下面的查询中如果t2.column1为NULL，WHERE 子句将为false：</p>
<pre>SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;</pre>
<p>因此，可以安全地将查询转换为普通联接：</p>
<pre>SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;</pre>
<p>这样可以更快，因为如果可以使查询更佳，MySQL可以在表t1之前使用表t2。 为了强制使用数据库表顺序，使用STRAIGHT_JOIN。</p>
<h3>13. MySQL如何优化嵌套Join</h3>
<p>在MySQL数据库中，CROSS JOIN语法上等价于INNER JOIN (它们可以彼此代替。在标准SQL中，它们不等价。INNER JOIN结合ON子句使用；CROSS JOIN 用于其它地方。</p>
<p>总的来说，在只包含内部联接操作的联接表达式中可以忽略括号。删除括号并将操作组合到左侧后，联接表达式：</p>
<pre>t1 LEFT JOIN (t2 LEFT JOIN t3 ON t2.b=t3.b OR t2.b IS NULL)</pre>
<pre>   ON t1.a=t2.a</pre>
<p>转换为表达式：</p>
<pre>(t1 LEFT JOIN t2 ON t1.a=t2.a) LEFT JOIN t3</pre>
<pre>    ON t2.b=t3.b OR t2.b IS NULL</pre>
<p>但是这两个表达式不等效。不能忽视左外联接操作的右操作数和右联接操作的左操作数中的括号。也就是不能忽视外联接操作中的内表达式中的括号。可以忽视其它 操作数中的括号(外部表的操作数)。</p>
<p>对于任何表t1、t2、t3和 属性t2.b和t3.b的任何条件P，下面的表达式：</p>
<pre>(t1,t2) LEFT JOIN t3 ON P(t2.b,t3.b)</pre>
<p>等价于表达式</p>
<pre>t1，t2 LEFT JOIN t3 ON P(t2.b,t3.b)</pre>
<p>MySQL数据库对于只包含内联接(而非外联接)的联接表达式，可以删除括号。 你可以移除括号并从左到右评估(或实际上，你可以按任何顺序评估表)。对外联接却不是这样。去除括号可能会更改结果。对外联接和内联接的结合，也不是这样。去除括号可能会更改结果。</p>
<div>
<div>
<div>
<div>
<h3>14. MySQL如何优化GROUP BY</h3>
</div>
</div>
</div>
<p>满足GROUP  			BY子句的最一般的方法是扫描整个表并创建一个新的临时表，表中每个组的所有行应为连续的，然后使用该临时表来找到组并应用累积函数(如 果有)。在某些情况中，<strong>MySQL</strong>能够做得更好，通过索引访问而不用创建临时表。数据库Mysql索引优化是数据库优化技巧常用的重要方法。</p>
<p>为GROUP  			BY使用数据库索引的最重要的前提条件是 所有GROUP  			 BY列引用同一索引的属性，并且索引按顺序保存其关键字(例如，这是B-树索  引，而不是HASH索引)。是否用索引访问来代替临时表的使用还取决于在查询中使用了哪部分索引、  为该部分指定的条件，以及选择的累积函数。有两种方法通过索引访问执行GROUP  			 BY查询，组合操作结合所有范围判断式使用(如果有)。第2个方法首先执行范围扫描，然后组合结果元组。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/%e6%95%b0%e6%8d%ae%e5%ba%93mysql%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7%e5%b8%b8%e7%94%a8%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL高手篇:精妙SQL语句介绍</title>
		<link>http://www.3code.cn/sql%e9%ab%98%e6%89%8b%e7%af%87%e7%b2%be%e5%a6%99sql%e8%af%ad%e5%8f%a5%e4%bb%8b%e7%bb%8d/</link>
		<comments>http://www.3code.cn/sql%e9%ab%98%e6%89%8b%e7%af%87%e7%b2%be%e5%a6%99sql%e8%af%ad%e5%8f%a5%e4%bb%8b%e7%bb%8d/#comments</comments>
		<pubDate>Tue, 03 May 2011 08:40:05 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2547</guid>
		<description><![CDATA[SQL高手篇:精妙SQL语句介绍 ]]></description>
			<content:encoded><![CDATA[<p>说明：复制表(只复制结构,源表名：a 新表名：b)</p>
<p>SQL: select * into b from a where 1&lt;&gt;1</p>
<p>说明：拷贝表(拷贝数据,源表名：a 目标表名：b)</p>
<p>SQL: insert into b(a, b, c) select  d,e,f from b;</p>
<p>说明：显示文章、提交人和最后回复时间</p>
<p>SQL: select  a.title,a.username,b.adddate from table a,(select max(adddate) adddate from  table where table.title=a.title) b</p>
<p>说明：外连接查询(表名1：a 表名2：b)</p>
<p>SQL:  select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c</p>
<p>说明：日程安排提前五分钟提醒</p>
<p>SQL: select * from 日程安排 where  datediff('minute',f开始时间,getdate())&gt;5</p>
<p>说明：两张关联表，删除主表中已经在副表中没有的信息</p>
<p>SQL:</p>
<p>delete from info where not exists ( select * from infobz  where info.infid=infobz.infid )</p>
<p>说明：--</p>
<p>SQL:</p>
<p>SELECT A.NUM,  A.NAME, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1,(SELECT X.NUM, X.UPD_DATE,  Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND  FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,  (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE  TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM')  amp;brvbar;amp;brvbar; '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X.NUM =  Y.NUM （+）AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) &lt;&gt; X.STOCK_ONHAND ) B  WHERE A.NUM = B.NUM</p>
<p>说明：--</p>
<p>SQL:</p>
<p>select * from studentinfo  where not exists(select * from student where studentinfo.id=student.id) and  系名称='"amp;strdepartmentnameamp;"' and 专业名称='"amp;strprofessionnameamp;"' order  by 性别,生源地,高考总成绩<br />
说明： 从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源）</p>
<p>SQL:</p>
<p>SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS  telyear, SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS  JUE,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,  SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS  NOV,SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC FROM  (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration FROM  TELFEESTAND a, TELFEE b WHERE a.tel = b.telfax) a GROUP BY a.userper, a.tel,  a.standfee, TO_CHAR(a.telfeedate, 'yyyy')</p>
<p>说明：四表联查问题：</p>
<p>SQL: select  * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d  on a.a=d.d where .....</p>
<p>说明：得到表中最小的未使用的ID号</p>
<p>SQL:</p>
<p>SELECT  (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN  MIN(HandleID) + 1 ELSE 1 END) as HandleID FROM Handle WHERE NOT HandleID IN  (SELECT a.HandleID - 1 FROM Handle a)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/sql%e9%ab%98%e6%89%8b%e7%af%87%e7%b2%be%e5%a6%99sql%e8%af%ad%e5%8f%a5%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP生成PDF实战</title>
		<link>http://www.3code.cn/php%e7%94%9f%e6%88%90pdf%e5%ae%9e%e6%88%98/</link>
		<comments>http://www.3code.cn/php%e7%94%9f%e6%88%90pdf%e5%ae%9e%e6%88%98/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 03:37:21 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2512</guid>
		<description><![CDATA[PHP生成PDF实战]]></description>
			<content:encoded><![CDATA[<p>PHP生成PDF实战</p>
<p>附有实例。</p>
<p>下载地址：<a href="http://www.3code.cn/download/php2pdf.rar">http://www.3code.cn/download/php2pdf.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e7%94%9f%e6%88%90pdf%e5%ae%9e%e6%88%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RewriteRule-htaccess详细语法使用教程</title>
		<link>http://www.3code.cn/rewriterule-htaccess%e8%af%a6%e7%bb%86%e8%af%ad%e6%b3%95%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b/</link>
		<comments>http://www.3code.cn/rewriterule-htaccess%e8%af%a6%e7%bb%86%e8%af%ad%e6%b3%95%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 08:10:04 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2435</guid>
		<description><![CDATA[RewriteRule-htaccess详细语法使用教程.有一个经典的教程： 正则表达式30分钟入门教程，大家可以搜索一下。
这个教程的确很简单，看完基本上写一些简单的正则就没有问题了。正则是一个需要长期使用的工具，隔段时间不用会忘记，所以我每次都看一遍这个教程。其实学过之后重要的就是一点内容。

]]></description>
			<content:encoded><![CDATA[<p><strong>一、正则表达式教程</strong></p>
<p>有一个经典的教程： 正则表达式30分钟入门教程，大家可以搜索一下。<br />
这个教程的确很简单，看完基本上写一些简单的正则就没有问题了。正则是一个需要长期使用的工具，隔段时间不用会忘记，所以我每次都看一遍这个教程。其实学过之后重要的就是一点内容。</p>
<p><strong>简单罗列如下：</strong></p>
<p>.换行符以外的所有字符<br />
\w 匹配字母或数字或下划线或汉字<br />
\s 匹配任意的空白符<br />
\d 匹配数字<br />
\b 匹配单词的开始或结束<br />
^ 匹配字符串的开始<br />
$ 匹配字符串的结束<br />
* 重复零次或更多次<br />
+ 重复一次或更多次<br />
? 重复零次或一次<br />
{n} 重复n次<br />
{n,}重复n次或更多次<br />
{n,m} 重复n到m次</p>
<p><strong>应用替换时，前面第一个（）中匹配的内容后面就用$1引用，第二个（）中匹配的就用$2应用……</strong></p>
<p><strong>分析一下 discuz搜索引擎优化 htaccess 里面的重写。</strong></p>
<p>RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&amp;page=$2</p>
<p>首先加入用户通过 linuxidc.com/forum-2-3.html 访问discuz论坛，那么先通过.htaccess过滤，看看是否需要.htaccess引导一下用户，如果满足列出的一系列RewriteCond的 条件那么就进行重写，</p>
<p>discuz的没有列出RewriteCond 所以应该全部都进行重写。所以开始进行转写，forum-2-3.html 这个正好符合 列出的^forum-([0-9]+)-([0-9]+)\.html$ 正则表达式。并且 $1 为 2 ，$2为3 ，所以代</p>
<p>入后面，即 forumdisplay.php?fid=2&amp;page=3 加上前面的RewriteBase 指定的文件目录，那么就带他到制定目录的forumdisplay.php?fid=2&amp;page=3 。</p>
<p><strong>二、常见的.htaccess应用举例（部分例子引自四个例子实战讲解.htaccess文件rewrite规则）</strong></p>
<p>4.1 防止盗链，如果来得要访问jpe jpg bmp png结尾的url 用户不是来自我们的网站，那么让他看一张我们网站的展示图片。<br />
RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]RewriteCond %{HTTP_REFERER} !^$RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]</p>
<p>4.2 网站升级的时候，只有特定IP才能访问，其他的用户将看到一个升级页面<br />
RewriteEngine onRewriteCond %{REQUEST_URI} !/upgrade.html$RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30</p>
<p>RewriteRule $ <a href="http://www.linuxidc.com/upgrade.html">http://www.linuxidc.com/upgrade.html</a> [R=302,L]</p>
<p>4.3把老的域名转向新域名<br />
# redirect from old domain to new domainRewriteEngine OnRewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]</p>
<p><strong>三、常用示例</strong></p>
<p><span style="color: #800000;">RewriteEngine On<br />
RewriteRule index.html index.php</span></p>
<p>比如：<a href="http://www.3code.cn/index.html">http://www.3code.cn/index.html</a>  -&gt; <a href="http://www.3code.cn/index.php">http://www.3code.cn/index.php</a></p>
<p><span style="color: #800000;">RewriteRule ^test([0-9]*).html$ test.php?id=$1</span></p>
<p>比如：<a href="http://www.3code.cn/test8.html">http://www.3code.cn/test8.html</a>  -&gt; <a href="http://www.3code.cn/test.php?id=8">http://www.3code.cn/test.php?id=8</a></p>
<p><span style="color: #800000;">RewriteRule ^cat-([0-9]+)-([0-9]+)\.html$ cat.php?id1=$1&amp;id2=$2</span></p>
<p>比如：<a href="http://www.3code.cn/cat-1-3.html">http://www.3code.cn/cat-1-3.html</a> -&gt; <a href="http://www.3code.cn/cat.php?id1=1&amp;id2=3">http://www.3code.cn/cat.php?id1=1&amp;id2=3</a></p>
<p><span style="color: #800000;">RewriteRule ^cat-([a-zA-Z0-9\-]*)-([0-9]+)-([0-9]+)\.html$ cat.php?id0=$1&amp;id1=$2&amp;id2=$3</span></p>
<p>比如：<a href="http://www.3code.cn/cat-zbc2ac-3-5.html">http://www.3code.cn/cat-zbc2ac-3-5.html</a> -&gt; <a href="http://www.3code.cn/cat.php?id0=zbc2ac&amp;id1=3&amp;id2=5">http://www.3code.cn/cat.php?id0=zbc2ac&amp;id1=3&amp;id2=5</a></p>
<p><span style="color: #800000;">RewriteRule ^cat1-([0-9]+)-([0-9]+)-([0-9]+)\.html$ cat1.php?id1=$1&amp;id2=$2&amp;id3=$3</span></p>
<p>比如：<a href="http://www.3code.cn/cat1-4-3-8.html">http://www.3code.cn/cat1-4-3-8.html</a> -&gt; <a href="http://www.3code.cn/cat1.php?id1=4&amp;id2=3&amp;id3=8">http://www.3code.cn/cat1.php?id1=4&amp;id2=3&amp;id3=8</a></p>
<p><span style="color: #800000;">RewriteRule ^cat([0-9]*)/$ cat.php?id1=$1</span></p>
<p>比如：<a href="http://www.3code.cn/cat5/">http://www.3code.cn/cat5/</a> -&gt; <a href="http://www.3code.cn/cat.php?id1=5">http://www.3code.cn/cat.php?id1=5</a></p>
<p><span style="color: #800000;">RewriteRule ^catm([0-9]*)/([0-9]*)/$ catm.php?id1=$1&amp;id2=$2</span></p>
<p>比如：<a href="http://www.3code.cn/catm6/3/">http://www.3code.cn/catm6/3/</a> -&gt; <a href="http://www.3code.cn/catm.php?id1=1&amp;id2=3">http://www.3code.cn/catm.php?id1=6&amp;id2=3</a></p>
<p>希望对大家有所帮助！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/rewriterule-htaccess%e8%af%a6%e7%bb%86%e8%af%ad%e6%b3%95%e4%bd%bf%e7%94%a8%e6%95%99%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>php正则获取与修改img标记中任意属性</title>
		<link>http://www.3code.cn/php%e6%ad%a3%e5%88%99%e8%8e%b7%e5%8f%96%e4%b8%8e%e4%bf%ae%e6%94%b9img%e6%a0%87%e8%ae%b0%e4%b8%ad%e4%bb%bb%e6%84%8f%e5%b1%9e%e6%80%a7/</link>
		<comments>http://www.3code.cn/php%e6%ad%a3%e5%88%99%e8%8e%b7%e5%8f%96%e4%b8%8e%e4%bf%ae%e6%94%b9img%e6%a0%87%e8%ae%b0%e4%b8%ad%e4%bb%bb%e6%84%8f%e5%b1%9e%e6%80%a7/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 05:18:23 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP字符串操作]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2292</guid>
		<description><![CDATA[php正则取img标记中任意属性，正则替换去掉或改变图片img标记中的任意属性]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
/*正则取图片img标记中的任意属性*/<br />
$word = '&lt;p height="22" align="cenetr"&gt;111 22&lt;/p&gt; &lt;img height="60" src="/upload/images/aaa.jpg"    width=100 style=&gt;&lt;div style="float:left;"&gt;中国人&lt;/div&gt;';<br />
//取width<br />
preg_match('/&lt;img.+(width=\"?\d*\"?).+&gt;/i',$word,$matches);<br />
echo $matches[1];</p>
<p>//取height<br />
preg_match('/&lt;img.+(height=\"?\d*\"?).+&gt;/i',$word,$matches);<br />
echo $matches[1];</p>
<p>//取src<br />
preg_match('/&lt;img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+&gt;/i',$word,$matches);<br />
echo $matches[1];</p>
<p>/*正则替换去掉或改变图片img标记中的任意属性***************************************************************/<br />
$str = '&lt;p height="22" align="cenetr"&gt;111 22&lt;/p&gt; &lt;img height="60" src="/upload/images/aaa.jpg"    width=100 style=&gt;&lt;div style="float:left;"&gt;中国人&lt;/div&gt;<br />
&lt;p height="22" align="cenetr"&gt;31313 224344&lt;/p&gt; &lt;img src="/upload/images/bbb.jpg" height="60"    width=100 style=&gt;&lt;div style="float:left;"&gt;1212121&lt;/div&gt;';<br />
//改变src属性(此处将原来的src="/upload/images/bbb.jpg"改变为src="/upload/_thumbs/Images/bbb.jpg")<br />
print preg_replace('/(&lt;img.+src=\"?.+)(images\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+&gt;)/i',"\${1}_thumbs/Images/\${3}",$str);<br />
/*改变src属性,<br />
此处将原来的src="/upload/images/bbb.jpg"改变为src="/upload/_thumbs/Images/bbb.jpg",并舍弃宽和高<br />
(比如你想在前台显示缩略图,但数据库中存储的是原图的路径。为什么要舍弃宽高??你缩略图啊!还是原图的宽高,会怎样???)<br />
*/<br />
print preg_replace('/(&lt;img).+(src=\"?.+)images\/(.+\.(jpg|gif|bmp|bnp|png)\"?).+&gt;/i',"\${1} \${2}_thumbs/Images/\${3}&gt;",$str);</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e6%ad%a3%e5%88%99%e8%8e%b7%e5%8f%96%e4%b8%8e%e4%bf%ae%e6%94%b9img%e6%a0%87%e8%ae%b0%e4%b8%ad%e4%bb%bb%e6%84%8f%e5%b1%9e%e6%80%a7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL中文模糊检索问题</title>
		<link>http://www.3code.cn/mysql%e4%b8%ad%e6%96%87%e6%a8%a1%e7%b3%8a%e6%a3%80%e7%b4%a2%e9%97%ae%e9%a2%98/</link>
		<comments>http://www.3code.cn/mysql%e4%b8%ad%e6%96%87%e6%a8%a1%e7%b3%8a%e6%a3%80%e7%b4%a2%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 07:04:29 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2262</guid>
		<description><![CDATA[在 MySQL下，在进行中文模糊检索时，经常会返回一些与之不相关的记录，如查找 "%a%" 时，返回的可能有中文字符，却没有a字符存在。本人以前也曾遇到过类似问题，经详细阅读MySQL的Manual，发现可以有一种方法很方便的解决并得到满意的结果。]]></description>
			<content:encoded><![CDATA[<p>在 MySQL下，在进行中文模糊检索时，经常会返回一些与之不相关的记录，如查找 "%a%" 时，返回的可能有中文字符，却没有a字符存在。本人以前也曾遇到过类似问题，经详细阅读MySQL的Manual，发现可以有一种方法很方便的解决并得到满意的结果。<br />
例子：<br />
希望通过“标题”对新闻库进行检索，关键字可能包含是中英文，如下SQL语句：<br />
select id,title,name from achech_com.news where title like '%a%'<br />
返回的结果，某些title字段确定带了“a”关键字，而有些则只有中文，但也随之返回在检索结果中。<br />
解决方法，使用 BINARY 属性进行检索，如：<br />
QUOTE: )<br />
select id,title,name from achech_com.news where binary title like '%a%'<br />
返回的结果较之前正确，但英文字母区分大小写，故有时在检索如“Achech”及“achech”的结果是不一样的。知道了使用 BINARY 属性可以解决前面这个问题，再看看 MySQL 支持的UCASE 及 CONCAT 函数，其中 UCASE 是将英文全部转成大写，而CONCAT函数的作用是对字符进行连接，以下是我们完全解决后的SQL 语句：<br />
QUOTE: &lt;g<br />
select id,title,name from achech_com.news<br />
where binary ucase(title) like concat('%',ucase('a'),'%') "<br />
检索的步骤是先将属性指定为 BINARY ，以精确检索结果，而被 like 的 title内容存在大小写字母的可能，故先使用 ucase 函数将字段内容全部转换成大写字母，然后再进行 like 操作，而 like 的操作使用模糊方法，使用 concat的好处是传进来的可以是直接的关键字，不需要带“%”万用符，将“'a'”直接换成你的变量，在任何语言下都万事无忧了。 当然你也可以这么写：<br />
select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%')<br />
检索的结果还算满意吧，不过速度可能会因此而慢N毫秒。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/mysql%e4%b8%ad%e6%96%87%e6%a8%a1%e7%b3%8a%e6%a3%80%e7%b4%a2%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>去除特殊字符生成URL的函数</title>
		<link>http://www.3code.cn/%e5%8e%bb%e9%99%a4%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%9f%e6%88%90url%e7%9a%84%e5%87%bd%e6%95%b0/</link>
		<comments>http://www.3code.cn/%e5%8e%bb%e9%99%a4%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%9f%e6%88%90url%e7%9a%84%e5%87%bd%e6%95%b0/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 08:24:34 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>
		<category><![CDATA[PHP生成HTML]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2240</guid>
		<description><![CDATA[去除特殊字符生成URL的函数]]></description>
			<content:encoded><![CDATA[<p>&lt;?<br />
//去除特殊字符的函数，目的是生成URL<br />
echo "输入: ".$_REQUEST["myfilename"]."&lt;br&gt;&lt;br&gt;";<br />
$myfilename=strtolower(str_replace(" ","-",trim($_REQUEST["myfilename"])));<br />
$myarp=array('.','+',',','，','。','%','&amp;','*','/','\\','|','=','(',')','^','$','#','@','!','~','`','/',';',':','"','[',']','{','}','&gt;','&lt;');<br />
for($i=0;$i&lt;=count($myarp);$i++)<br />
{$myfilename=str_replace($myarp[$i],"",$myfilename);<br />
}</p>
<p>echo "输出： ". $myfilename."&lt;br&gt;&lt;br&gt;";<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/%e5%8e%bb%e9%99%a4%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%9f%e6%88%90url%e7%9a%84%e5%87%bd%e6%95%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP企业级应用缓存技术</title>
		<link>http://www.3code.cn/php%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8%e7%bc%93%e5%ad%98%e6%8a%80%e6%9c%af/</link>
		<comments>http://www.3code.cn/php%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8%e7%bc%93%e5%ad%98%e6%8a%80%e6%9c%af/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 16:22:02 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2158</guid>
		<description><![CDATA[数据缓存：这里所说的数据缓存是指数据库查询缓存，每次访问页面的时候,都会先检测相应的缓存数据是否存在，如果不存在，就连接数据库，得到数据， 并把查询结果序列化后保存到文件中，以后同样的查询结果就直接从缓存表或文件中获得。 用的最广的例子看Discuz的搜索功能，把结果ID缓存到一个表中，下次搜索相同关键字时先搜索缓存表。 举个常用的方法，多表关联的时候，把附表中的内容生成数组保存到主表的一个字段中，需要的时候数组分解一下，这样的好处是只读一个表，坏处就是两个 数据同步会多不少步骤，数据库永远是瓶颈，用硬盘换速度，是这个的关键点。 页面缓存： 每次访问页面的时候，都会先检测相应的缓存页面文件是否存在，如果不存在，就连接数据库，得到数据，显示页面并同时生成缓存页面文件，这样下次访问 的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能) 时间触发缓存： 检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大，那么就用缓存，否则更新缓存。 内容触发缓存： 当插入数据或更新数据时，强制更新缓存。 静态缓存： 这里所说的静态缓存是指静态化，直接生成HTML或xml等文本文件，有更新的时候重生成一次，适合于不太变化的页面，这就不说了。 以上内容是代码级的解决方案，我直接CP别的框架，也懒得改，内容都差不多，很容易就做到，而且会几种方式一起用，但下面的内容是服务器端的缓存方 案，非代码级的，要有多方的合作才能做到 内存缓存: Memcached是高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度。 这里说下Memcached的例子： &#60;?php $memcache = new Memcache; $memcache-&#62;connect(‘localhost’, 11211) or die (“Could not connect”); $version = $memcache-&#62;getVersion(); echo “Server’s version: “.$version.”\n”; $tmp_object = new stdClass; $tmp_object-&#62;str_attr = ‘test’; $tmp_object-&#62;int_attr = 123; $memcache-&#62;set(‘key’, $tmp_object, false, 10) or die (“Failed [...]]]></description>
			<content:encoded><![CDATA[<p>数据缓存：这里所说的数据缓存是指数据库查询缓存，每次访问页面的时候,都会先检测相应的缓存数据是否存在，如果不存在，就连接数据库，得到数据， 并把查询结果序列化后保存到文件中，以后同样的查询结果就直接从缓存表或文件中获得。</p>
<p>用的最广的例子看Discuz的搜索功能，把结果ID缓存到一个表中，下次搜索相同关键字时先搜索缓存表。</p>
<p>举个常用的方法，多表关联的时候，把附表中的内容生成数组保存到主表的一个字段中，需要的时候数组分解一下，这样的好处是只读一个表，坏处就是两个 数据同步会多不少步骤，数据库永远是瓶颈，用硬盘换速度，是这个的关键点。</p>
<p>页面缓存：</p>
<p>每次访问页面的时候，都会先检测相应的缓存页面文件是否存在，如果不存在，就连接数据库，得到数据，显示页面并同时生成缓存页面文件，这样下次访问 的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)</p>
<p>时间触发缓存：</p>
<p>检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大，那么就用缓存，否则更新缓存。</p>
<p>内容触发缓存：</p>
<p>当插入数据或更新数据时，强制更新缓存。</p>
<p>静态缓存：</p>
<p>这里所说的静态缓存是指静态化，直接生成HTML或xml等文本文件，有更新的时候重生成一次，适合于不太变化的页面，这就不说了。</p>
<p>以上内容是代码级的解决方案，我直接CP别的框架，也懒得改，内容都差不多，很容易就做到，而且会几种方式一起用，但下面的内容是服务器端的缓存方 案，非代码级的，要有多方的合作才能做到</p>
<p>内存缓存:</p>
<p>Memcached是高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度。</p>
<p>这里说下Memcached的例子：</p>
<p>&lt;?php<br />
$memcache = new Memcache;<br />
$memcache-&gt;connect(‘localhost’, 11211) or die (“Could not connect”);<br />
$version = $memcache-&gt;getVersion();<br />
echo “Server’s version: “.$version.”\n”;<br />
$tmp_object = new stdClass;<br />
$tmp_object-&gt;str_attr = ‘test’;<br />
$tmp_object-&gt;int_attr = 123;<br />
$memcache-&gt;set(‘key’, $tmp_object, false, 10) or die (“Failed to save data at the server”);<br />
echo “Store data in the cache (data will expire in 10 seconds)\n”;<br />
$get_result = $memcache-&gt;get(‘key’);<br />
echo “Data from the cache:\n”;<br />
var_dump($get_result);<br />
?&gt;</p>
<p>读库的例子：</p>
<p>&lt;?php<br />
$sql = ‘SELECT * FROM users’;<br />
$key = md5($sql);   //memcached 对象标识符<br />
if ( !($datas = $mc-&gt;get($key)) ) {<br />
//  在 memcached 中未获取到缓存数据，则使用数据库查询获取记录集。<br />
echo “n”.str_pad(‘Read datas from MySQL.’, 60, ‘_’).”n”;<br />
$conn = mysql_connect(‘localhost’, ‘test’, ‘test’);<br />
mysql_select_db(‘test’);<br />
$result = mysql_query($sql);<br />
while ($row = mysql_fetch_object($result))<br />
$datas[] = $row;<br />
//  将数据库中获取到的结果集数据保存到 memcached 中，以供下次访问时使用。<br />
$mc-&gt;add($key, $datas);<br />
} else {<br />
echo “n”.str_pad(‘Read datas from memcached.’, 60, ‘_’).”n”;<br />
}<br />
var_dump($datas);<br />
?&gt;</p>
<p>php的缓冲器：</p>
<p>有eaccelerator， apc， phpa，xcache，这个这个就不说了吧，搜索一堆一堆的，自己看啦，知道有这玩意就OK</p>
<p>MYSQL缓存：</p>
<p>这也算非代码级的，经典的数据库就是用的这种方式，看下面的运行时间，0.09xxx之类的<br />
我贴段根据蓝色那家伙修改后部分my.ini 吧，2G的MYISAM表可以在0.05S左右，据说他前后改了有快一年</p>
<p>[client]<br />
……<br />
default-character-set=gbk<br />
default-storage-engine=MYISAM<br />
max_connections=600<br />
max_connect_errors=500<br />
back_log=200<br />
interactive_timeout=7200<br />
query_cache_size=64M<br />
……<br />
table_cache=512<br />
……<br />
myisam_max_sort_file_size=100G<br />
myisam_max_extra_sort_file_size=100G<br />
myisam_sort_buffer_size=128M<br />
key_buffer_size=1024M<br />
read_buffer_size=512M<br />
……<br />
thread_concurrency=8<br />
基于反向代理的Web缓存:</p>
<p>如Nginx，SQUID，mod_PRoxy(apache2以上又分为mod_proxy和mod_cache)<br />
NGINX的例子</p>
<p>&lt;nginx.conf&gt;<br />
#user  nobody;<br />
worker_processes  4;<br />
error_log  logs/error.log crit;<br />
pid        logs/nginx.pid;<br />
worker_rlimit_nofile 10240;<br />
events {<br />
use epoll;<br />
worker_connections  51200;<br />
}<br />
http {<br />
include       mime.types;<br />
default_type  application/octet-stream;<br />
sendfile    on;<br />
keepalive_timeout 65;<br />
tcp_nodelay on;<br />
# server pool<br />
upstream bspfrontsvr {<br />
server 10.10.10.224:80   weight=1;<br />
server 10.10.10.221:80   weight=1;<br />
}</p>
<p>upstream bspimgsvr {<br />
server 10.10.10.201:80   weight=1;<br />
}</p>
<p>upstream bspstylesvr {<br />
server 10.10.10.202:80   weight=1;<br />
}</p>
<p>upstream bsphelpsvr {<br />
server 10.10.10.204:80   weight=1;<br />
}</p>
<p>upstream bspwsisvr {<br />
server 10.10.10.203:80   weight=1;<br />
}</p>
<p>upstream bspadminsvr {<br />
server 10.10.10.222:80   weight=1;<br />
}</p>
<p>upstream bspbuyersvr {<br />
server 10.10.10.223:80   weight=1;<br />
}</p>
<p>upstream bspsellersvr {<br />
server 10.10.10.225:80   weight=1;<br />
}<br />
upstream  bsploginsvr  {<br />
server 10.10.10.220:443  weight=1;<br />
}<br />
upstream  bspregistersvr  {<br />
server 10.10.10.220:80  weight=1;<br />
}<br />
log_format  test_com  ‘$remote_addr – $remote_user [$time_local] “$request” ‘<br />
‘$status $body_bytes_sent “$http_referer” “$http_user_agent” ‘;<br />
#——————————————————————–<br />
#img.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  img.test.com;<br />
location / {<br />
proxy_pass      http://bspimgsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/img.log  test_com;<br />
}</p>
<p>#style.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  style.test.com;<br />
location / {<br />
proxy_pass      http://bspstylesvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/style.log  test_com;<br />
}</p>
<p>#help.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  help.test.com;<br />
location / {<br />
proxy_pass      http://bsphelpsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/help.log  test_com;<br />
}</p>
<p>#admin.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  admin.test.com;<br />
location / {<br />
proxy_pass      http://bspadminsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/admin.log  test_com;<br />
}</p>
<p>#buyer.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  buyer.test.com;<br />
location / {<br />
proxy_pass      http://bspbuyersvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/buyer.log  test_com;<br />
}</p>
<p>#seller.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  seller.test.com;<br />
location / {<br />
proxy_pass      http://bspsellersvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/seller.log  test_com;<br />
}<br />
#wsi.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  wsi.test.com;<br />
location / {<br />
proxy_pass      http://bspwsisvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/wsi.log  test_com;<br />
}<br />
#www.test.com<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  www.test.com   *.test.com;<br />
location ~ ^/NginxStatus/ {<br />
stub_status on;<br />
access_log off;<br />
}<br />
location / {<br />
proxy_pass      http://bspfrontsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/www.log  test_com;<br />
error_page   500 502 503 504  /50x.html;<br />
location = /50x.html {<br />
root   html;<br />
}<br />
}<br />
#login.test.com<br />
server {<br />
listen       10.10.10.230:443;<br />
server_name  login.test.com;<br />
ssl                  on;<br />
ssl_certificate      cert.pem;<br />
ssl_certificate_key  cert.key;<br />
ssl_session_timeout  5m;<br />
ssl_protocols  SSLv2 SSLv3 TLSv1;<br />
ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;<br />
ssl_prefer_server_ciphers   on;<br />
location / {<br />
proxy_pass        https://bsploginsvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/login.log  test_com;<br />
}<br />
#login.test.com for register<br />
server {<br />
listen       10.10.10.230:80;<br />
server_name  login.test.com;<br />
location / {<br />
proxy_pass        http://bspregistersvr;<br />
include         proxy_setting.conf;<br />
}<br />
access_log  logs/register.log  test_com;<br />
}</p>
<p>}<br />
&lt;conf/proxy_setting.conf&gt;<br />
proxy_redirect          off;<br />
proxy_set_header        Host $host;<br />
proxy_set_header        X-Real-IP $remote_addr;<br />
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;<br />
client_max_body_size    10m;<br />
client_body_buffer_size 128k;<br />
proxy_connect_timeout   90;<br />
proxy_send_timeout      90;<br />
proxy_read_timeout      90;<br />
proxy_buffer_size       4k;<br />
proxy_buffers           4 32k;<br />
proxy_busy_buffers_size 64k;<br />
proxy_temp_file_write_size 64k;<br />
mod_proxy的例子：</p>
<p>&lt;VirtualHost *&gt;<br />
ServerName www.zxsv.com<br />
ServerAdmin admin@zxsv.com<br />
# reverse proxy setting<br />
ProxyPass / http://www.zxsv.com:8080/<br />
ProxyPassReverse / http://www.zxsv.com:8080/<br />
# cache dir root<br />
CacheRoot “/var/www/proxy”<br />
# max cache storage<br />
CacheSize 50000000<br />
# hour: every 4 hour<br />
CacheGcInterval 4<br />
# max page expire time: hour<br />
CacheMaxExpire 240<br />
# Expire time = (now – last_modified) * CacheLastModifiedFactor<br />
CacheLastModifiedFactor 0.1<br />
# defalt expire tag: hour<br />
CacheDefaultExpire 1<br />
# force complete after precent of content retrived: 60-90%<br />
CacheForceCompletion 80<br />
CustomLog /usr/local/apache/logs/dev_access_log combined<br />
&lt;/VirtualHost&gt;<br />
而SQUID的例子我就不说明了，这方面网上有写的太多，大家自己搜索一下</p>
<p>DNS轮询：</p>
<p>BIND是一款开放源码的DNS服务器软件，这个要说起来就大了，自己搜索去，大家知道有这个东西就行了。<br />
我知道的有chinacache 等大站就是这样做的，说简单点就是多服务器啦，把同一个页面或文件缓存到不同的服务器上，按南北自动解析到相关的服务器中。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php%e4%bc%81%e4%b8%9a%e7%ba%a7%e5%ba%94%e7%94%a8%e7%bc%93%e5%ad%98%e6%8a%80%e6%9c%af/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>.htaccess写法一例</title>
		<link>http://www.3code.cn/htaccess/</link>
		<comments>http://www.3code.cn/htaccess/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 10:23:38 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2094</guid>
		<description><![CDATA[htaccess写法实例]]></description>
			<content:encoded><![CDATA[<p><strong>htaccess写法一例</strong></p>
<p>RewriteEngine on<br />
RewriteBase /test/<br />
RewriteRule ^test([0-9]*).html$ test.php?id=$1<br />
RewriteRule ^new([0-9]*)/$ new.php?id=$1</p>
<p>实现效果：</p>
<p>http://localhost/test/test123.html  转化为：http://localhost/test/test.php?id=123</p>
<p>http://localhost/test/new123/  转化为：http://localhost/test/new.php?id=123</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/htaccess/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>php上传图片缩小尺寸实例代码</title>
		<link>http://www.3code.cn/php-upload-pic-cc/</link>
		<comments>http://www.3code.cn/php-upload-pic-cc/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 08:39:20 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>
		<category><![CDATA[php类]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2080</guid>
		<description><![CDATA[将下面的代码保存成一个文件，存在一个目录下，此目录下要有images的目录，用于存放上传的图片。
这样子在本地环境就可以直接测试使用。]]></description>
			<content:encoded><![CDATA[<p>将下面的代码保存成一个文件，存在一个目录下，此目录下要有images的目录，用于存放上传的图片。</p>
<p>这样子在本地环境就可以直接测试使用。</p>
<p>&lt;?php<br />
class CreatMiniature<br />
{<br />
//公共变量<br />
var $srcFile="";        //原图<br />
var $echoType;            //输出图片类型，link--不保存为文件；file--保存为文件<br />
var $im="";                //临时变量<br />
var $srcW="";            //原图宽<br />
var $srcH="";            //原图高</p>
<p>//设置变量及初始化<br />
function SetVar($srcFile,$echoType)<br />
{<br />
$this-&gt;srcFile=$srcFile;<br />
$this-&gt;echoType=$echoType;</p>
<p>$info = "";<br />
$data = GetImageSize($this-&gt;srcFile,$info);<br />
switch ($data[2])<br />
{<br />
case 1:<br />
if(!function_exists("imagecreatefromgif")){<br />
echo "你的GD库不能使用GIF格式的图片，请使用Jpeg或PNG格式！&lt;a href='javascript:go(-1);'&gt;返回&lt;/a&gt;";<br />
exit();<br />
}<br />
$this-&gt;im = ImageCreateFromGIF($this-&gt;srcFile);<br />
break;<br />
case 2:<br />
if(!function_exists("imagecreatefromjpeg")){<br />
echo "你的GD库不能使用jpeg格式的图片，请使用其它格式的图片！&lt;a href='javascript:go(-1);'&gt;返回&lt;/a&gt;";<br />
exit();<br />
}<br />
$this-&gt;im = ImageCreateFromJpeg($this-&gt;srcFile);<br />
break;<br />
case 3:<br />
$this-&gt;im = ImageCreateFromPNG($this-&gt;srcFile);<br />
break;<br />
}<br />
$this-&gt;srcW=ImageSX($this-&gt;im);<br />
$this-&gt;srcH=ImageSY($this-&gt;im);<br />
}</p>
<p>//生成扭曲型缩图<br />
function Distortion($toFile,$toW,$toH)<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$toW,$toH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}</p>
<p>//生成按比例缩放的缩图<br />
function Prorate($toFile,$toW,$toH)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ftoW=$toW;<br />
$ftoH=$ftoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
else<br />
{<br />
$ftoH=$toH;<br />
$ftoW=$ftoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
if($this-&gt;srcW&gt;$toW||$this-&gt;srcH&gt;$toH)<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$ftoW,$ftoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}<br />
else<br />
{<br />
$cImg=$this-&gt;CreatImage($this-&gt;im,$this-&gt;srcW,$this-&gt;srcH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}<br />
}</p>
<p>//生成最小裁剪后的缩图<br />
function Cut($toFile,$toW,$toH)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ctoH=$toH;<br />
$ctoW=$ctoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
else<br />
{<br />
$ctoW=$toW;<br />
$ctoH=$ctoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
$allImg=$this-&gt;CreatImage($this-&gt;im,$ctoW,$ctoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
$cImg=$this-&gt;CreatImage($allImg,$toW,$toH,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH);<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
ImageDestroy($allImg);<br />
}</p>
<p>//生成背景填充的缩图<br />
function BackFill($toFile,$toW,$toH,$bk1=255,$bk2=255,$bk3=255)<br />
{<br />
$toWH=$toW/$toH;<br />
$srcWH=$this-&gt;srcW/$this-&gt;srcH;<br />
if($toWH&lt;=$srcWH)<br />
{<br />
$ftoW=$toW;<br />
$ftoH=$ftoW*($this-&gt;srcH/$this-&gt;srcW);<br />
}<br />
else<br />
{<br />
$ftoH=$toH;<br />
$ftoW=$ftoH*($this-&gt;srcW/$this-&gt;srcH);<br />
}<br />
if(function_exists("imagecreatetruecolor"))<br />
{<br />
@$cImg=ImageCreateTrueColor($toW,$toH);<br />
if(!$cImg)<br />
{<br />
$cImg=ImageCreate($toW,$toH);<br />
}<br />
}<br />
else<br />
{<br />
$cImg=ImageCreate($toW,$toH);<br />
}<br />
$backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3);        //填充的背景颜色<br />
ImageFilledRectangle($cImg,0,0,$toW,$toH,$backcolor);<br />
if($this-&gt;srcW&gt;$toW||$this-&gt;srcH&gt;$toH)<br />
{<br />
$proImg=$this-&gt;CreatImage($this-&gt;im,$ftoW,$ftoH,0,0,0,0,$this-&gt;srcW,$this-&gt;srcH);<br />
/*<br />
if($ftoW&lt;$toW)<br />
{<br />
ImageCopyMerge($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH,100);<br />
}<br />
else if($ftoH&lt;$toH)<br />
{<br />
ImageCopyMerge($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);<br />
}<br />
*/<br />
if($ftoW&lt;$toW)<br />
{<br />
ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH);<br />
}<br />
else if($ftoH&lt;$toH)<br />
{<br />
ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH);<br />
}<br />
else<br />
{<br />
ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH);<br />
}<br />
}<br />
else<br />
{<br />
ImageCopyMerge($cImg,$this-&gt;im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);<br />
}<br />
return $this-&gt;EchoImage($cImg,$toFile);<br />
ImageDestroy($cImg);<br />
}</p>
<p>function CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH)<br />
{<br />
if(function_exists("imagecreatetruecolor"))<br />
{<br />
@$creatImg = ImageCreateTrueColor($creatW,$creatH);<br />
if($creatImg)<br />
ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
else<br />
{<br />
$creatImg=ImageCreate($creatW,$creatH);<br />
ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
}<br />
}<br />
else<br />
{<br />
$creatImg=ImageCreate($creatW,$creatH);<br />
ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);<br />
}<br />
return $creatImg;<br />
}</p>
<p>//输出图片，link---只输出，不保存文件。file--保存为文件<br />
function EchoImage($img,$to_File)<br />
{<br />
switch($this-&gt;echoType)<br />
{<br />
case "link":<br />
if(function_exists('imagejpeg')) return ImageJpeg($img);<br />
else return ImagePNG($img);<br />
break;<br />
case "file":<br />
if(function_exists('imagejpeg')) return ImageJpeg($img,$to_File);<br />
else return ImagePNG($img,$to_File);<br />
break;<br />
}<br />
}</p>
<p>}<br />
?&gt;<br />
&lt;?<br />
if ($_POST["action"]=="addnew") {<br />
$pxname="";<br />
if(!$_FILES['myphoto']['error']){<br />
$f=$_FILES['myphoto'];<br />
$kzm=strtolower(trim(substr($f['name'],-4)));<br />
if($kzm!=".jpg" and $kzm!=".gif" and $kzm!=".png" and $kzm!=".bmp")<br />
{<br />
echo "&lt;script&gt;alert('图片格式不对!($kzm)');location.href='javascript:history.back()';&lt;/script&gt;";<br />
die;<br />
}<br />
$dest_dir='images';//设定上传目录<br />
$pxname=date("ymdhis")."_"."s".substr($f['name'],-4);<br />
$dest=$dest_dir.'/'.$pxname;//我这里设置文件名为日期加上文件名避免重复<br />
$r=move_uploaded_file($f['tmp_name'],$dest);<br />
chmod($dest, 0755);//设定上传的文件的属性<br />
}</p>
<p>$cm=new CreatMiniature();<br />
$cm-&gt;SetVar("images/".$pxname,"file");<br />
$cm-&gt;Prorate("images/".$pxname,150,200);<br />
}<br />
?&gt;</p>
<p>&lt;?<br />
//使用示例<br />
//    include("thumb.php");<br />
//    $cm=new CreatMiniature();<br />
//    $cm-&gt;SetVar("1.jpg","file");<br />
//    $cm-&gt;Distortion("dis_bei.jpg",150,200);<br />
//    $cm-&gt;Prorate("pro_bei.jpg",150,200);<br />
//    $cm-&gt;Cut("cut_bei.jpg",150,200);<br />
//    $cm-&gt;BackFill("fill_bei.jpg",150,200);&lt;/p&gt;<br />
?&gt;</p>
<p>&lt;p&gt;&amp;nbsp;&lt;/p&gt;<br />
&lt;p&gt;&amp;nbsp;&lt;/p&gt;<br />
&lt;form name="form1" enctype="multipart/form-data" method="post" action=""&gt;<br />
&lt;input name="myphoto" type="file" id="myphoto"&gt;<br />
&lt;input type="submit" name="Submit" value="提交"&gt;<br />
&lt;input name="action" type="hidden" id="action" value="addnew"&gt;<br />
&lt;/form&gt;<br />
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-upload-pic-cc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>可用的PHP汉字转拼音代码</title>
		<link>http://www.3code.cn/php-pinyin/</link>
		<comments>http://www.3code.cn/php-pinyin/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 06:33:55 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2068</guid>
		<description><![CDATA[经过测试这是一段可以用的将汉字转换为拼音的代码。
支持UTF-8编码的汉字]]></description>
			<content:encoded><![CDATA[<p>&lt;?<br />
//经过测试这是一段可以用的将汉字转换为拼音的代码。<br />
//支持UTF-8编码的汉字<br />
$d=array(<br />
array("a",-20319),<br />
array("ai",-20317),<br />
array("an",-20304),<br />
array("ang",-20295),<br />
array("ao",-20292),<br />
array("ba",-20283),<br />
array("bai",-20265),<br />
array("ban",-20257),<br />
array("bang",-20242),<br />
array("bao",-20230),<br />
array("bei",-20051),<br />
array("ben",-20036),<br />
array("beng",-20032),<br />
array("bi",-20026),<br />
array("bian",-20002),<br />
array("biao",-19990),<br />
array("bie",-19986),<br />
array("bin",-19982),<br />
array("bing",-19976),<br />
array("bo",-19805),<br />
array("bu",-19784),<br />
array("ca",-19775),<br />
array("cai",-19774),<br />
array("can",-19763),<br />
array("cang",-19756),<br />
array("cao",-19751),<br />
array("ce",-19746),<br />
array("ceng",-19741),<br />
array("cha",-19739),<br />
array("chai",-19728),<br />
array("chan",-19725),<br />
array("chang",-19715),<br />
array("chao",-19540),<br />
array("che",-19531),<br />
array("chen",-19525),<br />
array("cheng",-19515),<br />
array("chi",-19500),<br />
array("chong",-19484),<br />
array("chou",-19479),<br />
array("chu",-19467),<br />
array("chuai",-19289),<br />
array("chuan",-19288),<br />
array("chuang",-19281),<br />
array("chui",-19275),<br />
array("chun",-19270),<br />
array("chuo",-19263),<br />
array("ci",-19261),<br />
array("cong",-19249),<br />
array("cou",-19243),<br />
array("cu",-19242),<br />
array("cuan",-19238),<br />
array("cui",-19235),<br />
array("cun",-19227),<br />
array("cuo",-19224),<br />
array("da",-19218),<br />
array("dai",-19212),<br />
array("dan",-19038),<br />
array("dang",-19023),<br />
array("dao",-19018),<br />
array("de",-19006),<br />
array("deng",-19003),<br />
array("di",-18996),<br />
array("dian",-18977),<br />
array("diao",-18961),<br />
array("die",-18952),<br />
array("ding",-18783),<br />
array("diu",-18774),<br />
array("dong",-18773),<br />
array("dou",-18763),<br />
array("du",-18756),<br />
array("duan",-18741),<br />
array("dui",-18735),<br />
array("dun",-18731),<br />
array("duo",-18722),<br />
array("e",-18710),<br />
array("en",-18697),<br />
array("er",-18696),<br />
array("fa",-18526),<br />
array("fan",-18518),<br />
array("fang",-18501),<br />
array("fei",-18490),<br />
array("fen",-18478),<br />
array("feng",-18463),<br />
array("fo",-18448),<br />
array("fou",-18447),<br />
array("fu",-18446),<br />
array("ga",-18239),<br />
array("gai",-18237),<br />
array("gan",-18231),<br />
array("gang",-18220),<br />
array("gao",-18211),<br />
array("ge",-18201),<br />
array("gei",-18184),<br />
array("gen",-18183),<br />
array("geng",-18181),<br />
array("gong",-18012),<br />
array("gou",-17997),<br />
array("gu",-17988),<br />
array("gua",-17970),<br />
array("guai",-17964),<br />
array("guan",-17961),<br />
array("guang",-17950),<br />
array("gui",-17947),<br />
array("gun",-17931),<br />
array("guo",-17928),<br />
array("ha",-17922),<br />
array("hai",-17759),<br />
array("han",-17752),<br />
array("hang",-17733),<br />
array("hao",-17730),<br />
array("he",-17721),<br />
array("hei",-17703),<br />
array("hen",-17701),<br />
array("heng",-17697),<br />
array("hong",-17692),<br />
array("hou",-17683),<br />
array("hu",-17676),<br />
array("hua",-17496),<br />
array("huai",-17487),<br />
array("huan",-17482),<br />
array("huang",-17468),<br />
array("hui",-17454),<br />
array("hun",-17433),<br />
array("huo",-17427),<br />
array("ji",-17417),<br />
array("jia",-17202),<br />
array("jian",-17185),<br />
array("jiang",-16983),<br />
array("jiao",-16970),<br />
array("jie",-16942),<br />
array("jin",-16915),<br />
array("jing",-16733),<br />
array("jiong",-16708),<br />
array("jiu",-16706),<br />
array("ju",-16689),<br />
array("juan",-16664),<br />
array("jue",-16657),<br />
array("jun",-16647),<br />
array("ka",-16474),<br />
array("kai",-16470),<br />
array("kan",-16465),<br />
array("kang",-16459),<br />
array("kao",-16452),<br />
array("ke",-16448),<br />
array("ken",-16433),<br />
array("keng",-16429),<br />
array("kong",-16427),<br />
array("kou",-16423),<br />
array("ku",-16419),<br />
array("kua",-16412),<br />
array("kuai",-16407),<br />
array("kuan",-16403),<br />
array("kuang",-16401),<br />
array("kui",-16393),<br />
array("kun",-16220),<br />
array("kuo",-16216),<br />
array("la",-16212),<br />
array("lai",-16205),<br />
array("lan",-16202),<br />
array("lang",-16187),<br />
array("lao",-16180),<br />
array("le",-16171),<br />
array("lei",-16169),<br />
array("leng",-16158),<br />
array("li",-16155),<br />
array("lia",-15959),<br />
array("lian",-15958),<br />
array("liang",-15944),<br />
array("liao",-15933),<br />
array("lie",-15920),<br />
array("lin",-15915),<br />
array("ling",-15903),<br />
array("liu",-15889),<br />
array("long",-15878),<br />
array("lou",-15707),<br />
array("lu",-15701),<br />
array("lv",-15681),<br />
array("luan",-15667),<br />
array("lue",-15661),<br />
array("lun",-15659),<br />
array("luo",-15652),<br />
array("ma",-15640),<br />
array("mai",-15631),<br />
array("man",-15625),<br />
array("mang",-15454),<br />
array("mao",-15448),<br />
array("me",-15436),<br />
array("mei",-15435),<br />
array("men",-15419),<br />
array("meng",-15416),<br />
array("mi",-15408),<br />
array("mian",-15394),<br />
array("miao",-15385),<br />
array("mie",-15377),<br />
array("min",-15375),<br />
array("ming",-15369),<br />
array("miu",-15363),<br />
array("mo",-15362),<br />
array("mou",-15183),<br />
array("mu",-15180),<br />
array("na",-15165),<br />
array("nai",-15158),<br />
array("nan",-15153),<br />
array("nang",-15150),<br />
array("nao",-15149),<br />
array("ne",-15144),<br />
array("nei",-15143),<br />
array("nen",-15141),<br />
array("neng",-15140),<br />
array("ni",-15139),<br />
array("nian",-15128),<br />
array("niang",-15121),<br />
array("niao",-15119),<br />
array("nie",-15117),<br />
array("nin",-15110),<br />
array("ning",-15109),<br />
array("niu",-14941),<br />
array("nong",-14937),<br />
array("nu",-14933),<br />
array("nv",-14930),<br />
array("nuan",-14929),<br />
array("nue",-14928),<br />
array("nuo",-14926),<br />
array("o",-14922),<br />
array("ou",-14921),<br />
array("pa",-14914),<br />
array("pai",-14908),<br />
array("pan",-14902),<br />
array("pang",-14894),<br />
array("pao",-14889),<br />
array("pei",-14882),<br />
array("pen",-14873),<br />
array("peng",-14871),<br />
array("pi",-14857),<br />
array("pian",-14678),<br />
array("piao",-14674),<br />
array("pie",-14670),<br />
array("pin",-14668),<br />
array("ping",-14663),<br />
array("po",-14654),<br />
array("pu",-14645),<br />
array("qi",-14630),<br />
array("qia",-14594),<br />
array("qian",-14429),<br />
array("qiang",-14407),<br />
array("qiao",-14399),<br />
array("qie",-14384),<br />
array("qin",-14379),<br />
array("qing",-14368),<br />
array("qiong",-14355),<br />
array("qiu",-14353),<br />
array("qu",-14345),<br />
array("quan",-14170),<br />
array("que",-14159),<br />
array("qun",-14151),<br />
array("ran",-14149),<br />
array("rang",-14145),<br />
array("rao",-14140),<br />
array("re",-14137),<br />
array("ren",-14135),<br />
array("reng",-14125),<br />
array("ri",-14123),<br />
array("rong",-14122),<br />
array("rou",-14112),<br />
array("ru",-14109),<br />
array("ruan",-14099),<br />
array("rui",-14097),<br />
array("run",-14094),<br />
array("ruo",-14092),<br />
array("sa",-14090),<br />
array("sai",-14087),<br />
array("san",-14083),<br />
array("sang",-13917),<br />
array("sao",-13914),<br />
array("se",-13910),<br />
array("sen",-13907),<br />
array("seng",-13906),<br />
array("sha",-13905),<br />
array("shai",-13896),<br />
array("shan",-13894),<br />
array("shang",-13878),<br />
array("shao",-13870),<br />
array("she",-13859),<br />
array("shen",-13847),<br />
array("sheng",-13831),<br />
array("shi",-13658),<br />
array("shou",-13611),<br />
array("shu",-13601),<br />
array("shua",-13406),<br />
array("shuai",-13404),<br />
array("shuan",-13400),<br />
array("shuang",-13398),<br />
array("shui",-13395),<br />
array("shun",-13391),<br />
array("shuo",-13387),<br />
array("si",-13383),<br />
array("song",-13367),<br />
array("sou",-13359),<br />
array("su",-13356),<br />
array("suan",-13343),<br />
array("sui",-13340),<br />
array("sun",-13329),<br />
array("suo",-13326),<br />
array("ta",-13318),<br />
array("tai",-13147),<br />
array("tan",-13138),<br />
array("tang",-13120),<br />
array("tao",-13107),<br />
array("te",-13096),<br />
array("teng",-13095),<br />
array("ti",-13091),<br />
array("tian",-13076),<br />
array("tiao",-13068),<br />
array("tie",-13063),<br />
array("ting",-13060),<br />
array("tong",-12888),<br />
array("tou",-12875),<br />
array("tu",-12871),<br />
array("tuan",-12860),<br />
array("tui",-12858),<br />
array("tun",-12852),<br />
array("tuo",-12849),<br />
array("wa",-12838),<br />
array("wai",-12831),<br />
array("wan",-12829),<br />
array("wang",-12812),<br />
array("wei",-12802),<br />
array("wen",-12607),<br />
array("weng",-12597),<br />
array("wo",-12594),<br />
array("wu",-12585),<br />
array("xi",-12556),<br />
array("xia",-12359),<br />
array("xian",-12346),<br />
array("xiang",-12320),<br />
array("xiao",-12300),<br />
array("xie",-12120),<br />
array("xin",-12099),<br />
array("xing",-12089),<br />
array("xiong",-12074),<br />
array("xiu",-12067),<br />
array("xu",-12058),<br />
array("xuan",-12039),<br />
array("xue",-11867),<br />
array("xun",-11861),<br />
array("ya",-11847),<br />
array("yan",-11831),<br />
array("yang",-11798),<br />
array("yao",-11781),<br />
array("ye",-11604),<br />
array("yi",-11589),<br />
array("yin",-11536),<br />
array("ying",-11358),<br />
array("yo",-11340),<br />
array("yong",-11339),<br />
array("you",-11324),<br />
array("yu",-11303),<br />
array("yuan",-11097),<br />
array("yue",-11077),<br />
array("yun",-11067),<br />
array("za",-11055),<br />
array("zai",-11052),<br />
array("zan",-11045),<br />
array("zang",-11041),<br />
array("zao",-11038),<br />
array("ze",-11024),<br />
array("zei",-11020),<br />
array("zen",-11019),<br />
array("zeng",-11018),<br />
array("zha",-11014),<br />
array("zhai",-10838),<br />
array("zhan",-10832),<br />
array("zhang",-10815),<br />
array("zhao",-10800),<br />
array("zhe",-10790),<br />
array("zhen",-10780),<br />
array("zheng",-10764),<br />
array("zhi",-10587),<br />
array("zhong",-10544),<br />
array("zhou",-10533),<br />
array("zhu",-10519),<br />
array("zhua",-10331),<br />
array("zhuai",-10329),<br />
array("zhuan",-10328),<br />
array("zhuang",-10322),<br />
array("zhui",-10315),<br />
array("zhun",-10309),<br />
array("zhuo",-10307),<br />
array("zi",-10296),<br />
array("zong",-10281),<br />
array("zou",-10274),<br />
array("zu",-10270),<br />
array("zuan",-10262),<br />
array("zui",-10260),<br />
array("zun",-10256),<br />
array("zuo",-10254));</p>
<p>function g($num){<br />
global $d;<br />
if($num&gt;0&amp;$num&lt;160){<br />
return chr($num);<br />
}<br />
elseif($num&lt;-20319||$num&gt;-10247){<br />
return "";<br />
}else{<br />
for($i=count($d)-1;$i&gt;=0;$i--)<br />
{if($d[$i][1]&lt;=$num)break;}<br />
return $d[$i][0];<br />
}<br />
}<br />
function c($str){<br />
$ret="";<br />
for($i=0;$i&lt;strlen($str);$i++){<br />
$p=ord(substr($str,$i,1));<br />
if($p&gt;160){<br />
$q=ord(substr($str,++$i,1));<br />
$p=$p*256+$q-65536;<br />
}<br />
$ret.=g($p);<br />
}<br />
return $ret;<br />
}</p>
<p>function utf82gb($utfstr){ // UTF-8汉字转GBK汉字<br />
if(function_exists('iconv')){ return iconv('utf-8','gbk',$utfstr); }<br />
global $UC2GBTABLE;<br />
$okstr = "";<br />
if(trim($utfstr)=="") return $utfstr;<br />
if(empty($UC2GBTABLE)){<br />
$filename = dirname(__FILE__) . "/";<br />
$fp = fopen($filename,"r");<br />
while($l = fgets($fp,15))<br />
{ $UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));}<br />
fclose($fp);<br />
}<br />
$okstr = "";<br />
$ulen = strlen($utfstr);<br />
for($i=0;$i&lt;$ulen;$i++)<br />
{<br />
$c = $utfstr[$i];<br />
$cb = decbin(ord($utfstr[$i]));<br />
if(strlen($cb)==8){<br />
$csize = strpos(decbin(ord($cb)),"0");<br />
for($j=0;$j &lt; $csize;$j++){<br />
$i++; $c .= $utfstr[$i];<br />
}<br />
$c = utf82u($c);<br />
if(isset($UC2GBTABLE[$c])){<br />
$c = dechex($UC2GBTABLE[$c]+0x8080);<br />
$okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));<br />
}<br />
else<br />
{ $okstr .= "&amp;#".$c.";";}<br />
}<br />
else $okstr .= $c;<br />
}<br />
$okstr = trim($okstr);<br />
return $okstr;<br />
}<br />
//说明：将中文转换为拼音&lt;br&gt;";<br />
//如果是utf—8中文 先转换为gbk中文 再转换<br />
//$str = utf82gb($str);<br />
// utf8中文 装gbk中文<br />
//示例:<br />
//echo c($str);<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-pinyin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php生成随机字符串</title>
		<link>http://www.3code.cn/php-create-randchar/</link>
		<comments>http://www.3code.cn/php-create-randchar/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 03:15:55 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2065</guid>
		<description><![CDATA[php生成随机字符串，可以保存为一个函数来使用。]]></description>
			<content:encoded><![CDATA[<p>&lt;?</p>
<p>$str = "0123456789abcdefghijklmnopqrstuvwxyz";   //输出字符集<br />
$n = 8;   //   输出串长度<br />
$len = strlen($str)-1;<br />
for($i=0 ; $i&lt;$n; $i++){<br />
$s .=  $str[rand(0,$len)];<br />
}</p>
<p>echo $s;</p>
<p>?&gt;</p>
<p>可以保存为一个函数来使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-create-randchar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>解决mysql的utf8中文排序的方法</title>
		<link>http://www.3code.cn/mysql-utf8-gbk/</link>
		<comments>http://www.3code.cn/mysql-utf8-gbk/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 08:52:34 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=2057</guid>
		<description><![CDATA[在编译源码时加上gbk编码即可，如果已经安装好了，重新编译再安装，重新编译安装一般不会影响mysql的已有设置，包括数据都不会受到影响。]]></description>
			<content:encoded><![CDATA[<p>在mysql中使用默认字符集为utf8，结果想要把中文按拼音排序出现了问题，排出来的顺序乱七八糟，不是我们想要的结果。</p>
<p>解决办法如下：<br />
1、不想改变表定义及默认编码的情况，将字段先转换成gbk编码再排序：</p>
<p>SELECT * FROM table ORDER BY CONVERT( chinese_field USING gbk ) ;</p>
<p>前提是在安装mysql时安装了gbk字符集，不然会报错：</p>
<p>#1115 - Unknown character set: 'gbk'</p>
<p>在编译源码时加上gbk编码即可，如果已经安装好了，重新编译再安装，重新编译安装一般不会影响mysql的已有设置，包括数据都不会受到影响。</p>
<p>2、直接将字段的字符集改成gbk，然后直接使用order by 排序即可。</p>
<p>mysql 5.x支持某列单独定义字符集。</p>
<p>3、网上也有人说将字段定义加上binary属性也能达到效果，未作测试，不敢评论。</p>
<p>mysql的文档中也提到字符集校对规则：</p>
<p>SELECT * FROM t1 ORDER BY a COLLATE utf8_bin;</p>
<p>但此仅仅只影响校对规则，并不影响字符的字符集本身。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/mysql-utf8-gbk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP取得当前插入数据库中记录的ID</title>
		<link>http://www.3code.cn/php-new-mysql-id/</link>
		<comments>http://www.3code.cn/php-new-mysql-id/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 03:00:44 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>
		<category><![CDATA[PHP数据库操作]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1969</guid>
		<description><![CDATA[PHP取得当前插入数据库中记录的ID]]></description>
			<content:encoded><![CDATA[<p>在PHP中，经常需要把插入数据库中的id值取出来，而正好有这么一个函数：</p>
<p>&lt;?php<br />
//执行插入数据库的语句<br />
//……<br />
$getID=mysql_insert_id();//$getID即为最后一条记录的ID<br />
?&gt;</p>
<p>PHP 函数 mysql_insert_id() 是返回在最后一次执行了 INSERT 查询后，由 AUTO_INCREMENT 定义的字段的值</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-new-mysql-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php缩略图程序</title>
		<link>http://www.3code.cn/php-thu/</link>
		<comments>http://www.3code.cn/php-thu/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 04:46:17 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1826</guid>
		<description><![CDATA[这是一款利用php自带的功能把指定的大图生成我们指定大小的缩略图代码哦
使用方便简单，只要把设置下面四个参数就可以生成自己想的大小的缩略图哦。]]></description>
			<content:encoded><![CDATA[<p>这是一款利用php自带的功能把指定的大图生成我们指定大小的缩略图代码哦<br />
使用方便简单，只要把设置下面四个参数就可以生成自己想的大小的缩略图哦。</p>
<p>*/</p>
<blockquote><p>function bigtosmallimg($file,$path,$w=120,$h=90)<br />
{<br />
$img=$path.$file;<br />
$imgarr=getimagesize($img);<br />
$sw=$imgarr[0];//原图宽<br />
$sh=$imgarr[1];//原图高<br />
$stype=$imgarr[2];<br />
//按比例缩放<br />
if($sw/$sh&gt;$w/$h){<br />
$mw=$w;<br />
$mh=(int)$sh*($w/$sw);<br />
}<br />
else{<br />
$mw=(int)$sw*($h/$sh);<br />
$mh=$h;<br />
}</p>
<p>switch($stype){//根据上传好的图形文件类型新建一个用来生成缩略图的源文件。<br />
case 1:<br />
$srcf = imagecreatefromgif($img);<br />
break;<br />
case 2:<br />
$srcf = imagecreatefromjpeg($img);<br />
break;<br />
case 3:<br />
$srcf = imagecreatefrompng($img);<br />
break;<br />
default:<br />
showmsg('程序调用错误。');<br />
break;<br />
}</p>
<p>$desf =imagecreatetruecolor($mw,$mh);</p>
<p>imagecopyresampled($desf,$srcf,0,0,0,0,$mw,$mh,$sw,$sh);<br />
$sm_name=$path."s_".$file;<br />
switch($stype){<br />
case 1:<br />
imagegif($desf,$sm_name);<br />
break;<br />
case 2:<br />
imagejpeg($desf,$sm_name);<br />
break;<br />
case 3:<br />
imagepng($desf,$sm_name);<br />
break;<br />
default:<br />
showmsg('无法生成' . $stype . '的缩略图。');<br />
break;<br />
}<br />
imagedestroy($desf);<br />
imagedestroy($srcf);</p>
<p>}</p></blockquote>
<p>//此缩略图调用方法</p>
<blockquote><p>bigtosmallimg($file,$path,$w=120,$h=90);<br />
/*</p></blockquote>
<p>$file = 图片的路径<br />
$path = 生成后保存的路径<br />
$w =图片宽度<br />
$h =图片高度<br />
*/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-thu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ajax+php文件管理系统</title>
		<link>http://www.3code.cn/ajaxphp%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f/</link>
		<comments>http://www.3code.cn/ajaxphp%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 04:42:48 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP删除文件]]></category>
		<category><![CDATA[PHP文件]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1822</guid>
		<description><![CDATA[ajax+php教程文件管理系统]]></description>
			<content:encoded><![CDATA[<blockquote><p>&lt;!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.111cn.net/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;<br />
&lt;meta http-equiv="cache-control" content="no-cache, must-revalidate"&gt;<br />
&lt;title&gt;ajax+php教程文件管理系统&lt;/title&gt;<br />
&lt;style type="text/css教程"&gt;<br />
@charset "utf-8";<br />
/* css document */<br />
&lt;!--<br />
body {<br />
padding-right: 0px;<br />
padding-left: 0px;<br />
padding-bottom: 0px;<br />
margin: 0px auto;<br />
color: #777;<br />
line-height: 18px;<br />
padding-top: 0px;<br />
font-family: tahoma, arial, helvetica, sans-serif;<br />
background-color: #fff<br />
}<br />
*+html body {<br />
padding-right: 0px;<br />
padding-left: 0px;<br />
padding-bottom: 0px;<br />
margin: 0px auto;<br />
color: #777;<br />
line-height: 18px;<br />
padding-top: 0px;<br />
font-family: "微软雅黑", ahoma, arial, helvetica, sans-serif;<br />
background-color: #fff<br />
}<br />
a {<br />
text-decoration:none<br />
}<br />
input {<br />
padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px<br />
}<br />
.main {<br />
background-color:#bfe6bc;<br />
margin:100px auto;<br />
width:800px;<br />
height:180px;<br />
border:8px #399c26 solid;<br />
}<br />
.header {<br />
text-align:center;<br />
margin:10px auto;<br />
width:100%;<br />
display:block<br />
}<br />
.header h1 {<br />
font-size:20px;<br />
color:#399c26<br />
}<br />
.header p {<br />
padding:0px;<br />
margin-top:-10px;<br />
}<br />
.header p span{<br />
font-size:12px;<br />
color:#fff<br />
}<br />
.button_list {<br />
margin:10px auto;<br />
width:382px;<br />
height:110px;<br />
display:block<br />
}<br />
.button {<br />
width:100px;<br />
border:8px #399c26 solid;<br />
height:20px;<br />
line-height:20px;<br />
font-size:14px;<br />
float:left;<br />
text-align:center;<br />
margin-left:10px;<br />
margin-bottom:10px;<br />
background-color:#399c26<br />
}<br />
.button a{<br />
color:#fff;<br />
font-weight:bold<br />
}<br />
.footer {<br />
text-align:center;<br />
font-size:12px;<br />
display:block;<br />
margin:10px auto;<br />
}<br />
.black_overlay{<br />
display: none;<br />
position: absolute;<br />
top: 0%;<br />
left: 0%;<br />
width: 100%;<br />
height: 100%;<br />
background-color: black;<br />
z-index:1001;<br />
-moz-opacity: 0.8;<br />
opacity:.80;<br />
filter: alpha(opacity=80);<br />
}<br />
.file_list {<br />
display: none;<br />
position: absolute;<br />
top: 25%;<br />
left: 25%;<br />
width: 50%;<br />
height: 50%;<br />
padding: 16px;<br />
border: 8px solid #399c26;<br />
background-color: white;<br />
z-index:1002;<br />
overflow: auto;<br />
background-color:#bfe6bc;<br />
}<br />
.file_list_t {<br />
margin:0 auto;<br />
display:inline;<br />
}<br />
.file_list_t li {<br />
font-size:14px;<br />
list-style-type:none;<br />
padding:0px;<br />
background-color:#bfe6bc;<br />
border-bottom:1px #ccc solid;<br />
}<br />
*+html .file_list_t li {<br />
font-size:14px;<br />
background:url(images/list_ico_1.gif) #fff no-repeat 7px 50%;<br />
list-style-type:none;<br />
text-indent:5px;<br />
padding:0px;<br />
background-color:#bfe6bc;<br />
border-bottom:1px #ccc solid;<br />
}<br />
*+html .file_list_t li span {<br />
float:right;<br />
font-weight:bold;<br />
margin-top:-20px;<br />
}<br />
.file_list_t li span {<br />
float:right;<br />
font-weight:bold;<br />
margin-top:0px;<br />
}<br />
.file_list_t li a{<br />
color:#399c26;<br />
}<br />
.file_list_close {<br />
display: none;<br />
position: absolute;<br />
top: 22%;<br />
left: 75%;<br />
width: 30px;<br />
height: 16px;<br />
border: 1px solid #399c26;<br />
z-index:1002;<br />
background-color:#399c26;<br />
color:#fff;<br />
line-height:16px;<br />
text-align:center<br />
}<br />
.file_list_close a{<br />
color:#fff;<br />
}</p>
<p>/* file_content_input_form */<br />
.file_content_input_form{<br />
margin:0 auto;<br />
width:450px;<br />
padding:14px;<br />
}<br />
/* input_box */<br />
#input_box{<br />
}<br />
#input_box h1 {<br />
font-size:14px;<br />
font-weight:bold;<br />
margin-bottom:8px;<br />
}<br />
#input_box p{<br />
font-size:11px;<br />
color:#399c26;<br />
margin-bottom:20px;<br />
border-bottom:solid 1px #b7ddf2;<br />
padding-bottom:10px;<br />
}<br />
#input_box label{<br />
display:block;<br />
font-weight:bold;<br />
text-align:right;<br />
width:140px;<br />
float:left;<br />
}<br />
#input_box .small{<br />
color:#399c26;<br />
display:block;<br />
font-size:11px;<br />
font-weight:normal;<br />
text-align:right;<br />
width:140px;<br />
}<br />
#input_box input{<br />
float:left;<br />
font-size:12px;<br />
padding:4px 2px;<br />
border:solid 1px #399c26;<br />
width:200px;<br />
margin:2px 0 20px 10px;<br />
}<br />
#input_box textarea{<br />
float:left;<br />
font-size:12px;<br />
padding:4px 2px;<br />
border:solid 1px #399c26;<br />
width:200px;<br />
height:150px;<br />
margin:2px 0 20px 10px;<br />
}<br />
#input_box button{<br />
clear:both;<br />
margin-left:150px;<br />
width:125px;<br />
height:31px;<br />
background:#399c26;<br />
text-align:center;<br />
line-height:31px;<br />
color:#ffffff;<br />
font-size:11px;<br />
font-weight:bold;<br />
}<br />
--&gt;<br />
&lt;/style&gt;</p></blockquote>
<p>&lt;script type="text/网页特效" src="ajax.网页特效"&gt;&lt;/script&gt;</p>
<blockquote><p>&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;div&gt;<br />
&lt;div&gt;<br />
&lt;h1&gt;欢迎使用anfms&lt;/h1&gt;<br />
&lt;p&gt;&lt;span&gt;v0.1.0 alpha&lt;/span&gt;&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;div&gt;<br />
&lt;div&gt;&lt;a href="网页特效:void(0);" onclick="javascript:file_list('/'); document.getelementbyid('file_list').style.display='block'; document.getelementbyid('file_list_close').style.display='block'; document.getelementbyid('fade').style.display='block'"&gt;文件列表&lt;/a&amp; gt;&lt;/div&gt;<br />
&lt;div&gt;&lt;a href="javascript:void(0);" onclick="javascript:file_list('/'); document.getelementbyid('file_make').style.display='block'; document.getelementbyid('file_list_close').style.display='block'; document.getelementbyid('fade').style.display='block'"&gt;创建文件&lt;/a&amp; gt;&lt;/div&gt;<br />
&lt;div&gt;&lt;a href="javascript:void(0);" onclick="document.getelementbyid('file_content_input').style.display='block'; document.getelementbyid('file_list_close').style.display='block'; document.getelementbyid('fade').style.display='block'"&gt;写入内容&lt;/a&amp; gt;&lt;/div&gt;<br />
&lt;div&gt;&lt;a href="javascript:void(0);" onclick="document.getelementbyid('file_get_content').style.display='block'; document.getelementbyid('file_list_close').style.display='block'; document.getelementbyid('fade').style.display='block'"&gt;读取内容&lt;/a&amp; gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div&gt;<br />
&lt;p&gt;<br />
&amp;copy;2009-2010 uniter.com.cn powered by uniter team&lt;br /&gt;<br />
supported by ie7+ firefox opera<br />
&lt;/p&gt;<br />
&lt;/div&gt;</p>
<p>&lt;div id="file_list_close"&gt;<br />
&lt;a href="javascript:void(0);" onclick="document.getelementbyid('file_list').style.display='none';document.getelementbyid('file_content_input').style.display='none';document.getelementbyid('file_get_content').style.display='none';document.getelementbyid('file_list_close').style.display='none';document.getelementbyid('fade').style.display='none';location.reload()"&gt;x&lt;/a&gt;<br />
&lt;/div&gt;<br />
&lt;div id="file_list"&gt;&lt;/div&gt;<br />
&lt;div id="file_content_input"&gt;<br />
&lt;div id="input_box"&gt;<br />
&lt;form id="form" name="form" method="post" action=""&gt;<br />
&lt;label&gt;文件名<br />
&lt;span&gt;例如:abc.txt&lt;/span&gt;<br />
&lt;/label&gt;<br />
&lt;input type="text" name="input_name" id="input_name" /&gt;<br />
&lt;label&gt;内容值<br />
&lt;span&gt;添加文件内容&lt;/span&gt;<br />
&lt;/label&gt;<br />
&lt;textarea name="input_content" id="input_content"&gt;&lt;/textarea&gt;<br />
&lt;button type="button" onclick="javascript:file_content_input('input_name='+document.getelementbyid('input_name').value+'&amp; amp;input_content='+document.getelementbyid('input_content').value);"&amp; gt;确定&lt;/button&gt;<br />
&lt;div&gt;&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div id="file_get_content"&gt;<br />
&lt;div id="input_box"&gt;<br />
&lt;form id="get_form" name="get_form" method="post" action=""&gt;<br />
&lt;label&gt;文件名<br />
&lt;span&gt;例如:abc.txt&lt;/span&gt;<br />
&lt;/label&gt;<br />
&lt;input type="text" name="input_name" id="input_name" /&gt;<br />
&lt;button type="button" onclick="javascript:file_get_content('input_name='+document.get_form.input_name.value);"&amp; gt;确定&lt;/button&gt;<br />
&lt;div&gt;&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div id="file_make"&gt;<br />
&lt;div id="input_box"&gt;<br />
&lt;form id="make_form" name="make_form" method="post" action=""&gt;<br />
&lt;label&gt;文件夹<br />
&lt;span&gt;例如:abc&lt;/span&gt;<br />
&lt;/label&gt;<br />
&lt;input type="text" name="input_name" id="input_name" /&gt;<br />
&lt;button type="button" onclick="javascript:file_make('input_name='+document.make_form.input_name.value);"&amp; gt;确定&lt;/button&gt;<br />
&lt;div&gt;&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div id="fade"&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>ajax.网页特效</p>
<blockquote><p>&lt;script&gt;<br />
// javascript document<br />
function do_ajax() {<br />
}<br />
function ajax_get_data(id) {<br />
}<br />
function file_list(path) {<br />
var xhr;<br />
if (window.xmlhttprequest) {<br />
xhr = new xmlhttprequest();<br />
}else if (window.activexobject) {<br />
xhr = new activexobject("msxml2.xmlhttp");<br />
}else {<br />
throw new error("ajax is not supported by this www.111cn.net browser");<br />
}<br />
xhr.onreadystatechange = function () {<br />
if (xhr.readystate == 4) {<br />
if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {<br />
document.getelementbyid('file_list').innerhtml = xhr.responsetext;<br />
}<br />
}<br />
}<br />
xhr.open('get','anfms.php?action=filelist&amp;path='+path);<br />
xhr.setrequestheader("if-modified-since","0");<br />
xhr.send();<br />
}<br />
function file_content_input(data) {<br />
var data;<br />
var xhr;<br />
if (window.xmlhttprequest) {<br />
xhr = new xmlhttprequest();<br />
}else if (window.activexobject) {<br />
xhr = new activexobject("msxml2.xmlhttp");<br />
}else {<br />
throw new error("ajax is not supported by this browser");<br />
}<br />
xhr.onreadystatechange = function () {<br />
if (xhr.readystate == 4) {<br />
if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {<br />
document.getelementbyid('file_content_input').innerhtml = xhr.responsetext;<br />
}<br />
}<br />
}<br />
xhr.open('get','anfms.php?action=inputcontent&amp;'+data);<br />
xhr.setrequestheader("if-modified-since","0");<br />
xhr.send();<br />
}<br />
function file_get_content(data) {<br />
var data;<br />
var xhr;<br />
if (window.xmlhttprequest) {<br />
xhr = new xmlhttprequest();<br />
}else if (window.activexobject) {<br />
xhr = new activexobject("msxml2.xmlhttp");<br />
}else {<br />
throw new error("ajax is not supported by this browser");<br />
}<br />
xhr.onreadystatechange = function () {<br />
if (xhr.readystate == 4) {<br />
if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {<br />
document.getelementbyid('file_get_content').innerhtml = xhr.responsetext;<br />
}<br />
}<br />
}<br />
xhr.open('get','anfms.php?action=getcontent&amp;'+data);<br />
xhr.setrequestheader("if-modified-since","0");<br />
xhr.send();<br />
}<br />
function file_make(file) {<br />
var file;<br />
var xhr;<br />
if (window.xmlhttprequest) {<br />
xhr = new xmlhttprequest();<br />
}else if (window.activexobject) {<br />
xhr = new activexobject("msxml2.xmlhttp");<br />
}else {<br />
throw new error("ajax is not supported by this browser");<br />
}<br />
xhr.onreadystatechange = function () {<br />
if (xhr.readystate == 4) {<br />
if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {<br />
document.getelementbyid('file_make').innerhtml = xhr.responsetext;<br />
}<br />
}<br />
}<br />
xhr.open('get','anfms.php?action=filemake&amp;'+file);<br />
xhr.setrequestheader("if-modified-since","0");<br />
xhr.send();<br />
}<br />
function file_delete(file) {<br />
var file;<br />
var xhr;<br />
if (window.xmlhttprequest) {<br />
xhr = new xmlhttprequest();<br />
}else if (window.activexobject) {<br />
xhr = new activexobject("msxml2.xmlhttp");<br />
}else {<br />
throw new error("ajax is not supported by this browser");<br />
}<br />
xhr.onreadystatechange = function () {<br />
if (xhr.readystate == 4) {<br />
if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {<br />
document.getelementbyid('file_list').innerhtml = xhr.responsetext;<br />
}<br />
}<br />
}<br />
xhr.open('get','anfms.php?action=delete_file&amp;file='+file);<br />
xhr.setrequestheader("if-modified-since","0");<br />
xhr.send();<br />
}<br />
function dir_delete(file) {<br />
var file;<br />
var xhr;<br />
if (window.xmlhttprequest) {<br />
xhr = new xmlhttprequest();<br />
}else if (window.activexobject) {<br />
xhr = new activexobject("msxml2.xmlhttp");<br />
}else {<br />
throw new error("ajax is not supported by this browser");<br />
}<br />
xhr.onreadystatechange = function () {<br />
if (xhr.readystate == 4) {<br />
if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {<br />
document.getelementbyid('file_list').innerhtml = xhr.responsetext;<br />
}<br />
}<br />
}<br />
xhr.open('get','anfms.php?action=delete_dir&amp;file='+file);<br />
xhr.setrequestheader("if-modified-since","0");<br />
xhr.send();<br />
}<br />
&lt;/script&gt;</p></blockquote>
<p>anfms.php</p>
<blockquote><p>&lt;?php<br />
/**<br />
* all needs file e 111cn.net manage system<br />
* this is a test code<br />
* return data to ajax<br />
* by aiens<br />
* 2010-01-13 19:20<br />
*/</p>
<p>header("content-type: text/html; charset=utf-8");<br />
$document_root = $_server['document_root'];<br />
if ($_get['action'] == 'filelist') { //return file list<br />
echo '&lt;div&gt;';<br />
$checkpath = str_replace($document_root,'',$_get['path']);<br />
if ($checkpath != '/../') {<br />
$checkpath = str_replace('../','',$checkpath);<br />
$path1 = $document_root.str_replace($document_root,'',$_get['path']);<br />
$dir = opendir($path1);<br />
while ($file = readdir($dir)) {<br />
if (!($file == '..')) {<br />
if ($file == '.') {<br />
$path = $path1.'../';<br />
$file = '返回';<br />
if ($checkpath != '/') {<br />
echo '&lt;li&gt;&lt;a href="javascript:void(0);" onclick="javascript:file_list(''.$path.'');"&gt;'.$file.'&lt;/a&gt;&lt;/li&gt;';<br />
}<br />
}else{<br />
$path = $path1.$file.'/';<br />
$path = iconv('gb2312','utf-8',$path);<br />
if (is_dir($path1.$file)) {<br />
echo '&lt;li&gt;&lt;a href="javascript:void(0);" onclick="javascript:file_list(''.$path.'');"&gt;'.$file.'&lt;/a&gt;&lt;span&gt;&lt;a href="javascript:void(0);" onclick="javascript:if(confirm('确认删除?')) dir_delete(''.$path.'');"&gt;删除&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;';<br />
}else{<br />
$file = iconv('gb2312','utf-8',$file);<br />
$filesize = filesize($path1.$file)/1000;<br />
echo '&lt;li&gt;'.$file.' - ('.$filesize.'kb)&lt;span&gt;&lt;a href="javascript:void(0);" onclick="javascript:if(confirm('确认删除?')) file_delete(''.$path1.$file.'');"&gt;删除&lt;/a&gt;&lt;/span&gt;&lt; /li&gt;';<br />
}<br />
}<br />
}<br />
}<br />
closedir($dir);<br />
}<br />
echo '&lt;/div&gt;';<br />
}else if ($_get['action'] == 'inputcontent') { //input data to file<br />
$name = $_get['input_name'];<br />
$content = $_get['input_content'];<br />
$data = date('y-m-d h:i:s');<br />
$fp = @fopen(dirname(__file__).'/'.$name, 'ab');<br />
$data = "data:".$data."t content:".$content."n";<br />
$fw = @fwrite($fp, $data, strlen($data));<br />
@fclose($fp);<br />
if ($fw) {<br />
echo '成功写入';<br />
}else{<br />
echo '写入失败';<br />
}<br />
}else if ($_get['action'] == 'getcontent') { //get data to file<br />
$name = $_get['input_name'];<br />
$fp = @fopen(dirname(__file__).'/'.$name, 'rb');<br />
if (!$fp) {<br />
echo 'www.111cn.net 系统所在目录不存在此文件,无法读取';<br />
exit;<br />
}<br />
while (!feof($fp)) {<br />
$content = fgets($fp);<br />
echo $content.'&lt;br /&gt;';<br />
}<br />
}else if ($_get['action'] == 'filemake') { //make dir<br />
$name = $_get['input_name'];<br />
function makedir($path) {<br />
if (!file_exists($path)) {<br />
makedir(dirname($path));<br />
return mkdir($path, 0777);<br />
}<br />
}<br />
if (makedir($name)) {<br />
echo '成功创建';<br />
}else{<br />
echo '创建失败';<br />
}<br />
}else if ($_get['action'] == 'delete_file') { //delete file<br />
$file = $_get['file'];<br />
unlink($file);<br />
echo '成功删除';<br />
}else if ($_get['action'] == 'delete_dir') { //delete dir<br />
$dir = $_get['file'];<br />
function delete_dir($dir) {<br />
if(! is_dir($dir)) {<br />
return false;<br />
}<br />
$handle = @opendir($dir);<br />
while(($file = @readdir($handle)) !== false) {<br />
if($file != '.' &amp;&amp; $file != '..') {<br />
$dir = $dir . '/' . $file;<br />
is_dir($dir) ? delete_dir($dir) : @unlink($dir);<br />
}<br />
}<br />
closedir($handle);<br />
return rmdir($dir) ;<br />
}<br />
if (delete_dir($dir)) {<br />
echo '成功删除';<br />
}else{<br />
echo '删除失败';<br />
}<br />
}<br />
?&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/ajaxphp%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用正则获取指定位置内容的php代码</title>
		<link>http://www.3code.cn/php-zz/</link>
		<comments>http://www.3code.cn/php-zz/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 04:37:46 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1819</guid>
		<description><![CDATA[我们经常会碰以要获取一个字符串指定部份的内容，下面我们用正则匹配来获取下一页的url怎么样。正则表达式到底是什么东西？

在编写处理字符串的程序或网页时，经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说，正则表达式就是记录文本规则的代码。]]></description>
			<content:encoded><![CDATA[<p>我们经常会碰以要获取一个字符串指定部份的内容，下面我们用正则匹配来获取下一页的url怎么样。<br />
*/</p>
<p>$str = 'ht</p>
<p><a href="http://www.111cn.net"></a>第一页  &amp; nbsp; <a href="http://down.111cn.net/index_2.html">上一页</a> &amp; nbsp;  <a href="http://mb.111cn.net/index_4.html">下一页</a><br />
';<br />
preg_match_all('/]*href=([^&gt;]*)&gt;下一页/is', $str, $matches);<br />
print_r($matches[1]);</p>
<p>//方法二</p>
<p>preg_match('/<a href="(.*)[/s]*">下一页</a>/u', $s, $arr);</p>
<p>/*<br />
正则表达式到底是什么东西？</p>
<p>在编写处理字符串的程序或网页时，经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说，正则表达式就是记录文本规则的代码。</p>
<p>很可能你使用过windows/dos下用于文件查找的通配符(wildcard)，也就是*和?。如果你想查找某个目录下的所有的word文档的话，你会搜索*.doc。在这里，*会被解释成任意的字符串。和通配符类似，正则表达式也是用来进行文本匹配的工具，只不过比起通配符，它能更精确地描述你的需求——当然，代价就是更复杂——比如你可以编写一个正则表达式，用来查找所有以0开头，后面跟着2-3个数字，然后是一个连字号"-"，最后是7或 8位数字的字符串(像010-12345678或0376-7654321)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-zz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>判断URL来路的PHP代码</title>
		<link>http://www.3code.cn/php-url-code/</link>
		<comments>http://www.3code.cn/php-url-code/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 14:27:08 +0000</pubDate>
		<dc:creator>寒林</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1673</guid>
		<description><![CDATA[判断URL来路的PHP代码]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
$referer = $_SERVER['HTTP_REFERER'];<br />
echo $referer;<br />
if(!$referer == ""){<br />
                if(ereg('http',$referer)){<br />
    <br />
                                $referer = @explode('.',$referer);<br />
                                if(is_array($referer)){<br />
                                                $referer = $referer['1'];<br />
                                                if($referer == '9cweb'){<br />
?&gt;<br />
这里是想放的任何代码.<br />
&lt;?php</p>
<p>                                                }<br />
                                }<br />
                }<br />
}<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-url-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

