<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://miaomin.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fmiaomin.spaces.live.com%2fcategory%2fPHP__xa5DATA%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>苗苗 合作 交流: PHP/DATA</title><description /><link>http://miaomin.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catPHP__xa5DATA</link><language>en-US</language><pubDate>Mon, 03 Sep 2007 03:40:18 GMT</pubDate><lastBuildDate>Mon, 03 Sep 2007 03:40:18 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://miaomin.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-8913911617972053559</live:id><live:alias>miaomin</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>php中数据的批量导入(csv文件)</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!339.entry</link><description>&lt;div&gt;&lt;font size="+0"&gt;&lt;font color="#cccccc"&gt;
&lt;div&gt;&lt;font color="#588558"&gt;有时写程序时后台要求把大量数据导入数据库中，比如计算机考试成绩的查询、电话簿的数据等一般都是存放在excel中的，这时我们可把数据导出成csv文件，然后通过以下程序即可在后台批量导入数据到数据库中。 &lt;/font&gt;
&lt;p&gt;&lt;font color="#588558"&gt;　　下面只是主要程序部分：&lt;/font&gt;
&lt;p&gt;&lt;font color="#588558"&gt;&amp;lt;?php &lt;br&gt;/*****************************************&lt;br&gt;**********作者：冲星/arcow****************&lt;br&gt;&lt;/font&gt;&lt;a href="http://www.douzhe.com/article/data/38/**********njj@nuc.edu.cn"&gt;&lt;font color="#588558"&gt;&lt;u&gt;**********njj@nuc.edu.cn&lt;/u&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#588558"&gt;*******************&lt;br&gt;**********php导入csv文件到数据库**********&lt;br&gt;**********同时计算程序执行时间***********&lt;br&gt;**********www.knowsky.com***********&lt;br&gt;****************************************/&lt;br&gt;//定义获取时间函数 &lt;br&gt;function getmicrotime(){ &lt;br&gt;    list($usec, $sec) = explode(&amp;quot; &amp;quot;,microtime()); &lt;br&gt;    return ((float)$usec + (float)$sec); &lt;br&gt;}&lt;br&gt;?&amp;gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#588558"&gt;&amp;lt;?php&lt;br&gt;$time_start = getmicrotime();&lt;br&gt;include(&amp;quot;db.inc.php&amp;quot;);//连接数据库&lt;br&gt;$db=new testcsv;&lt;br&gt;?&amp;gt;&lt;br&gt;&amp;lt;?php&lt;br&gt;$handle = fopen (&amp;quot;test.csv&amp;quot;,&amp;quot;r&amp;quot;);&lt;br&gt;$sql=&amp;quot;insert into scores(idcard,names,num,sex,nation,score) values('&amp;quot;;&lt;br&gt;while ($data = fgetcsv ($handle, 1000, &amp;quot;,&amp;quot;)) {&lt;br&gt;   $num = count ($data);&lt;br&gt;   for ($c=0; $c &amp;lt; $num; $c++) {&lt;br&gt;       if($c==$num-1){$sql=$sql.$data[$c].&amp;quot;')&amp;quot;;break;}&lt;br&gt;       $sql=$sql.$data[$c].&amp;quot;','&amp;quot;;&lt;br&gt;   }&lt;br&gt;print &amp;quot;&amp;lt;br&amp;gt;&amp;quot;;&lt;br&gt;echo $sql.&amp;quot;&amp;lt;br&amp;gt;&amp;quot;;&lt;br&gt;$db-&amp;gt;query($sql);&lt;br&gt;echo &amp;quot;SQL语句执行成功！&amp;lt;br&amp;gt;&amp;quot;;&lt;br&gt;$sql=&amp;quot;insert into scores(idcard,names,num,sex,nation,score) values('&amp;quot;;&lt;br&gt;}&lt;br&gt;fclose ($handle);&lt;br&gt;$time_end = getmicrotime();&lt;br&gt;$time = $time_end - $time_start;&lt;br&gt;echo &amp;quot;程序执行时间：&amp;quot;.$time.&amp;quot;秒&amp;quot;;&lt;br&gt;?&amp;gt; &lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+php%e4%b8%ad%e6%95%b0%e6%8d%ae%e7%9a%84%e6%89%b9%e9%87%8f%e5%af%bc%e5%85%a5(csv%e6%96%87%e4%bb%b6)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!339.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!339.entry</guid><pubDate>Tue, 07 Nov 2006 02:51:42 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!339/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!339.entry#comment</wfw:comment><dcterms:modified>2006-11-07T02:51:42Z</dcterms:modified></item><item><title>使用Pear实现RSS Parsing</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!337.entry</link><description>RSS是Web2.0的身份牌，随着Web2.0的升温关于RSS文件的操作也变得日益频繁。Pear提供了对RSS 09/1/2的支持，在&lt;a href="http://pear.php.net/"&gt;http://pear.php.net&lt;/a&gt;下载XML_RSS以及XML_Parse包，解压RSS.php和Parser.php至Pear/XML目录中。&lt;br&gt;&lt;br&gt;根据以下的Example，便可轻易对本地RSS文件或在线RSS链接做出分析：&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&lt;font color="#000000"&gt;&lt;br&gt;&lt;font color="#0000bb"&gt;&amp;lt;?php&lt;br&gt;&lt;/font&gt;&lt;font color="#7f007f"&gt;require_once &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;XML/RSS.php&amp;quot;&lt;/font&gt;&lt;font color="#7f007f"&gt;;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$rss &lt;/font&gt;&lt;font color="#7f007f"&gt;=&amp;amp; new &lt;/font&gt;&lt;font color="#0000bb"&gt;XML_RSS&lt;/font&gt;&lt;font color="#7f007f"&gt;(&lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;http://slashdot.org/slashdot.rdf&amp;quot;&lt;/font&gt;&lt;font color="#7f007f"&gt;);&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$rss&lt;/font&gt;&lt;font color="#7f007f"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;parse&lt;/font&gt;&lt;font color="#7f007f"&gt;();&lt;br&gt;&lt;br&gt;echo &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;&amp;lt;h1&amp;gt;Headlines from &amp;lt;a href=\&amp;quot;http://slashdot.org\&amp;quot;&amp;gt;Slashdot&amp;lt;/a&amp;gt;&amp;lt;/h1&amp;gt;\n&amp;quot;&lt;/font&gt;&lt;font color="#7f007f"&gt;;&lt;br&gt;echo &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;&amp;lt;ul&amp;gt;\n&amp;quot;&lt;/font&gt;&lt;font color="#7f007f"&gt;;&lt;br&gt;&lt;br&gt;foreach (&lt;/font&gt;&lt;font color="#0000bb"&gt;$rss&lt;/font&gt;&lt;font color="#7f007f"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;getItems&lt;/font&gt;&lt;font color="#7f007f"&gt;() as &lt;/font&gt;&lt;font color="#0000bb"&gt;$item&lt;/font&gt;&lt;font color="#7f007f"&gt;) {&lt;br&gt;    echo &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;&amp;lt;li&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; &lt;/font&gt;&lt;font color="#7f007f"&gt;. &lt;/font&gt;&lt;font color="#0000bb"&gt;$item&lt;/font&gt;&lt;font color="#7f007f"&gt;[&lt;/font&gt;&lt;font color="#007f00"&gt;'link'&lt;/font&gt;&lt;font color="#7f007f"&gt;] . &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;\&amp;quot;&amp;gt;&amp;quot; &lt;/font&gt;&lt;font color="#7f007f"&gt;. &lt;/font&gt;&lt;font color="#0000bb"&gt;$item&lt;/font&gt;&lt;font color="#7f007f"&gt;[&lt;/font&gt;&lt;font color="#007f00"&gt;'title'&lt;/font&gt;&lt;font color="#7f007f"&gt;] . &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;&lt;/font&gt;&lt;font color="#7f007f"&gt;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;echo &lt;/font&gt;&lt;font color="#007f00"&gt;&amp;quot;&amp;lt;/ul&amp;gt;\n&amp;quot;&lt;/font&gt;&lt;font color="#7f007f"&gt;;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;?&amp;gt;&lt;br&gt;&lt;font size=4&gt;&lt;br&gt;&lt;/font&gt;&lt;font style="color:rgb(255,0,0)" size=4&gt;&lt;span style="font-family:Tahoma,Helvetica,Sans-Serif"&gt;提醒一句，如果要分析在线的RSS链接，需要设置php.ini，将&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/code&gt;&lt;font style="color:rgb(255,0,0)" size=4&gt;&lt;span style="font-family:Tahoma,Helvetica,Sans-Serif"&gt;allow_url_fopen属性设置为On，重启Apache即可！&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e4%bd%bf%e7%94%a8Pear%e5%ae%9e%e7%8e%b0RSS+Parsing&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!337.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!337.entry</guid><pubDate>Fri, 03 Nov 2006 08:22:06 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!337/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!337.entry#comment</wfw:comment><dcterms:modified>2006-11-07T06:54:22Z</dcterms:modified></item><item><title>身份证检测函数给搞出来了</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!325.entry</link><description>&lt;span style="font-size:12px"&gt;&lt;font color="#000000"&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;checkidcard&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;{&lt;br&gt;    &lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard_len&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#0000bb"&gt;strlen&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;);&lt;br&gt;    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard_len&lt;/font&gt;&lt;font color="#007700"&gt;!=&lt;/font&gt;&lt;font color="#dd0000"&gt;'15'&lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard_len&lt;/font&gt;&lt;font color="#007700"&gt;!=&lt;/font&gt;&lt;font color="#dd0000"&gt;'18'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    {&lt;br&gt;        echo &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证位数不正确'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;    }&lt;br&gt;    elseif(!&lt;/font&gt;&lt;font color="#0000bb"&gt;eregi&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+(19|20)+([0-9]{2})+(0)+([1-9]{1})+(0)+([1-9]{1})+([0-9]{3})+([0-9xy]{1})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//1999/2099年09月09日    18位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;eregi&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+(19|20)+([0-9]{2})+(0)+([1-9]{1})+(1|2)+([0-9]{1})+([0-9]{3})+([0-9xy]{1})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//1999/2099年09月29日    18位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;eregi&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+(19|20)+([0-9]{2})+(0)+([1-9]{1})+(3)+([01]{1})+([0-9]{3})+([0-9xy]{1})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//1999/2099年09月31日    18位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;eregi&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+(19|20)+([0-9]{2})+(1)+([012]{1})+(0)+([1-9]{1})+([0-9]{3})+([0-9xy]{1})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//1999/2099年12月09日    18位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;eregi&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+(19|20)+([0-9]{2})+(1)+([012]{1})+(1|2)+([0-9]{1})+([0-9]{3})+([0-9xy]{1})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//1999/2099年12月29日    18位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;eregi&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+(19|20)+([0-9]{2})+(1)+([012]{1})+(3)+([01]{1})+([0-9]{3})+([0-9xy]{1})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//1999/2099年12月31日    18位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;ereg&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+([0-9]{2})+(0)+([1-9]{1})+(0)+([1-9]{1})+([0-9]{3})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//99年09月09日        15位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;ereg&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+([0-9]{2})+(0)+([1-9]{1})+(1|2)+([0-9]{1})+([0-9]{3})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//99年09月29日        15位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;ereg&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+([0-9]{2})+(0)+([1-9]{1})+(3)+(0|1)+([0-9]{3})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//99年09月31日        15位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;ereg&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+([0-9]{2})+(1)+(0|1|2)+(0)+([1-9]{1})+([0-9]{3})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//99年12月09日        15位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;ereg&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+([0-9]{2})+(1)+(0|1|2)+(1|2)+([0-9]{1})+([0-9]{3})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//99年12月29日        15位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;!&lt;/font&gt;&lt;font color="#0000bb"&gt;ereg&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91)+([0-9]{4})+([0-9]{2})+(1)+(0|1|2)+(3)+(0|1)+([0-9]{3})$&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;))&lt;br&gt;    &lt;/font&gt;&lt;font color="#ff8000"&gt;//99年12月31日        15位&lt;br&gt;    &lt;/font&gt;&lt;font color="#007700"&gt;{&lt;br&gt;        echo &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式不符合规定要求'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;    }&lt;br&gt;    elseif(&lt;/font&gt;&lt;font color="#0000bb"&gt;strlen&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)==&lt;/font&gt;&lt;font color="#dd0000"&gt;'15'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    {&lt;br&gt;        &lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#dd0000"&gt;'19'&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;6&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;);        &lt;/font&gt;&lt;font color="#ff8000"&gt;//现在应该没有2000年以后的15位身份证了吧?(:&lt;br&gt;        &lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;==&lt;/font&gt;&lt;font color="#dd0000"&gt;'1900'&lt;/font&gt;&lt;font color="#007700"&gt;?&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;%&lt;/font&gt;&lt;font color="#0000bb"&gt;400&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;%&lt;/font&gt;&lt;font color="#0000bb"&gt;4&lt;/font&gt;&lt;font color="#007700"&gt;;        &lt;/font&gt;&lt;font color="#ff8000"&gt;//求闰年,如果为世纪年则用400作为除数&lt;br&gt;        &lt;/font&gt;&lt;font color="#007700"&gt;if(&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;==&lt;/font&gt;&lt;font color="#dd0000"&gt;'1'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;        {&lt;br&gt;            if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;8&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)==&lt;/font&gt;&lt;font color="#dd0000"&gt;'02'&lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'28'&lt;/font&gt;&lt;font color="#007700"&gt;)    &lt;/font&gt;&lt;font color="#ff8000"&gt;//非闰年&lt;br&gt;            &lt;/font&gt;&lt;font color="#007700"&gt;{&lt;br&gt;                echo &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,非闰年二月份只有28天'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        elseif(&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;==&lt;/font&gt;&lt;font color="#dd0000"&gt;'0'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;        {&lt;br&gt;            if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;8&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)==&lt;/font&gt;&lt;font color="#dd0000"&gt;'02'&lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'29'&lt;/font&gt;&lt;font color="#007700"&gt;)    &lt;/font&gt;&lt;font color="#ff8000"&gt;//闰年&lt;br&gt;            &lt;/font&gt;&lt;font color="#007700"&gt;{&lt;br&gt;                echo &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,闰年的二月份只有29天'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        else&lt;br&gt;        {&lt;br&gt;            &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#dd0000"&gt;'通过身份证格式检测'&lt;/font&gt;&lt;font color="#007700"&gt;;        &lt;/font&gt;&lt;font color="#ff8000"&gt;//初始化$message的值&lt;br&gt;            &lt;/font&gt;&lt;font color="#007700"&gt;switch(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;8&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;))&lt;br&gt;            {&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;04&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,四月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;06&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,六月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;09&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,九月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;11&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,十一月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                default;&lt;br&gt;            }&lt;br&gt;            echo &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;    elseif(&lt;/font&gt;&lt;font color="#0000bb"&gt;strlen&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;)==&lt;/font&gt;&lt;font color="#dd0000"&gt;'18'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;    {&lt;br&gt;        &lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;6&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;4&lt;/font&gt;&lt;font color="#007700"&gt;);&lt;br&gt;        &lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;==&lt;/font&gt;&lt;font color="#dd0000"&gt;'2000'&lt;/font&gt;&lt;font color="#007700"&gt;?&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;%&lt;/font&gt;&lt;font color="#0000bb"&gt;400&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#0000bb"&gt;$year&lt;/font&gt;&lt;font color="#007700"&gt;%&lt;/font&gt;&lt;font color="#0000bb"&gt;4&lt;/font&gt;&lt;font color="#007700"&gt;;        &lt;/font&gt;&lt;font color="#ff8000"&gt;//求闰年,如果为世纪年则用400作为除数&lt;br&gt;        &lt;/font&gt;&lt;font color="#007700"&gt;if(&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;==&lt;/font&gt;&lt;font color="#dd0000"&gt;'1'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;        {&lt;br&gt;            if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)==&lt;/font&gt;&lt;font color="#dd0000"&gt;'02'&lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;12&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'28'&lt;/font&gt;&lt;font color="#007700"&gt;)    &lt;/font&gt;&lt;font color="#ff8000"&gt;//非闰年&lt;br&gt;            &lt;/font&gt;&lt;font color="#007700"&gt;{&lt;br&gt;                echo &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,非闰年二月份只有28天'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        elseif(&lt;/font&gt;&lt;font color="#0000bb"&gt;$div_exa&lt;/font&gt;&lt;font color="#007700"&gt;==&lt;/font&gt;&lt;font color="#dd0000"&gt;'0'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;        {&lt;br&gt;            if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)==&lt;/font&gt;&lt;font color="#dd0000"&gt;'02'&lt;/font&gt;&lt;font color="#007700"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;12&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'29'&lt;/font&gt;&lt;font color="#007700"&gt;)    &lt;/font&gt;&lt;font color="#ff8000"&gt;//闰年&lt;br&gt;            &lt;/font&gt;&lt;font color="#007700"&gt;{&lt;br&gt;                echo &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,闰年的二月份只有29天'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        else&lt;br&gt;        {&lt;br&gt;            &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;=&lt;/font&gt;&lt;font color="#dd0000"&gt;'通过身份证格式检测'&lt;/font&gt;&lt;font color="#007700"&gt;;        &lt;/font&gt;&lt;font color="#ff8000"&gt;//初始化$message的值&lt;br&gt;            &lt;/font&gt;&lt;font color="#007700"&gt;switch(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;10&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;))&lt;br&gt;            {&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;04&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;12&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,四月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;06&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;12&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,六月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;09&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;12&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,九月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                case &lt;/font&gt;&lt;font color="#0000bb"&gt;11&lt;/font&gt;&lt;font color="#007700"&gt;:&lt;br&gt;                    if(&lt;/font&gt;&lt;font color="#0000bb"&gt;substr&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$idcard&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;12&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;2&lt;/font&gt;&lt;font color="#007700"&gt;)&amp;gt;&lt;/font&gt;&lt;font color="#dd0000"&gt;'30'&lt;/font&gt;&lt;font color="#007700"&gt;)&lt;br&gt;                    {&lt;br&gt;                        &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#dd0000"&gt;'身份证格式错误,十一月份没有31号'&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;                    }&lt;br&gt;                break;&lt;br&gt;                default;&lt;br&gt;            }&lt;br&gt;            echo &lt;/font&gt;&lt;font color="#0000bb"&gt;$message&lt;/font&gt;&lt;font color="#007700"&gt;;&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e8%ba%ab%e4%bb%bd%e8%af%81%e6%a3%80%e6%b5%8b%e5%87%bd%e6%95%b0%e7%bb%99%e6%90%9e%e5%87%ba%e6%9d%a5%e4%ba%86&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!325.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!325.entry</guid><pubDate>Wed, 05 Jul 2006 06:55:52 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!325/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!325.entry#comment</wfw:comment><dcterms:modified>2006-07-05T06:55:52Z</dcterms:modified></item><item><title>使用PHP连接LDAP服务器</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!279.entry</link><description>本文将演示如何使用PHP连接一个LDAP服务器。具体的例子是连接到一个公共的LDAP服务器并且进行搜索。这个例子模拟的是Netscape Communicator 4.*，通过自己的地址本连接到LDAP资源。 &lt;br&gt;LDAP介绍 &lt;br&gt;&lt;br&gt;　　可能不少人已经听说过LDAP，但是却不了解它具体是什么东东和如何工作。在这里我将不会很详细地介绍LDAP，只是对该协议做一个简介。 &lt;br&gt;&lt;br&gt;　　LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用，不过根据组织者的需要，它可以做得更加强大。 &lt;br&gt;&lt;br&gt;　
　LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果，不过在其它方面，例如更新，就慢得多。要
特别注意的是，LDAP通常作为一个hierarchal数据库使用，而不是一个关系数据库。因此，它的结构用树来表示比用表格好。正因为这样，就不能用
SQL语句了。 &lt;br&gt;&lt;br&gt;　　简单说来，LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 &lt;br&gt;&lt;br&gt;要求 &lt;br&gt;&lt;br&gt;　　 PHPV.4（以前的版本也可以，不过没有经过测试），编译支持LADP，即使用编译时带--with-ldap公共的LDAP目录。在例子中提供了两个。 &lt;br&gt;&lt;br&gt;例子概览 &lt;br&gt;&lt;br&gt;1.设置公共LDAP服务器的信息 &lt;br&gt;2.创建一个LDAP查询 &lt;br&gt;3.连接到LDAP服务器 &lt;br&gt;4.如果连接成功，处理查询 &lt;br&gt;5.格式化输出 &lt;br&gt;6.关闭连接 &lt;br&gt;7.设计搜索界面的HTML表格 &lt;br&gt;8.显示结果 &lt;br&gt;&lt;br&gt;设置公共LDAP服务器的信息 &lt;br&gt;&lt;br&gt;　　我们要做的第一件事情是定义所有欲搜索的LDAP服务器的信息 &lt;br&gt;&lt;br&gt;&amp;quot;LDAP_NAME&amp;quot; = 新的LDAP项目的名字 &lt;br&gt;&amp;quot;LDAP_SERVER&amp;quot; = 新的LDAP项目的IP地址或者主机名 &lt;br&gt;&amp;quot;LDAP_ROOT_DN&amp;quot; = 新的LDAP项目的根的辨识名 &lt;br&gt;&lt;br&gt;&amp;lt;?php &lt;br&gt;&lt;br&gt;$LDAP_NAME[0] = &amp;quot;Netscape Net Center&amp;quot;; &lt;br&gt;$LDAP_SERVER[0] = &amp;quot;memberdir.netscape.com&amp;quot;; &lt;br&gt;$LDAP_ROOT_DN[0] = &amp;quot;ou=member_directory,o=netcenter.com&amp;quot;; &lt;br&gt;&lt;br&gt;$LDAP_NAME[1] = &amp;quot;Bigfoot&amp;quot;; &lt;br&gt;$LDAP_SERVER[1] = &amp;quot;ldap.bigfoot.com&amp;quot;; &lt;br&gt;$LDAP_ROOT_DN[1] = &amp;quot;&amp;quot;; &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;//如果没有选择服务器的话将它设置为0 &lt;br&gt;if(!$SERVER_ID) &lt;br&gt;$SERVER_ID=0; &lt;br&gt;&lt;br&gt;?&amp;gt; &lt;br&gt;&lt;br&gt;建立LDAP查询 &lt;br&gt;&lt;br&gt;　　前面已经提到，LDAP查询与SQL查询是不一样的。因此，语句要受到一定的限制，以下是一个基本的例子。 &lt;br&gt;&lt;br&gt;//Create Query $ldap_query = &amp;quot;cn=$common&amp;quot;; &lt;br&gt;&lt;br&gt;　　在我们的例子中，“cn”是我们要进行搜索的属性，而$common是由搜索的form中得到的字符串变量。LDAP的查询语句语句可使用通配符‘*’。例如‘$stanley’将可以找出‘dan stanley’。 &lt;br&gt;&lt;br&gt;连接到LDAP服务器 &lt;br&gt;&lt;br&gt;　　以下的函数连接到一个LDAP资源，并且将连接的识别号赋给一个变量，就好象连接到一个通常的数据库一样，例如MySQL。 &lt;br&gt;&lt;br&gt;&amp;lt;?php &lt;br&gt;&lt;br&gt;//连接到LDAP &lt;br&gt;$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]); &lt;br&gt;&lt;br&gt;?&amp;gt; &lt;br&gt;&lt;br&gt;　　在我们的例子中，“$connect_id”是连接的识别号，$LDAP_SERVER是可能的ldap服务器数组，而$SERVER_ID是由搜索表格得到的LDAP服务器变量。 &lt;br&gt;&lt;br&gt;如果连接成功，处理查询 &lt;br&gt;&lt;br&gt;　　 如果连接成功的话，我们将得到一个有效的LDAP连接识别号，这样我们就可以处理查询。 &lt;br&gt;&lt;br&gt;&amp;lt;?php &lt;br&gt;&lt;br&gt;if($connect_id) &lt;br&gt;{ &lt;br&gt;//认证 &lt;br&gt;$bind_id = ldap_bind($connect_id); &lt;br&gt;&lt;br&gt;//执行搜索 &lt;br&gt;$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query); &lt;br&gt;&lt;br&gt;//将结果集合分配给一个数组 &lt;br&gt;$result_array = ldap_get_entries($connect_id, $search_id); &lt;br&gt;} &lt;br&gt;else &lt;br&gt;{ &lt;br&gt;//显示连接错误 &lt;br&gt;echo &amp;quot;Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]&amp;quot;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;?&amp;gt; &lt;br&gt;&lt;br&gt;　
　一旦我们与LDAP服务器建立好连接，我们就必须进行认证。PHP在连接大多数的数据库时，都是通过发送用户名和密码来进行的。不过，在LDAP中，认
证是未知的，直到进行一个bind操作。在我们的例子中，“$bind_id”是绑定连接的标识符。我们是通过匿名绑定到公共的LDAP服务器的。因此，
在执行ldap_bind()时，只使用连接识别号就可以了，无需其它的参数。 &lt;br&gt;&lt;br&gt;　　在经过认证后（这里是匿名的），我们就可以使用ldap_search()函数来执行查询，产生的$search_id是我们搜索的连接识别符。 &lt;br&gt;&lt;br&gt;　　然后，我们使用ldap_get_entries()函数将结果集赋给$result_array变量。这样我们能够以逻辑的方式排列信息，以便显示。 &lt;br&gt;格式化输出 &lt;br&gt;&lt;br&gt;　
　在执行完LDAP搜索后，返回的数据是以查找的顺序排列的。不过我们在排序时没有SQL这样方便，使用ORDER
BY语句就可以了。通常多数公共的LDAP目录都没有标准的大小规范。排序是基于字符的ASCII值，我们必须将字符全部格式化为小写，以便按字母的顺序
输出。 &lt;br&gt;&lt;br&gt;　　要特别注意的是，返回的LDAP结果集是一个多维的数组。因此，我们脚本中的$result_array的结构如下： &lt;br&gt;&lt;br&gt;$result_array[0][&amp;quot;cn&amp;quot;] [0] = &amp;quot;Dannie Stanley&amp;quot; &lt;br&gt;[&amp;quot;dn&amp;quot;] [0] = &amp;quot;uid=dannie,dc=spinweb.net&amp;quot; &lt;br&gt;[&amp;quot;givenname&amp;quot;][0] = &amp;quot;Dannie&amp;quot; &lt;br&gt;[&amp;quot;sn&amp;quot;] [0] = &amp;quot;Stanley&amp;quot; &lt;br&gt;[&amp;quot;mail&amp;quot;] [0] = &amp;quot;danSPAM@spinweb.net&amp;quot; &lt;br&gt;$result_array[1][&amp;quot;cn&amp;quot;] [0] = &amp;quot;Michael Reynolds&amp;quot; &lt;br&gt;[&amp;quot;dn&amp;quot;] [0] = &amp;quot;uid=michael,dc=spinweb.net&amp;quot; &lt;br&gt;[&amp;quot;givenname&amp;quot;][0] = &amp;quot;Michael&amp;quot; &lt;br&gt;[&amp;quot;sn&amp;quot;] [0] = &amp;quot;Reynolds&amp;quot; &lt;br&gt;[&amp;quot;mail&amp;quot;] [0] = &amp;quot;michaelSPAM@spinweb.net&amp;quot; &lt;br&gt;&lt;br&gt;　　数据以这种格式存放的原因是每个属性都可能有超过一个值（象树的结构）。例如，如果我的名字是‘Dannie’，我还可以在LDAP中增加一些属性，例如： &lt;br&gt;&lt;br&gt;$result_array[0][&amp;quot;cn&amp;quot;] [0] = &amp;quot;Dannie Stanley&amp;quot; &lt;br&gt;[&amp;quot;dn&amp;quot;] [0] = &amp;quot;uid=dannie,dc=spinweb.net&amp;quot; &lt;br&gt;[&amp;quot;givenname&amp;quot;][0] = &amp;quot;Dannie&amp;quot; &lt;br&gt;[&amp;quot;givenname&amp;quot;][0] = &amp;quot;Dan&amp;quot; &lt;br&gt;[&amp;quot;sn&amp;quot;] [0] = &amp;quot;Stanley&amp;quot; &lt;br&gt;[&amp;quot;mail&amp;quot;] [0] = &amp;quot;danSPAM@spinweb.net&amp;quot; &lt;br&gt;&lt;br&gt;　　在我们的搜索中，我们只关心每个属性的首个值，因此除了dn只有一个值外，其它我们只使用每个属性中序号为0的值。以下就是属性和它们含义的简单列表： &lt;br&gt;&lt;br&gt;&amp;quot;cn&amp;quot; = Common Name &lt;br&gt;&amp;quot;dn&amp;quot; = Distinguished Name &lt;br&gt;&amp;quot;givenname&amp;quot; = First Name &lt;br&gt;&amp;quot;sn&amp;quot; = Last Name &lt;br&gt;&amp;quot;mail&amp;quot; = Email地址 &lt;br&gt;&lt;br&gt;&amp;lt;?php &lt;br&gt;&lt;br&gt;//如果搜索成功，将结果排序 &lt;br&gt;if($result_array) &lt;br&gt;{ &lt;br&gt;for($i=0; $i { &lt;br&gt;$format_array[$i][0] = strtolower($result_array[$i][&amp;quot;cn&amp;quot;][0]); &lt;br&gt;$format_array[$i][1] = $result_array[$i][&amp;quot;dn&amp;quot;]; &lt;br&gt;$format_array[$i][2] = strtolower($result_array[$i][&amp;quot;givenname&amp;quot;][0]); &lt;br&gt;$format_array[$i][3] = strtolower($result_array[$i][&amp;quot;sn&amp;quot;][0]); &lt;br&gt;$format_array[$i][4] = strtolower($result_array[$i][&amp;quot;mail&amp;quot;][0]); &lt;br&gt;} &lt;br&gt;&lt;br&gt;//排序数组 &lt;br&gt;sort($format_array, &amp;quot;SORT_STRING&amp;quot;); &lt;br&gt;&lt;br&gt;for($i=0; $i { &lt;br&gt;$cn = $format_array[$i][0]; &lt;br&gt;$dn = $format_array[$i][1]; &lt;br&gt;$fname = ucwords($format_array[$i][2]); &lt;br&gt;$lname = ucwords($format_array[$i][3]); &lt;br&gt;$email = $format_array[$i][4]; &lt;br&gt;&lt;br&gt;if($dn &amp;amp;&amp;amp; $fname &amp;amp;&amp;amp; $lname &amp;amp;&amp;amp; $email) &lt;br&gt;{ &lt;br&gt;$result_list .= &amp;quot;$fname $lname&amp;quot;; &lt;br&gt;$result_list .= &amp;quot; &amp;lt;$email&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;} &lt;br&gt;elseif($dn &amp;amp;&amp;amp; $cn &amp;amp;&amp;amp; $email) &lt;br&gt;{ &lt;br&gt;$result_list .= &amp;quot;&amp;lt;A href='/&amp;quot;ldap://$LDAP_SERVER[$SERVER_ID]/$dn/&amp;quot;'&amp;gt;$cn&amp;lt;/A&amp;gt;&amp;quot;; &lt;br&gt;$result_list .= &amp;quot; &amp;lt;A href='/&amp;quot;mailto:$email/&amp;quot;'&amp;gt;$email&amp;lt;/A&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;} &lt;br&gt;} &lt;br&gt;} &lt;br&gt;else &lt;br&gt;{ &lt;br&gt;echo &amp;quot;Result set empty for query: $ldap_query&amp;quot;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;?&amp;gt; &lt;br&gt;　
　
在我们的例子中，$format_array是我们建立的新数组，里面包括有查询的结果，并且被格式化用作输出。首先循环$result_array中的
每个元素，并且将它分配给一个两维的数组用作排序。同时我们使用strtolower()函数将所有的值变为小写。 &lt;br&gt;&lt;br&gt;　　接着，我们使用PHP自带的一个称为sort()的函数进行排序。首个参数是要排序的数组，另一个是要执行的排序类型，该类型是由PHP的文档定义的。由于我们根据字符串排序，我们使用“SORT_STRING”。 &lt;br&gt;&lt;br&gt;　
　第三，我们循环已经格式化好的数组，并且将它分配给一个名字为$result_list的输出字符，该字符包含了HTML描述。要特别注意的是，在超链
接中，我使用的是ldap的URL格式。这个格式的例子类似：HREF=&amp;quot;ldap://ldap.domain.net/uid=dannie,dc=
domain.net&amp;quot;。 &lt;br&gt;&lt;br&gt;关闭连接 &lt;br&gt;&lt;br&gt;　　现在我们所有的数据已经包含在$result_list中了，我们可以安全地关闭LDAP的连接。 &lt;br&gt;&lt;br&gt;&amp;lt;?php &lt;br&gt;&lt;br&gt;//关闭连接 &lt;br&gt;ldap_close($connect_id); &lt;br&gt;&lt;br&gt;定制搜索界面的HTML表格 &lt;br&gt;&lt;br&gt;　　最后，我们要定制搜索用的HTML表格，它是用来给用户执行搜索的。 &lt;br&gt;&lt;br&gt;//定制表格 &lt;br&gt;echo &amp;quot; &amp;lt;CENTER&amp;gt;&amp;lt;FORM action='&amp;quot;$PHP_SELF&amp;quot;' method='&amp;quot;GET&amp;quot;'&amp;gt;&amp;quot;; &lt;br&gt;echo
&amp;quot;Search in:&amp;lt;SELECT name='&amp;quot;SERVER_ID&amp;quot;'&amp;gt;&amp;quot;; //循环以建立SELECT选项
for($i=0; $i&amp;lt;COUNT($LDAP_NAME); &amp;lt;br $i++)&amp;gt; echo &amp;quot;&amp;lt;OPTION
selected value='&amp;quot;$i&amp;quot;'&amp;gt;&amp;quot;.$LDAP_NAME[$i].&amp;quot;&amp;lt;/OPTION&amp;gt;&amp;quot;; echo
&amp;quot;&amp;lt;/SELECT&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;echo &amp;quot;Search for:&amp;lt;INPUT name='&amp;quot;common&amp;quot;' type='&amp;quot;text&amp;quot;'&amp;gt;&amp;quot;; &lt;br&gt;echo &amp;quot;&amp;lt;INPUT name='&amp;quot;lookup&amp;quot;' type='&amp;quot;submit&amp;quot;' value='&amp;quot;go&amp;quot;'&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;echo &amp;quot;(You can use * for wildcard searches, ex. * Stanley will find all Stanleys) &lt;br&gt;&amp;quot;; &lt;br&gt;echo &amp;quot;&amp;lt;/FORM&amp;gt;&amp;lt;/CENTER&amp;gt;&amp;quot;; &lt;br&gt;&lt;br&gt;?&amp;gt; &lt;br&gt;&lt;br&gt;　　代码中的$PHP_SELF是一个全局的常量，代表的是脚本页面自身，其中的循环是用来通过我们的$LDAP_NAME变量创建SELECT选项。 &lt;br&gt;&lt;br&gt;显示结果 &lt;br&gt;&lt;br&gt;　　现在所有的工作已经完成了，我们将打印出结果集。如果没有符合的结果，将会显示&amp;quot;No Results&amp;quot;的信息。 &lt;br&gt;&lt;br&gt;&amp;lt;&amp;lt;?&amp;gt;php &lt;br&gt;&lt;br&gt;//显示结果 &lt;br&gt;if($result_list) &lt;br&gt;{ &lt;br&gt;echo &amp;quot; &amp;lt;CENTER&amp;gt;&amp;lt;TABLE border='&amp;quot;1&amp;quot;' cellPadding='&amp;quot;10&amp;quot;' cellSpacing='&amp;quot;0&amp;quot;' &lt;br&gt;BGCOLOR=&amp;quot;#FFFFEA&amp;quot; WIDTH=&amp;quot;450&amp;quot;&amp;gt; &amp;lt;TBODY&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;$result_list&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt; &lt;br&gt;&amp;lt;/TBODY&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/CENTER&amp;gt;&amp;quot;; &lt;br&gt;} &lt;br&gt;else &lt;br&gt;echo &amp;quot;No Results&amp;quot;; &lt;br&gt;&lt;br&gt;?&amp;gt; &lt;br&gt;&lt;br&gt;源代码 &lt;br&gt;&lt;br&gt;　　以下是完整的源代码，只要将它剪切并粘贴到一个HTML文档，就可以尝试一下了。 &lt;br&gt;&lt;br&gt;&amp;lt;?php &lt;br&gt;&lt;br&gt;$LDAP_NAME[0] = &amp;quot;Netscape Net Center&amp;quot;; &lt;br&gt;$LDAP_SERVER[0] = &amp;quot;memberdir.netscape.com&amp;quot;; &lt;br&gt;$LDAP_ROOT_DN[0] = &amp;quot;ou=member_directory,o=netcenter.com&amp;quot;; &lt;br&gt;&lt;br&gt;$LDAP_NAME[1] = &amp;quot;Bigfoot&amp;quot;; &lt;br&gt;$LDAP_SERVER[1] = &amp;quot;ldap.bigfoot.com&amp;quot;; &lt;br&gt;$LDAP_ROOT_DN[1] = &amp;quot;&amp;quot;; &lt;br&gt;&lt;br&gt;//如果没有选择服务器的话将它设置为0 &lt;br&gt;if(!$SERVER_ID) &lt;br&gt;$SERVER_ID=0; &lt;br&gt;&lt;br&gt;//建立查询 &lt;br&gt;$ldap_query = &amp;quot;cn=$common&amp;quot;; &lt;br&gt;&lt;br&gt;//连接到LDAP &lt;br&gt;$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]); &lt;br&gt;&lt;br&gt;if($connect_id) &lt;br&gt;{ &lt;br&gt;//认证 &lt;br&gt;$bind_id = ldap_bind($connect_id); &lt;br&gt;&lt;br&gt;//执行搜索 &lt;br&gt;$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query); &lt;br&gt;&lt;br&gt;//将结果集合分配给一个数组 &lt;br&gt;$result_array = ldap_get_entries($connect_id, $search_id); &lt;br&gt;} &lt;br&gt;else &lt;br&gt;{ &lt;br&gt;//显示连接错误 &lt;br&gt;echo &amp;quot;Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]&amp;quot;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;//如果搜索成功，将结果排序 &lt;br&gt;if($result_array) &lt;br&gt;{ &lt;br&gt;for($i=0; $i { &lt;br&gt;$format_array[$i][0] = strtolower($result_array[$i][&amp;quot;cn&amp;quot;][0]); &lt;br&gt;$format_array[$i][1] = $result_array[$i][&amp;quot;dn&amp;quot;]; &lt;br&gt;$format_array[$i][2] = strtolower($result_array[$i][&amp;quot;givenname&amp;quot;][0]); &lt;br&gt;$format_array[$i][3] = strtolower($result_array[$i][&amp;quot;sn&amp;quot;][0]); &lt;br&gt;$format_array[$i][4] = strtolower($result_array[$i][&amp;quot;mail&amp;quot;][0]); &lt;br&gt;} &lt;br&gt;&lt;br&gt;//排序数组 &lt;br&gt;sort($format_array, &amp;quot;SORT_STRING&amp;quot;); &lt;br&gt;&lt;br&gt;for($i=0; $i { &lt;br&gt;$cn = $format_array[$i][0]; &lt;br&gt;$dn = $format_array[$i][1]; &lt;br&gt;$fname = ucwords($format_array[$i][2]); &lt;br&gt;$lname = ucwords($format_array[$i][3]); &lt;br&gt;$email = $format_array[$i][4]; &lt;br&gt;&lt;br&gt;if($dn &amp;amp;&amp;amp; $fname &amp;amp;&amp;amp; $lname &amp;amp;&amp;amp; $email) &lt;br&gt;{ &lt;br&gt;$result_list .= &amp;quot;&amp;lt;A href='/&amp;quot;ldap://$LDAP_SERVER[$SERVER_ID]/$dn/&amp;quot;'&amp;gt;$fname $lname&amp;lt;/A&amp;gt;&amp;quot;; &lt;br&gt;$result_list .= &amp;quot; &amp;lt;$email&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;} &lt;br&gt;elseif($dn &amp;amp;&amp;amp; $cn &amp;amp;&amp;amp; $email) &lt;br&gt;{ &lt;br&gt;$result_list .= &amp;quot;&amp;lt;A href='/&amp;quot;ldap://$LDAP_SERVER[$SERVER_ID]/$dn/&amp;quot;'&amp;gt;$cn&amp;lt;/A&amp;gt;&amp;quot;; &lt;br&gt;$result_list .= &amp;quot; &amp;lt;&amp;lt;A href='/&amp;quot;mailto:$email/&amp;quot;'&amp;gt;$email&amp;lt;/A&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;} &lt;br&gt;} &lt;br&gt;} &lt;br&gt;else &lt;br&gt;{ &lt;br&gt;echo &amp;quot;Result set empty for query: $ldap_query&amp;quot;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;//关闭连接 &lt;br&gt;ldap_close($connect_id); &lt;br&gt;&lt;br&gt;//定制表格 &lt;br&gt;echo &amp;quot; &amp;lt;CENTER&amp;gt;&amp;lt;FORM action='&amp;quot;$PHP_SELF&amp;quot;' method='&amp;quot;GET&amp;quot;'&amp;gt;&amp;quot;; &lt;br&gt;echo
&amp;quot;Search in:&amp;lt;SELECT name='&amp;quot;SERVER_ID&amp;quot;'&amp;gt;&amp;quot;; //循环以建立SELECT选项
for($i=0; $i echo &amp;quot;&amp;lt;OPTION selected
value='&amp;quot;$i&amp;quot;'&amp;gt;&amp;quot;.$LDAP_NAME[$i].&amp;quot;&amp;lt;/OPTION&amp;gt;&amp;quot;; echo
&amp;quot;&amp;lt;/SELECT&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;echo &amp;quot;Search for:&amp;lt;INPUT name='&amp;quot;common&amp;quot;' type='&amp;quot;text&amp;quot;'&amp;gt;&amp;quot;; &lt;br&gt;echo &amp;quot;&amp;lt;INPUT name='&amp;quot;lookup&amp;quot;' type='&amp;quot;submit&amp;quot;' value='&amp;quot;go&amp;quot;'&amp;gt; &lt;br&gt;&amp;quot;; &lt;br&gt;echo &amp;quot;(You can use * for wildcard searches, ex. * Stanley will find all Stanleys) &lt;br&gt;&amp;quot;; &lt;br&gt;echo &amp;quot;&amp;lt;/FORM&amp;gt;&amp;lt;/CENTER&amp;gt;&amp;quot;; &lt;br&gt;&lt;br&gt;//显示结果 &lt;br&gt;if($result_list) &lt;br&gt;{ &lt;br&gt;echo &amp;quot; &amp;lt;CENTER&amp;gt;&amp;lt;TABLE border='&amp;quot;1&amp;quot;' cellPadding='&amp;quot;10&amp;quot;' cellSpacing='&amp;quot;0&amp;quot;' &lt;br&gt;BGCOLOR=&amp;quot;#FFFFEA&amp;quot; WIDTH=&amp;quot;450&amp;quot;&amp;gt; &amp;lt;TBODY&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;$result_list&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt; &lt;br&gt;&amp;lt;/TBODY&amp;gt;&amp;lt;/TABLE&amp;gt;&amp;lt;/CENTER&amp;gt;&amp;quot;; &lt;br&gt;} &lt;br&gt;else &lt;br&gt;echo &amp;quot;No Results&amp;quot;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;?&amp;gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e4%bd%bf%e7%94%a8PHP%e8%bf%9e%e6%8e%a5LDAP%e6%9c%8d%e5%8a%a1%e5%99%a8&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!279.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!279.entry</guid><pubDate>Thu, 30 Mar 2006 03:45:19 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!279/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!279.entry#comment</wfw:comment><dcterms:modified>2006-03-30T03:45:19Z</dcterms:modified></item><item><title>变量提交预处理函数集</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!276.entry</link><description>&amp;lt;?php&lt;br&gt;/**&lt;br&gt;*   函数名称:   checkget&lt;br&gt;*   函数功能:   检查get变量&lt;br&gt;*   输入参数:   $var ---------- 变量&lt;br&gt;*   函数返回值: 返回值说明&lt;br&gt;*   其它说明:   说明&lt;br&gt;*/&lt;br&gt;function checkget($var)&lt;br&gt;{&lt;br&gt; if(isset($_GET[$var])&amp;amp;&amp;amp;!empty($_GET[$var]))&lt;br&gt; {&lt;br&gt; Return true;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; Return false;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;/**&lt;br&gt;*   函数名称:   checkpost&lt;br&gt;*   函数功能:   检查post变量&lt;br&gt;*   输入参数:   $var ---------- 变量&lt;br&gt;*   函数返回值: 返回值说明&lt;br&gt;*   其它说明:   说明&lt;br&gt;*/&lt;br&gt;function checkpost($var)&lt;br&gt;{&lt;br&gt; if(isset($_POST[$var])&amp;amp;&amp;amp;!empty($_POST[$var]))&lt;br&gt; {&lt;br&gt; Return true;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; Return false;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;/**&lt;br&gt;*   函数名称：  trimunvisible&lt;br&gt;*   函数功能：  清理不可见字符&lt;br&gt;*   输入参数：  $content ----------- 内容&lt;br&gt;*   函数返回值：    清理后的字符串&lt;br&gt;*   其它说明：  说明&lt;br&gt;*/&lt;br&gt;function trimunvisible($content)&lt;br&gt;{&lt;br&gt; return preg_replace('/[\s]+/i','',$content);&lt;br&gt;}&lt;br&gt;/**&lt;br&gt;*   函数名称：  getPageNum&lt;br&gt;*   函数功能：  取得当前页及新的起始点&lt;br&gt;*   输入参数：  输入参数的作用、取值说明及参数间关系&lt;br&gt;*   函数返回值：    返回值说明&lt;br&gt;*   其它说明：  说明&lt;br&gt;*/&lt;br&gt;function getPageNum($perpage)&lt;br&gt;{&lt;br&gt; if(!isset($_GET['page'])||$_GET['page']&amp;lt;=1)&lt;br&gt; {&lt;br&gt; $page = 1;&lt;br&gt; $startline = 0;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; $page = $_GET['page'];&lt;br&gt; $startline = ($_GET['page']-1)*$perpage;&lt;br&gt; }&lt;br&gt; $pageNum['pagenum'] = $page;&lt;br&gt; $pageNum['startline'] = $startline;&lt;br&gt; Return $pageNum;&lt;br&gt;}&lt;br&gt;/**&lt;br&gt;*   函数名称：  magicvar&lt;br&gt;*   函数功能：  检查magic_quotes设置，如果有设置，则原样返回，否则返回转义&lt;br&gt;*   输入参数：  输入参数的作用、取值说明及参数间关系&lt;br&gt;*   函数返回值：    返回值说明&lt;br&gt;*   其它说明：  说明&lt;br&gt;*/&lt;br&gt;function magicvar($var)&lt;br&gt;{&lt;br&gt; if(!empty($var))&lt;br&gt; {&lt;br&gt; $var =!get_magic_quotes_gpc()?addslashes($var):$var;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; $var = '';&lt;br&gt; }&lt;br&gt; Return $var;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：将htmlspecialchars转换的内容反转换&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function changestring($content)&lt;br&gt;{&lt;br&gt; $content = str_replace(&amp;quot;&amp;amp;quot;&amp;quot;,&amp;quot;\&amp;quot;&amp;quot;,$content);&lt;br&gt; $content = str_replace(&amp;quot;&amp;amp;lt;&amp;quot;,&amp;quot;&amp;lt;&amp;quot;,$content);&lt;br&gt; $content = str_replace(&amp;quot;&amp;amp;gt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,$content);&lt;br&gt; $content = str_replace(&amp;quot;&amp;amp;amp;&amp;quot;,&amp;quot;&amp;amp;&amp;quot;,$content);&lt;br&gt; Return $content;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：将htmlspecialchars转换的内容反转换&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function convertstring($content)&lt;br&gt;{&lt;br&gt; $content = nl2br($content);&lt;br&gt; $content = str_replace(&amp;quot; &amp;quot;,&amp;quot;&amp;amp;nbsp&amp;quot;,$content);&lt;br&gt; Return $content;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称:&lt;br&gt;*   函数功能:&lt;br&gt;*   输入参数:   输入参数的作用、取值说明及参数间关系&lt;br&gt;*   函数返回值: 返回值说明&lt;br&gt;*   其它说明:   说明&lt;br&gt;*/&lt;br&gt;function wordsfileter($str)&lt;br&gt;{&lt;br&gt; $str = nl2br($str);&lt;br&gt; $str = preg_replace('/ /',&amp;quot;&amp;amp;nbsp;&amp;quot;,$str);&lt;br&gt; $str = preg_replace('/&amp;lt;(&amp;amp;nbsp;)+&amp;gt;/iU',&amp;quot; &amp;quot;,$str);&lt;br&gt; $str = preg_replace('/&amp;lt;[\s]*script[\s]*&amp;gt;/i',&amp;quot;&amp;amp;lt;script&amp;amp;gt;&amp;quot;,$str);&lt;br&gt; $str = preg_replace('/&amp;lt;[\s]*\/script[\s]*&amp;gt;/i',&amp;quot;&amp;amp;lt;/script&amp;amp;gt;&amp;quot;,$str);&lt;br&gt; $str = preg_replace('/&amp;lt;/i',&amp;quot;&amp;amp;lt;&amp;quot;,$str);&lt;br&gt; $str = preg_replace('/&amp;gt;/i',&amp;quot;&amp;amp;gt;&amp;quot;,$str);&lt;br&gt; $str = preg_replace('/&amp;amp;lt;br&amp;amp;nbsp;\/&amp;amp;gt;/i',&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;,$str);&lt;br&gt;&lt;br&gt; Return $str;&lt;br&gt;}&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：提示并返回&lt;br&gt;*   时间：2003.9.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function alert_notes($notes)&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;Script language=\&amp;quot;javascript\&amp;quot;&amp;gt;window.alert(\&amp;quot;&amp;quot;.$notes.&amp;quot;\&amp;quot;);history.back();&amp;lt;/script&amp;gt;&amp;quot;;&lt;br&gt; exit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：提示但不结束程序&lt;br&gt;*   时间：2003.9.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function alert($notes)&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;Script language='javascript'&amp;gt;window.alert('$notes');&amp;lt;/script&amp;gt;&amp;quot;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：刷新前页&lt;br&gt;*   时间：2004-5-31&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function refresh()&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;META HTTP-EQUIV=\&amp;quot;Refresh\&amp;quot; CONTENT=\&amp;quot;0; URL=&amp;quot;.$_SERVER[&amp;quot;HTTP_REFERER&amp;quot;].&amp;quot;\&amp;quot;&amp;gt;&amp;quot;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：提示并刷新&lt;br&gt;*   时间：2003.9.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function alert_refresh($notes)&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;Script language='javascript'&amp;gt;window.alert('$notes');&amp;lt;/script&amp;gt;&amp;quot;;&lt;br&gt; echo &amp;quot;&amp;lt;META HTTP-EQUIV=\&amp;quot;Refresh\&amp;quot; CONTENT=\&amp;quot;0; URL=&amp;quot;.$_SERVER[&amp;quot;HTTP_REFERER&amp;quot;].&amp;quot;\&amp;quot;&amp;gt;&amp;quot;;&lt;br&gt; exit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：跳转并结束程序&lt;br&gt;*   时间：2004.2.8&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function jump($time=0,$url)&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;META HTTP-EQUIV=\&amp;quot;Refresh\&amp;quot; CONTENT=\&amp;quot;&amp;quot;.$time.&amp;quot;; URL=&amp;quot;.$url.&amp;quot;\&amp;quot;&amp;gt;&amp;quot;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：提示并跳转&lt;br&gt;*   时间：2003.9.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function alert_jump($notes,$url)&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;Script language='javascript'&amp;gt;window.alert('$notes');&amp;lt;/script&amp;gt;&amp;quot;;&lt;br&gt; echo &amp;quot;&amp;lt;META HTTP-EQUIV=\&amp;quot;Refresh\&amp;quot; CONTENT=\&amp;quot;0; URL=&amp;quot;.$url.&amp;quot;\&amp;quot;&amp;gt;&amp;quot;;&lt;br&gt; exit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：生成静态页面&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function wfile($file,$content,$mode='w')&lt;br&gt;{&lt;br&gt; $oldmask = @umask(0);&lt;br&gt; $fp = @fopen($file,$mode);&lt;br&gt; @flock($fp, 3);&lt;br&gt; if(!$fp)&lt;br&gt; {&lt;br&gt; Return false;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; @fwrite($fp,$content);&lt;br&gt; @fclose($fp);&lt;br&gt; @umask($oldmask);&lt;br&gt; Return true;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：取得IP&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function getip()&lt;br&gt;{&lt;br&gt; $ip=getenv('REMOTE_ADDR');&lt;br&gt; $ip_ = getenv('HTTP_X_FORWARDED_FOR');&lt;br&gt; if (($ip_ != &amp;quot;&amp;quot;) &amp;amp;&amp;amp; ($ip_ != &amp;quot;unknown&amp;quot;))&lt;br&gt; {&lt;br&gt; $ip=$ip_;&lt;br&gt; }&lt;br&gt; return $ip;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：计算文件单位&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function sizecount($filesize)&lt;br&gt;{&lt;br&gt; if($filesize &amp;gt;= 1073741824)&lt;br&gt; {&lt;br&gt; $filesize = round($filesize / 1073741824 * 100) / 100 . &amp;quot; G&amp;quot;;&lt;br&gt; }&lt;br&gt; elseif($filesize &amp;gt;= 1048576)&lt;br&gt; {&lt;br&gt; $filesize = round($filesize / 1048576 * 100) / 100 . &amp;quot; M&amp;quot;;&lt;br&gt; }&lt;br&gt; elseif($filesize &amp;gt;= 1024)&lt;br&gt; {&lt;br&gt; $filesize = round($filesize / 1024 * 100) / 100 . &amp;quot; K&amp;quot;;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; $filesize = $filesize . &amp;quot; bytes&amp;quot;;&lt;br&gt; }&lt;br&gt; return $filesize;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   功能：中文字符串截取&lt;br&gt;*   编写时间：2003.5.4&lt;br&gt;*   编写人：偶然&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function gbsubstr($str,$start,$len=Null)&lt;br&gt;{&lt;br&gt; $totlelength = strlen($str);&lt;br&gt;&lt;br&gt; //特例情况&lt;br&gt; if ($len == null) $len = $totlelength;&lt;br&gt; if ($len ==0) return &amp;quot;&amp;quot;;&lt;br&gt; if ($len &amp;gt;= $totlelength &amp;amp;&amp;amp; $start == 0 ) return $str;&lt;br&gt; if ($start &amp;gt; $totlelength) return &amp;quot;&amp;quot;;&lt;br&gt;&lt;br&gt; //分析$start&lt;br&gt; if ($start &amp;lt; 0 )//$start&amp;lt;0时,转化为$start&amp;gt;0时的定位.&lt;br&gt; {&lt;br&gt; if ( abs($start) &amp;gt;= $totlelength ) $start = 0;&lt;br&gt; else $start = $totlelength - abs($start);&lt;br&gt; }&lt;br&gt; //确定起始位置,当起始位拆分某汉字时,返回值包含此汉字.&lt;br&gt; if ($start &amp;gt; 0)&lt;br&gt; {&lt;br&gt; $i = $start-1;&lt;br&gt; $flag = -1;&lt;br&gt; while ($i &amp;gt;= 0)&lt;br&gt; {&lt;br&gt; if ( ord(substr($str,$i,1)) &amp;gt; 160)&lt;br&gt; {&lt;br&gt; $flag = -1*$flag;&lt;br&gt; }&lt;br&gt; else break;&lt;br&gt; $i--;&lt;br&gt; }&lt;br&gt; if($flag==1)&lt;br&gt; {&lt;br&gt; $start = $start - 1;&lt;br&gt; $len++;  //保证不位移.&lt;br&gt; }&lt;br&gt; }&lt;br&gt;&lt;br&gt; $str = substr($str,$start);//截除字符串$str的$start位前的字符&lt;br&gt; $totlelength = strlen($str);&lt;br&gt;&lt;br&gt; //确定结束位置,当结束位拆分某汉字时,返回值不包含此汉字.&lt;br&gt; if ($len&amp;lt;0) $len = $totlelength - abs($len);&lt;br&gt; if ($len &amp;lt;= 0) return &amp;quot;&amp;quot;;&lt;br&gt; $i=min($len,$totlelength);&lt;br&gt; $i--;&lt;br&gt; $flag = -1;&lt;br&gt; while ($i &amp;gt;= 0)&lt;br&gt; {&lt;br&gt; if (ord(substr($str,$i,1))&amp;gt;160)&lt;br&gt; {&lt;br&gt; $flag=-1*$flag;&lt;br&gt; }&lt;br&gt; else break;&lt;br&gt; $i--;&lt;br&gt; }&lt;br&gt; if($flag == 1)$len=$len-1;&lt;br&gt; $subit=substr($str,0,$len);&lt;br&gt; return $subit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：上传图片专用函数&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function uploadpic($srcfile,$dstfile,$is_overlay=0)&lt;br&gt;{&lt;br&gt; /* 图片大小检查 */&lt;br&gt; $file_tmp = GetImageSize($srcfile['tmp_name']);&lt;br&gt; $file_width  = $file_tmp['0'];&lt;br&gt; $file_height = $file_tmp['1'];&lt;br&gt;&lt;br&gt; /*
图片类型检查 */
if($file_tmp['mime']!='image/gif'&amp;amp;&amp;amp;$file_tmp['mime']!='image/jpg'&amp;amp;&amp;amp;$file_tmp['mime']!='image/jpeg'&amp;amp;&amp;amp;$file_tmp['mime']!='image/png'&amp;amp;&amp;amp;$file_tmp['application/x-shockwave-flash'])&lt;br&gt; {&lt;br&gt; alert_notes('图片格式不合要求，只能传gif,jpg/jpeg,png格式！');&lt;br&gt; }&lt;br&gt;&lt;br&gt; /* 检查上传文件是否存在，如果不允许覆盖就弹出警告 */&lt;br&gt; if($is_overlay==0)&lt;br&gt; {&lt;br&gt; file_exists($dstfile)?alert_notes(&amp;quot;你所上传的文件已经存在！&amp;quot;):NULL;&lt;br&gt; }&lt;br&gt;&lt;br&gt; /* 上传操作 */&lt;br&gt; if(move_uploaded_file($srcfile['tmp_name'],$dstfile))&lt;br&gt; {&lt;br&gt; Return true;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：分页&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function multi($num, $perpage, $curr_page, $mpurl)&lt;br&gt;{&lt;br&gt; if($num &amp;gt; $perpage)&lt;br&gt; {&lt;br&gt; $page   = 10;&lt;br&gt; $offset = 2;&lt;br&gt; $pages  = ceil($num / $perpage);//得到页数&lt;br&gt; $from   = $curr_page - $offset;//偏移两页&lt;br&gt; $to     = $curr_page + $page - $offset - 1;&lt;br&gt; if($page &amp;gt; $pages)&lt;br&gt; {&lt;br&gt; $from = 1;&lt;br&gt; $to   = $pages;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; if($from &amp;lt; 1)&lt;br&gt; {&lt;br&gt; $to   = $curr_page + 1 - $from;&lt;br&gt; $from = 1;&lt;br&gt; if(($to - $from) &amp;lt; $page &amp;amp;&amp;amp; ($to - $from) &amp;lt; $pages)&lt;br&gt; {&lt;br&gt; $to = $page;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; elseif($to &amp;gt; $pages)&lt;br&gt; {&lt;br&gt; $from = $curr_page - $pages + $to;&lt;br&gt; $to   = $pages;&lt;br&gt; if(($to - $from) &amp;lt; $page &amp;amp;&amp;amp; ($to - $from) &amp;lt; $pages)&lt;br&gt; {&lt;br&gt; $from = $pages - $page + 1;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; }&lt;br&gt; $fwd_back = '';&lt;br&gt; $fwd_back.=&amp;quot;共有 &amp;quot;.$num.&amp;quot; 条&amp;amp;nbsp;&amp;amp;nbsp; &amp;quot;.&amp;quot;&amp;lt;a href=\&amp;quot;$mpurl&amp;amp;page=1\&amp;quot;&amp;gt;首页&amp;lt;/a&amp;gt; &amp;amp;nbsp;&amp;quot;;&lt;br&gt; for($i = $from; $i &amp;lt;= $to; $i++)&lt;br&gt; {&lt;br&gt; if($i != $curr_page)&lt;br&gt; {&lt;br&gt; $fwd_back.= &amp;quot;&amp;lt;a href=\&amp;quot;$mpurl&amp;amp;page=$i\&amp;quot;&amp;gt;[$i]&amp;lt;/a&amp;gt;&amp;amp;nbsp;&amp;quot;;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; $fwd_back.= &amp;quot;&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;[$i]&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&amp;amp;nbsp;&amp;quot;;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; $fwd_back.=
$pages &amp;gt; $page ? &amp;quot; ... &amp;lt;a href=\&amp;quot;$mpurl&amp;amp;page=$pages\&amp;quot;&amp;gt;
[$pages] &amp;amp;gt;&amp;amp;gt;&amp;lt;/a&amp;gt;&amp;quot; : &amp;quot; &amp;lt;a
href=\&amp;quot;$mpurl&amp;amp;page=$pages\&amp;quot;&amp;gt;尾页&amp;lt;/a&amp;gt;&amp;quot;;&lt;br&gt; $multipage = $fwd_back;&lt;br&gt; Return $multipage;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：检查验证码&lt;br&gt;*   时间：2004.1.31&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function checkverify($verify_code)&lt;br&gt;{&lt;br&gt; if(!isset($verify_code)||!isset($_SESSION[&amp;quot;auth&amp;quot;])||$verify_code!=$_SESSION[&amp;quot;auth&amp;quot;]||empty($verify_code))&lt;br&gt; {&lt;br&gt; $msg = &amp;quot;验证码错误！\\n&amp;quot;;&lt;br&gt; unset($_SESSION['auth']);&lt;br&gt; Return $msg;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; unset($_SESSION['auth']);&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：生成新的四位整数验证码&lt;br&gt;*   时间：2004.2.1&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function srandnum()&lt;br&gt;{&lt;br&gt; global $authnum;&lt;br&gt; srand((double)microtime()*1000000);&lt;br&gt; while(($authnum=rand()%10000)&amp;lt;1000);&lt;br&gt; Return $authnum;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：检查用户是否有权进入&lt;br&gt;*   时间：2003.12.14&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function isReg($item)&lt;br&gt;{&lt;br&gt; if(!isset($_SESSION[$item])||empty($_SESSION[$item]))&lt;br&gt; {&lt;br&gt; Return false;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; Return true;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：取文件后缀&lt;br&gt;*   时间：2003.12.14&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function getPostfix($filename)&lt;br&gt;{&lt;br&gt;  $postfix = substr(strrchr(trim(strtolower($filename)),&amp;quot;.&amp;quot;),1);&lt;br&gt;  Return $postfix;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：生成缩略图&lt;br&gt;*   时间：2003.12.14&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function makethumb($srcFile,$dstFile,$dstW,$dstH)&lt;br&gt;{&lt;br&gt;  $data = GetImageSize($srcFile);&lt;br&gt;  switch($data[2])&lt;br&gt;  {&lt;br&gt;    case 1:&lt;br&gt;       $im=@ImageCreateFromGIF($srcFile);&lt;br&gt;       break;&lt;br&gt;    case 2:&lt;br&gt;       $im=@ImageCreateFromJPEG($srcFile);&lt;br&gt;       break;&lt;br&gt;    case 3:&lt;br&gt;       $im=@ImageCreateFromPNG($srcFile);&lt;br&gt;       break;&lt;br&gt;  }&lt;br&gt;  if(!$im) return False;&lt;br&gt;  $srcW=ImageSX($im);&lt;br&gt;  $srcH=ImageSY($im);&lt;br&gt;  $dstX=0;&lt;br&gt;  $dstY=0;&lt;br&gt;  if ($srcW*$dstH&amp;gt;$srcH*$dstW)&lt;br&gt;  {&lt;br&gt;    $fdstH = round($srcH*$dstW/$srcW);&lt;br&gt;    $dstY  = floor(($dstH-$fdstH)/2);&lt;br&gt;    $fdstW = $dstW;&lt;br&gt;  }&lt;br&gt;  else&lt;br&gt;  {&lt;br&gt;    $fdstW = round($srcW*$dstH/$srcH);&lt;br&gt;    $dstX  = floor(($dstW-$fdstW)/2);&lt;br&gt;    $fdstH = $dstH;&lt;br&gt;   }&lt;br&gt;  $ni=ImageCreateTrueColor($dstW,$dstH);&lt;br&gt;  $dstX=($dstX&amp;lt;0)?0:$dstX;&lt;br&gt;  $dstY=($dstX&amp;lt;0)?0:$dstY;&lt;br&gt;  $dstX=($dstX&amp;gt;($dstW/2))?floor($dstW/2):$dstX;&lt;br&gt;  $dstY=($dstY&amp;gt;($dstH/2))?floor($dstH/s):$dstY;&lt;br&gt;  $black = ImageColorAllocate($ni,255,255,255);&lt;br&gt;  imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);&lt;br&gt;  ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);&lt;br&gt;  ImageJpeg($ni,$dstFile);&lt;br&gt;  imagedestroy($im);&lt;br&gt;  imagedestroy($ni);&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   功能：高级搜索代码&lt;br&gt;*   编写时间：2003.5.11&lt;br&gt;*   编写人：偶然&lt;br&gt;*   变量：  $keyword    关键字&lt;br&gt;*          $con        关系，and或or&lt;br&gt;*          $method     模糊或精确&lt;br&gt;*          $field      要查找的字段&lt;br&gt;*   返回值：$tmp        sql主体&lt;br&gt;*/&lt;br&gt;function search($keyword,$con,$method,$field)&lt;br&gt;{&lt;br&gt; $tmp = '';&lt;br&gt; $keyword = split(&amp;quot;[ \t\r\n\,]+&amp;quot;,$keyword);&lt;br&gt; $num_word = count($keyword);//统计关键字个数&lt;br&gt; $num = count($field);&lt;br&gt; if($con=='')&lt;br&gt; {&lt;br&gt; $con = &amp;quot;OR&amp;quot;;&lt;br&gt; }&lt;br&gt; if($method==&amp;quot;like&amp;quot;)//模糊查找&lt;br&gt; {&lt;br&gt; for($i=0; $i&amp;lt;$num; $i++)&lt;br&gt; {&lt;br&gt; $i&amp;lt;$num-1?$condition = $con:$condition=NULL;&lt;br&gt; $tmp.= &amp;quot; {$field[$i]} $method '%&amp;quot;.join(&amp;quot;%' $con {$field[$i]} $method '%&amp;quot;,$keyword).&amp;quot;%' $condition&amp;quot;;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; elseif($method==&amp;quot;exact&amp;quot;)//精确查找&lt;br&gt; {&lt;br&gt; for($j=0; $j&amp;lt;$num; $j++)&lt;br&gt; {&lt;br&gt; $j&amp;lt;$num-1?$condition = $con:$condition=NULL;&lt;br&gt; $tmp.= &amp;quot; instr({$field[$j]},'&amp;quot;.join(&amp;quot;')!=0 $con instr({$field[$j]},'&amp;quot;,$keyword).&amp;quot;')!=0 $condition&amp;quot;;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; return $tmp;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：&lt;br&gt;*   时间：2003.7.5&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function highlight($keywords,$fields)&lt;br&gt;{&lt;br&gt; $highwords = str_replace($keywords,&amp;quot;&amp;lt;font color=\&amp;quot;#ff000\&amp;quot;&amp;gt;$keywords&amp;lt;/font&amp;gt;&amp;quot;,$fields);&lt;br&gt; Return $highwords;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**  BEGIN function&lt;br&gt;*&lt;br&gt;*   作者：偶然&lt;br&gt;*   功能：截取字串长度&lt;br&gt;*   时间：2003.12.14&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function getTitle($title,$length)&lt;br&gt;{&lt;br&gt; $newtitle = gbsubstr($title,0,$length);&lt;br&gt; $len1 = strlen($title);&lt;br&gt; $len2 = strlen($newtitle);&lt;br&gt; //如果原标题的长度比新标题长则新标题加上省略号&lt;br&gt; if($len1&amp;gt;$len2)&lt;br&gt; {&lt;br&gt; $title = $newtitle.&amp;quot;...&amp;quot;;&lt;br&gt; }&lt;br&gt; Return $title;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称： isRightType&lt;br&gt;*   函数功能：  判断文件是否符合上传规定的格式&lt;br&gt;*   输入参数：  $fileName：上传时form里定义的文件名&lt;br&gt;*   函数返回值：成功：文件的扩展名 失败：false&lt;br&gt;*   其它说明：  说明&lt;br&gt;*/&lt;br&gt;function isRightType($fileName)&lt;br&gt;{&lt;br&gt; switch( $_FILES[$fileName]['type'] )&lt;br&gt; {&lt;br&gt; case 'image/gif':&lt;br&gt; return '.gif';&lt;br&gt; case 'image/jpeg':&lt;br&gt; return '.jpg';&lt;br&gt; case 'image/png':&lt;br&gt; return '.png';&lt;br&gt; case 'image/bmp':&lt;br&gt; return '.bmp';&lt;br&gt; case 'image/x-png':&lt;br&gt; return '.png';&lt;br&gt; case 'image/pjpeg';&lt;br&gt; return '.jpg';&lt;br&gt; case 'application/x-shockwave-flash';&lt;br&gt; return 'swf';&lt;br&gt; case '':&lt;br&gt; return false;&lt;br&gt; default:&lt;br&gt; return false;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称：  uploadFile&lt;br&gt;*   函数功能：  上传一个图片、FLASH&lt;br&gt;*   输入参数：  $fileName：上传时form里定义的文件名&lt;br&gt;*   函数返回值：成功：文件名 失败：false&lt;br&gt;*   其它说明：  注意$realName中'images/upload/'的定义&lt;br&gt;*/&lt;br&gt;function uploadFile( $fileName = 'userFile' )&lt;br&gt;{&lt;br&gt; if ( $extendName = isRightType( $fileName ) )&lt;br&gt; {&lt;br&gt; $storedir = &amp;quot;../upload&amp;quot;;&lt;br&gt; $childdir = date(&amp;quot;Y&amp;quot;);&lt;br&gt; $dir_first = $storedir.'/'.$childdir;&lt;br&gt; if(!file_exists($dir_first))&lt;br&gt; {&lt;br&gt; mkdir($dir_first);&lt;br&gt; chmod($dir_first,0777);&lt;br&gt; }&lt;br&gt; $childdir2 = date(&amp;quot;md&amp;quot;);&lt;br&gt; $dir_sec = $dir_first.'/'.$childdir2;&lt;br&gt; if(!file_exists($dir_sec))&lt;br&gt; {&lt;br&gt; mkdir($dir_sec);&lt;br&gt; chmod($dir_sec,0777);&lt;br&gt; }&lt;br&gt; $childdir3 = date(&amp;quot;H&amp;quot;);&lt;br&gt; $dir_thd = $dir_sec.'/'.$childdir3;&lt;br&gt; if(!file_exists($dir_thd))&lt;br&gt; {&lt;br&gt; mkdir($dir_thd);&lt;br&gt; chmod($dir_thd,0777);&lt;br&gt; }&lt;br&gt;&lt;br&gt; $dst_dir = $dir_thd;&lt;br&gt; $realName = $dst_dir.'/'.uniqid( time() ).$extendName;&lt;br&gt;&lt;br&gt; if ( move_uploaded_file( $_FILES[$fileName]['tmp_name'], $realName ) )&lt;br&gt; {&lt;br&gt; return $realName;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; return false;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; return false;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;/*  BEGIN function&lt;br&gt;*&lt;br&gt;*   功能：上传文件&lt;br&gt;*   编写时间：2004.1.16&lt;br&gt;*&lt;br&gt;*/&lt;br&gt;function upload($file,$dstfile,$is_overlay=0)&lt;br&gt;{&lt;br&gt; /* 判断文件是否上传 */&lt;br&gt; !$file['tmp_name']?alert_notes('没有文件上传！'):NULL;&lt;br&gt;&lt;br&gt; /* 确保文件能准确上传 */&lt;br&gt; !is_uploaded_file($file['tmp_name'])?alert_notes('没有文件上传到指定位置'):NULL;&lt;br&gt;&lt;br&gt; /* 检查上传文件是否存在 */&lt;br&gt; $is_overlay==0&amp;amp;&amp;amp;file_exists($dstfile)?alert_notes('你所上传的文件已经存在！'):NULL;&lt;br&gt;&lt;br&gt; /* 进行文件转移 */&lt;br&gt; if(move_uploaded_file($file['tmp_name'],$dstfile))&lt;br&gt; {&lt;br&gt; Return true;&lt;br&gt; }&lt;br&gt; else&lt;br&gt; {&lt;br&gt; Return false;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称:  reload&lt;br&gt;*   函数功能:  刷新父窗口&lt;br&gt;*   输入参数:  无&lt;br&gt;*   函数返回值:无&lt;br&gt;*   其它说明:  04-7-11&lt;br&gt;*/&lt;br&gt;function reload()&lt;br&gt;{&lt;br&gt; echo &amp;quot;&amp;lt;script&amp;gt;&amp;quot;;&lt;br&gt; echo &amp;quot;window.opener.location.reload();&amp;quot;;&lt;br&gt; echo &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称:  showError&lt;br&gt;*   函数功能:  显示捕捉到的错误&lt;br&gt;*   输入参数:  无&lt;br&gt;*   函数返回值:无&lt;br&gt;*   其它说明:  2004-7-24&lt;br&gt;*/&lt;br&gt;function showError($msg)&lt;br&gt;{&lt;br&gt;?&amp;gt;&lt;br&gt;&amp;lt;style&amp;gt;&lt;br&gt;table {&lt;br&gt;  font-family: &amp;quot;tahoma&amp;quot;,&amp;quot;宋体&amp;quot;;&lt;br&gt;  border-collapse: collapse;&lt;br&gt;  word-break:break-all;&lt;br&gt;}&lt;br&gt;td {&lt;br&gt;  font-family: &amp;quot;tahoma&amp;quot;,&amp;quot;宋体&amp;quot;;&lt;br&gt;  font-size: 12px;&lt;br&gt;  line-height: 22px;&lt;br&gt;  font-style: normal;&lt;br&gt;  font-weight: normal;&lt;br&gt;}&lt;br&gt;&amp;lt;/style&amp;gt;&lt;br&gt;&amp;lt;table border=&amp;quot;0&amp;quot;  cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=&amp;quot;100%&amp;quot;  align=&amp;quot;center&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;tr&amp;gt;&lt;br&gt; &amp;lt;td height=&amp;quot;400&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;table border=&amp;quot;1&amp;quot; bordercolor=&amp;quot;#dddddd&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=&amp;quot;55%&amp;quot;  align=&amp;quot;center&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;tr&amp;gt;&lt;br&gt; &amp;lt;td align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#f5f5f5&amp;quot;&amp;gt;&lt;br&gt; Error 错误原因可能是:&lt;br&gt; &amp;lt;/td&amp;gt;&lt;br&gt; &amp;lt;/tr&amp;gt;&lt;br&gt; &amp;lt;tr&amp;gt;&lt;br&gt; &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&amp;lt;? echo $msg; ?&amp;gt;&amp;lt;/font&amp;gt;&lt;br&gt; &amp;lt;p&amp;gt;&amp;lt;a href=&amp;quot;javascript:history.go(-1);&amp;quot;&amp;gt;&amp;amp;lt; 点击这里返回前页 &amp;amp;gt; &amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt; &amp;lt;/td&amp;gt;&lt;br&gt; &amp;lt;/tr&amp;gt;&lt;br&gt; &amp;lt;/table&amp;gt;&lt;br&gt; &amp;lt;/td&amp;gt;&lt;br&gt; &amp;lt;/tr&amp;gt;&lt;br&gt;&amp;lt;/table&amp;gt;&lt;br&gt;&amp;lt;?&lt;br&gt;exit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称:  jumpMsg&lt;br&gt;*   函数功能:  显示提示消息并跳转&lt;br&gt;*   输入参数:  无&lt;br&gt;*   函数返回值:无&lt;br&gt;*   其它说明:  2004-7-24&lt;br&gt;*/&lt;br&gt;function jumpMsg($msg,$time=2,$url)&lt;br&gt;{&lt;br&gt;?&amp;gt;&lt;br&gt;&amp;lt;style&amp;gt;&lt;br&gt;table {&lt;br&gt;  font-family: &amp;quot;tahoma&amp;quot;,&amp;quot;宋体&amp;quot;;&lt;br&gt;  border-collapse: collapse;&lt;br&gt;  word-break:break-all;&lt;br&gt;}&lt;br&gt;td {&lt;br&gt;  font-family: &amp;quot;tahoma&amp;quot;,&amp;quot;宋体&amp;quot;;&lt;br&gt;  font-size: 12px;&lt;br&gt;  line-height: 22px;&lt;br&gt;  font-style: normal;&lt;br&gt;  font-weight: normal;&lt;br&gt;}&lt;br&gt;&amp;lt;/style&amp;gt;&lt;br&gt;&amp;lt;table border=&amp;quot;0&amp;quot;  cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=&amp;quot;100%&amp;quot;  align=&amp;quot;center&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;tr&amp;gt;&lt;br&gt; &amp;lt;td height=&amp;quot;300&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;table border=&amp;quot;1&amp;quot; bordercolor=&amp;quot;#dddddd&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=&amp;quot;55%&amp;quot;  align=&amp;quot;center&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;tr&amp;gt;&lt;br&gt; &amp;lt;td align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#f5f5f5&amp;quot;&amp;gt;&lt;br&gt; 提示信息:&lt;br&gt; &amp;lt;/td&amp;gt;&lt;br&gt; &amp;lt;/tr&amp;gt;&lt;br&gt; &amp;lt;tr&amp;gt;&lt;br&gt; &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br&gt; &amp;lt;font
color=&amp;quot;red&amp;quot;&amp;gt;&amp;lt;? echo $msg;
?&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;p&amp;gt;&amp;lt;?=$time?&amp;gt;秒后自动跳转，若没有自动跳转请&amp;lt;a
href=&amp;quot;&amp;lt;?=$url?&amp;gt;&amp;quot;&amp;gt;[点击此处]&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt; &amp;lt;/td&amp;gt;&lt;br&gt; &amp;lt;/tr&amp;gt;&lt;br&gt; &amp;lt;/table&amp;gt;&lt;br&gt; &amp;lt;/td&amp;gt;&lt;br&gt; &amp;lt;/tr&amp;gt;&lt;br&gt;&amp;lt;/table&amp;gt;&lt;br&gt;&amp;lt;?&lt;br&gt;echo &amp;quot;&amp;lt;META HTTP-EQUIV=\&amp;quot;Refresh\&amp;quot; CONTENT=\&amp;quot;&amp;quot;.$time.&amp;quot;; URL=&amp;quot;.$url.&amp;quot;\&amp;quot;&amp;gt;&amp;quot;;&lt;br&gt;exit;&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称:   readdirs&lt;br&gt;*   函数功能:   读取目录&lt;br&gt;*   输入参数:   $path ---------- 目录路径&lt;br&gt;*   函数返回值: array&lt;br&gt;*   其它说明:   2004-7-24&lt;br&gt;*/&lt;br&gt;function readdirs($path)&lt;br&gt;{&lt;br&gt; $dirs = array();&lt;br&gt; if ($handle = opendir($path))&lt;br&gt; {&lt;br&gt; while (false !== ($file = readdir($handle)))&lt;br&gt; {&lt;br&gt; if ($file != &amp;quot;.&amp;quot; &amp;amp;&amp;amp; $file != &amp;quot;..&amp;quot;)&lt;br&gt; {&lt;br&gt; $dirs[] = $file;&lt;br&gt; }&lt;br&gt; }&lt;br&gt; closedir($handle);&lt;br&gt;    Return $dirs;&lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;/**&lt;br&gt;*   函数名称:   setPicSize&lt;br&gt;*   函数功能:   合理缩放图片&lt;br&gt;*   输入参数:   $path ----------------- 图片路径&lt;br&gt;        $maxwidth -----------  最大显示宽度&lt;br&gt;*   函数返回值: array&lt;br&gt;*   其它说明:   2004-7-25&lt;br&gt;*/&lt;br&gt;function setPicSize($path,$maxwidth=120)&lt;br&gt;{&lt;br&gt;  $info = array();&lt;br&gt;  $pic_size    = @GetImageSize($path);&lt;br&gt;  $imageheight = $pic_size['1'];&lt;br&gt;  $imagewidth  = $pic_size['0'];&lt;br&gt;  $imgorig     = $imagewidth;&lt;br&gt;  if ($imagewidth &amp;gt; $maxwidth)&lt;br&gt;  {&lt;br&gt;    $imageprop   = ($maxwidth*100)/$imagewidth;&lt;br&gt;    $imagevsize  = ($imageheight*$imageprop)/100 ;&lt;br&gt;    $imagewidth  = $maxwidth; &lt;br&gt;    $imageheight = ceil($imagevsize);&lt;br&gt;  }&lt;br&gt;  $info['width']  = $imagewidth;&lt;br&gt;  $info['height'] = $imageheight;&lt;br&gt;  Return $info;&lt;br&gt;}&lt;br&gt;?&amp;gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+%e5%8f%98%e9%87%8f%e6%8f%90%e4%ba%a4%e9%a2%84%e5%a4%84%e7%90%86%e5%87%bd%e6%95%b0%e9%9b%86&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!276.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!276.entry</guid><pubDate>Thu, 30 Mar 2006 03:36:51 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!276/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!276.entry#comment</wfw:comment><dcterms:modified>2006-03-30T03:36:51Z</dcterms:modified></item><item><title>PHP缓存类</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!242.entry</link><description>&lt;div&gt;&amp;lt;?php&lt;br&gt;&lt;br&gt;define('CACHE_IS_CREATE', 'YES');&lt;br&gt;define('CACHE_NO_CREATE', 'NO');&lt;br&gt;&lt;br&gt;class cache&lt;br&gt;{&lt;br&gt;var $filename;// 缓存文件名&lt;br&gt;var $signal;// 信号&lt;br&gt;var $signalFilename;// 信号文件名&lt;br&gt;var $contentPath = &amp;quot;./cache/content/&amp;quot;;// 缓存文件目录&lt;br&gt;var $signalPath = &amp;quot;./cache/signal/&amp;quot;;// 信号文件目录&lt;br&gt;var $existenceTime = 60;// 缓存周期&lt;br&gt;var $error;// 错误信息&lt;br&gt;var $debug = false;// 是否显示调试信息&lt;br&gt;&lt;br&gt;function cache($content_path ='', $signal_path='', $existence_time='' )&lt;br&gt;{&lt;br&gt;if ( !empty($content_path) ) $this-&amp;gt;contentPath = $content_path;&lt;br&gt;if ( !empty($signal_path) ) $this-&amp;gt;signalPath = $signal_path;&lt;br&gt;if ( !empty($existence_time) ) $this-&amp;gt;existenceTime = $existence_time;&lt;br&gt;}&lt;br&gt;&lt;br&gt;function start()&lt;br&gt;{&lt;br&gt;$this-&amp;gt;get_signal();&lt;br&gt;//die($this-&amp;gt;filename);&lt;br&gt;//die($this-&amp;gt;signal);&lt;br&gt;if ( $this-&amp;gt;signal == CACHE_IS_CREATE )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;read_cache();&lt;br&gt;}&lt;br&gt;if ( $this-&amp;gt;signal == CACHE_NO_CREATE )&lt;br&gt;{&lt;br&gt;if ( !ob_start() )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;error = &amp;quot;开启缓存失败.&amp;quot;;&lt;br&gt;die($this-&amp;gt;error);&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;// ---------------------------------------------- signal&lt;br&gt;// 创建缓存信号&lt;br&gt;function create_signal()&lt;br&gt;{&lt;br&gt;$fp = fopen($this-&amp;gt;signalFilename, &amp;quot;w&amp;quot;);&lt;br&gt;flock($fp, 2);&lt;br&gt;if ( !fputs($fp, $this-&amp;gt;signal) )&lt;br&gt;{&lt;br&gt;flock($fp, 3);&lt;br&gt;fclose($fp);&lt;br&gt;return false;&lt;br&gt;}&lt;br&gt;flock($fp, 3);&lt;br&gt;fclose($fp);&lt;br&gt;return true;&lt;br&gt;}&lt;br&gt;// 读取缓存信号&lt;br&gt;function read_signal()&lt;br&gt;{&lt;br&gt;$fd = fopen($this-&amp;gt;signalFilename, &amp;quot;r&amp;quot;);&lt;br&gt;$this-&amp;gt;signal = fread($fd,filesize($this-&amp;gt;signalFilename));&lt;br&gt;fclose($fd);&lt;br&gt;}&lt;br&gt;// 得到缓存信号 &lt;br&gt;function get_signal()&lt;br&gt;{&lt;br&gt;$this-&amp;gt;signal = CACHE_IS_CREATE;&lt;br&gt;$this-&amp;gt;get_filename();&lt;br&gt;if ( !file_exists($this-&amp;gt;signalFilename) )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;signal = CACHE_NO_CREATE;&lt;br&gt;}&lt;br&gt;else&lt;br&gt;{&lt;br&gt;$this-&amp;gt;is_expire();&lt;br&gt;}&lt;br&gt;}&lt;br&gt;// ----------------------------------------------&lt;br&gt;&lt;br&gt;function is_expire()&lt;br&gt;{&lt;br&gt;if ( !file_exists($this-&amp;gt;filename) )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;signal = CACHE_NO_CREATE;&lt;br&gt;}&lt;br&gt;else &lt;br&gt;{&lt;br&gt;$this-&amp;gt;read_signal();&lt;br&gt;$time = time() - filemtime($this-&amp;gt;filename);&lt;br&gt;if ( $time &amp;gt; $this-&amp;gt;existenceTime )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;signal = CACHE_NO_CREATE;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;// ---------------------------------------------- content&lt;br&gt;// 获得缓存信号 和 缓存文件&lt;br&gt;function get_filename()&lt;br&gt;{&lt;br&gt;$temp = &amp;quot;&amp;quot;;&lt;br&gt;while ( list($k, $v) = each($_GET) )&lt;br&gt;{&lt;br&gt;$temp .= &amp;quot;{$k}_{$v}_&amp;quot;;&lt;br&gt;}&lt;br&gt;while ( list($k, $v) = each($_POST) )&lt;br&gt;{&lt;br&gt;$temp .= &amp;quot;{$k}_{$v}_&amp;quot;;&lt;br&gt;}&lt;br&gt;$file = basename($_SERVER['PHP_SELF']);&lt;br&gt;$this-&amp;gt;signalFilename = $this-&amp;gt;signalPath . md5($temp) . &amp;quot;_&amp;quot; . $file . &amp;quot;.signal&amp;quot;;&lt;br&gt;$this-&amp;gt;filename = $this-&amp;gt;contentPath . md5($temp) . &amp;quot;_&amp;quot; . $file . &amp;quot;.content&amp;quot; ;&lt;br&gt;unset($temp);&lt;br&gt;unset($file);&lt;br&gt;}&lt;br&gt;&lt;br&gt;// 创建缓存&lt;br&gt;function create_cache()&lt;br&gt;{ &lt;br&gt;if ( !is_dir($this-&amp;gt;signalPath) )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;error = $this-&amp;gt;signalPath . &amp;quot; 不是有效的信号目录.&amp;quot;;&lt;br&gt;die($this-&amp;gt;error);&lt;br&gt;}&lt;br&gt;if ( !is_dir($this-&amp;gt;contentPath) )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;error = $this-&amp;gt;contentPath . &amp;quot; 不是有效的信号目录.&amp;quot;;&lt;br&gt;die($this-&amp;gt;error);&lt;br&gt;}&lt;br&gt;&lt;br&gt;$fp = fopen($this-&amp;gt;filename, &amp;quot;w&amp;quot;);&lt;br&gt;flock($fp, 2);&lt;br&gt;$debugInfo = &amp;quot;&amp;quot;;&lt;br&gt;if ( $this-&amp;gt;debug ) $debugInfo = $this-&amp;gt;info();&lt;br&gt;if (!fputs($fp, ob_get_contents() . $debugInfo)) return false;&lt;br&gt;flock($fp, 3);&lt;br&gt;fclose($fp);&lt;br&gt;ob_end_flush();&lt;br&gt;ob_end_clean();&lt;br&gt;return true;&lt;br&gt;}&lt;br&gt;&lt;br&gt;// 读取缓存&lt;br&gt;function read_cache()&lt;br&gt;{&lt;br&gt;include( $this-&amp;gt;filename);&lt;br&gt;die();&lt;br&gt;}&lt;br&gt;// ----------------------------------------------&lt;br&gt;&lt;br&gt;// 类出口&lt;br&gt;function end()&lt;br&gt;{ &lt;br&gt;// 捕捉错误&lt;br&gt;if ( $this-&amp;gt;error ) die($this-&amp;gt;error);&lt;br&gt;if ( $this-&amp;gt;signal == CACHE_NO_CREATE )&lt;br&gt;{&lt;br&gt;if ( !$this-&amp;gt;create_cache() )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;error = &amp;quot;创建缓存文件失败.&amp;quot;;&lt;br&gt;die($this-&amp;gt;error);&lt;br&gt;}&lt;br&gt;$this-&amp;gt;signal = CACHE_IS_CREATE;&lt;br&gt;if ( !$this-&amp;gt;create_signal() )&lt;br&gt;{&lt;br&gt;$this-&amp;gt;error = &amp;quot;创建缓存信号失败.&amp;quot;;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;function info()&lt;br&gt;{&lt;br&gt;$info = '&lt;br&gt;&amp;lt;!--&lt;br&gt;创建时间：'. time() . '.&lt;br&gt;文件名称：' . $this-&amp;gt;filename.'&lt;br&gt;信号文件：' . $this-&amp;gt;signalFilename . '.&lt;br&gt;有效期限：' . $this-&amp;gt;existenceTime . '秒&lt;br&gt;程序文件：' . basename($_SERVER[&amp;quot;PHP_SELF&amp;quot;]). '&lt;br&gt;信号设置：' . $this-&amp;gt;signal . '&lt;br&gt;---------------------------------------------&lt;br&gt;$this-&amp;gt;error.&amp;quot;\n&amp;quot;;&lt;br&gt;---------------------------------------------&lt;br&gt;--&amp;gt;';&lt;br&gt;return $info;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;?&amp;gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-8913911617972053559&amp;page=RSS%3a+PHP%e7%bc%93%e5%ad%98%e7%b1%bb&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=miaomin.spaces.live.com&amp;amp;GT1=miaomin"&gt;</description><comments>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!242.entry#comment</comments><guid isPermaLink="true">http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!242.entry</guid><pubDate>Tue, 21 Feb 2006 03:11:31 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://miaomin.spaces.live.com/blog/cns!844B6C9C838C59C9!242/comments/feed.rss</wfw:commentRss><wfw:comment>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!242.entry#comment</wfw:comment><dcterms:modified>2006-02-21T03:11:31Z</dcterms:modified></item><item><title>PHP缓存, SimpleCache 类</title><link>http://miaomin.spaces.live.com/Blog/cns!844B6C9C838C59C9!241.entry</link><description>&lt;div&gt;&lt;font face="Courier New" color="#ff1493"&gt;一个简单的不能再简单的页面缓存，效果还是比较明显的 ;P&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;/* 页面缓存机制 &lt;br&gt;* 摘要：页面缓存机制 &lt;br&gt;* 类名：SimpleCache &lt;br&gt;* 文件名称：SimpleCache_class.php &lt;br&gt;* 版本：0.0.2 &lt;br&gt;* 创建时间：2004.7.24 03:38 &lt;br&gt;* 修改时间：2004.11.28 23:28 &lt;br&gt;* 作者：shadow_wwp@yahoo.com &lt;br&gt;* 版权：COPYRIGHT(C) 2004-2005 流影工作室 &lt;br&gt;*/ &lt;br&gt;&lt;br&gt;/* 使用方法 &lt;br&gt;require_once(&amp;quot;SimpleCache.php&amp;quot;&lt;img alt=";)" src="http://blog.phpmore.com/plugins/smileys/icons/default/wink_smile.gif"&gt;; &lt;br&gt;$effect_param = array( &lt;br&gt;&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;e&amp;quot; &lt;br&gt;); &lt;br&gt;&lt;br&gt;$effect_flag_param = array( &lt;br&gt;&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; &lt;br&gt;); &lt;br&gt;$cache = new SimpleCache(); &lt;br&gt;$cache-&amp;gt;start(5,$effect_param,$effect_flag_param); &lt;br&gt;//-- ---// &lt;br&gt;echo &amp;quot;HHHH&amp;quot;; &lt;br&gt;&lt;br&gt;//-- --// &lt;br&gt;&lt;br&gt;$cache-&amp;gt;end(); &lt;br&gt;*/ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;define&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;CACHE_NO_CREATE&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;, &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;NO&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;); &lt;/font&gt;&lt;font color="#0000bb"&gt;define&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;CACHE_CREATE&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;YES&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;); &lt;/font&gt;&lt;font color="#0000bb"&gt;define&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;CACHE_CREATE_FAULT&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;ERR&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;); &lt;br&gt;&lt;/font&gt;&lt;font color="#ff8000"&gt;//缓存类路径 &lt;/font&gt;&lt;font color="#0000bb"&gt;define&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;ROOT&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;/data1&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;); &lt;/font&gt;&lt;font color="#0000bb"&gt;define&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;CACHE&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;,&lt;/font&gt;&lt;font color="#0000bb"&gt;ROOT&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;/cache&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;); &lt;br&gt;&lt;br&gt;class &lt;/font&gt;&lt;font color="#0000bb"&gt;SimpleCache &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;{ &lt;br&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$filename&lt;/font&gt;&lt;font color="#007700"&gt;; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//要保存的文件名称 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$flag&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_time&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$cache_error&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//以下是 0.0.2 版更新 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_param &lt;/font&gt;&lt;font color="#007700"&gt;= Array(); &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//有效参数 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_flag_param &lt;/font&gt;&lt;font color="#007700"&gt;= Array(); &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//标记型参数 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;var &lt;/font&gt;&lt;font color="#0000bb"&gt;$cache_path&lt;/font&gt;&lt;font color="#007700"&gt;; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//要保存文件的目录名称 &lt;br&gt;&lt;br&gt;//启用缓存 &lt;br&gt;//$flag CACHE_CREATE ob_start 启动 &lt;br&gt;//$flag CACHE_NO_CREATE 不需要创建缓存 读取缓存 &lt;br&gt;//$flag CACHE_CREATE_FAULT 创建缓存失败 &lt;br&gt;//0.0.2 版更新 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;start&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$effect&lt;/font&gt;&lt;font color="#007700"&gt;, &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_param&lt;/font&gt;&lt;font color="#007700"&gt;, &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_flag_param&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_time &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;if(!&lt;/font&gt;&lt;font color="#0000bb"&gt;is_array&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_param&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;)) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE_FAULT&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;$effect_param 不是数组&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;else &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_param &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_param&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;if(!&lt;/font&gt;&lt;font color="#0000bb"&gt;is_array&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_flag_param&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;)) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE_FAULT&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;effect_flag_param 不是数组&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;else &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_flag_param &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$effect_flag_param&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;is_expire&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;(); &lt;br&gt;&lt;br&gt;if (&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;== &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_NO_CREATE&lt;/font&gt;&lt;font color="#007700"&gt;) &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff8000"&gt;//读取信号 看是否应该创建 &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_read&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;(); &lt;br&gt;} &lt;br&gt;&lt;br&gt;if (&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;== &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;) &lt;br&gt;{ &lt;br&gt;if (!&lt;/font&gt;&lt;font color="#0000bb"&gt;ob_start&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;()) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE_FAULT&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;ob_start()失败！n&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#ff8000"&gt;//debug echo &amp;quot;nflag.&amp;quot;--&amp;gt;n&amp;quot;; &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;} &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//启用缓存结束 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;end&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;&lt;br&gt;if (&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;== &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//创建文件 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;if(!&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;create_cache&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;()) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE_FAULT&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;创建缓存失败n&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;exit(&lt;/font&gt;&lt;font color="#0000bb"&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;); &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//标记下次不用创建 &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_NO_CREATE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;&lt;br&gt;&lt;br&gt;} &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//判断缓存文件是否过期 &lt;br&gt;//0.0.2 版本优化 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;is_expire&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;if (!&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;get_filename&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;()) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;不能生成文件名称!&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE_FAULT&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$now &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;time&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;(); &lt;br&gt;&lt;br&gt;if (!&lt;/font&gt;&lt;font color="#0000bb"&gt;file_exists&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;)) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$createtime &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;filemtime&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;); &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$time_field &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$now &lt;/font&gt;&lt;font color="#007700"&gt;- &lt;/font&gt;&lt;font color="#0000bb"&gt;$createtime&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//debug echo &amp;quot;nn&amp;quot;; &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;if (&lt;/font&gt;&lt;font color="#0000bb"&gt;$time_field &lt;/font&gt;&lt;font color="#007700"&gt;&amp;gt; &lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_time&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_CREATE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;0&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;flag &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE_NO_CREATE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//取得文件名称 &lt;br&gt;//命名规则是： 参数_参数值_创建的文件名称 &lt;br&gt;//0.0.2 版本优化 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;get_filename&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;if (!&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;get_dir&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;()) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;不能获得目录&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;false&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;foreach (&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_param &lt;/font&gt;&lt;font color="#007700"&gt;as &lt;/font&gt;&lt;font color="#0000bb"&gt;$key&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;_&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#0000bb"&gt;$key&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;_&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#0000bb"&gt;$_REQUEST&lt;/font&gt;&lt;font color="#007700"&gt;[&lt;/font&gt;&lt;font color="#0000bb"&gt;$key&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;]; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;md5&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename&lt;/font&gt;&lt;font color="#007700"&gt;). &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;_&amp;quot; &lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#0000bb"&gt;basename&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$_SERVER&lt;/font&gt;&lt;font color="#007700"&gt;[&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;PHP_SELF&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;]); &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_path &lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;/&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;. &lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;true&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//取得目录名称 如果目录不存在则创建 &lt;br&gt;//0.0.2版增加 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;get_dir&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_path &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;CACHE&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;&lt;br&gt;foreach (&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;effect_flag_param &lt;/font&gt;&lt;font color="#007700"&gt;as &lt;/font&gt;&lt;font color="#0000bb"&gt;$key&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_path &lt;/font&gt;&lt;font color="#007700"&gt;= &lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_path&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;/&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#0000bb"&gt;md5&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$_REQUEST&lt;/font&gt;&lt;font color="#007700"&gt;[&lt;/font&gt;&lt;font color="#0000bb"&gt;$key&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;]); &lt;br&gt;&lt;br&gt;if(!&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;check_dir&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;()) &lt;br&gt;{ &lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;false&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;} &lt;br&gt;&lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;true&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//检测目录名称 如果目录不存在则创建 &lt;br&gt;//0.0.2版增加 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;check_dir&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;&lt;br&gt;if(!&lt;/font&gt;&lt;font color="#0000bb"&gt;is_dir&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_path&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;)) &lt;br&gt;{ &lt;br&gt;if(!&lt;/font&gt;&lt;font color="#0000bb"&gt;mkdir&lt;/font&gt;&lt;font color="#007700"&gt;(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_path&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;)) &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;cache_error &lt;/font&gt;&lt;font color="#007700"&gt;.= &lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;n&amp;quot;&lt;/font&gt;&lt;font color="#007700"&gt;.&lt;/font&gt;&lt;font color="#dd0000"&gt;&amp;quot;不能创建缓存目录！&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;false&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;} &lt;br&gt;&lt;br&gt;return &lt;/font&gt;&lt;font color="#0000bb"&gt;true&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;; &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//从缓存中取数据 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;cache_read&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;include(&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;filename&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#007700"&gt;); &lt;br&gt;die(); &lt;br&gt;} &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#ff8000"&gt;//生成缓存页面 &lt;br&gt;&lt;/font&gt;&lt;font color="#007700"&gt;function &lt;/font&gt;&lt;font color="#0000bb"&gt;create_cache&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#007700"&gt;() &lt;br&gt;{ &lt;br&gt;&lt;/font&gt;&lt;font color="#0000bb"&gt;$this&lt;/font&gt;&lt;font color="#007700"&gt;-&amp;gt;&lt;/font&gt;&lt;