﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-&lt;a href=http://minidx.com&gt;全文检索(http://minidx.com)&lt;/a&gt;</title><link>http://www.phpweblog.net/minidxer/</link><description>&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2872691373402092";
google_ad_width = 468;
google_ad_height = 15;
google_ad_format = "468x15_0ads_al_s";
google_ad_channel = "";
google_color_border = "FFFFFF";
google_color_bg = "006699";
google_color_link = "FFFFFF";
google_color_text = "003366";
google_color_url = "003366";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 09:30:29 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 09:30:29 GMT</pubDate><ttl>60</ttl><item><title>PHP调用mail( )函数乱码问题的解决</title><link>http://www.phpweblog.net/minidxer/archive/2007/12/16/2549.html</link><dc:creator>minidxer</dc:creator><author>minidxer</author><pubDate>Sun, 16 Dec 2007 13:24:00 GMT</pubDate><guid>http://www.phpweblog.net/minidxer/archive/2007/12/16/2549.html</guid><wfw:comment>http://www.phpweblog.net/minidxer/comments/2549.html</wfw:comment><comments>http://www.phpweblog.net/minidxer/archive/2007/12/16/2549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/minidxer/comments/commentRss/2549.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/minidxer/services/trackbacks/2549.html</trackback:ping><description><![CDATA[<h2><span style="font-weight: normal; font-size: 10pt;"></span></h2>
<h2><span style="font-weight: normal; font-size: 10pt;">在《</span><a  href="http://www.phpweblog.net/minidxer/archive/2007/11/15/2316.html" style="font-size: 12pt; font-weight: normal;" id="_445d19c62290_HomePageDays_DaysList_ctl02_DayItem_DayList_ctl00_TitleUrl">PHP调用mail( )函数直接发送邮件</a><span style="font-weight: normal; font-size: 10pt;">》中讲述了如何调用mail函数发送邮件，但是在很多没有中文支持的国外主机上利用mail函数发送中文编码邮件的话，title，邮件内容等包含中文的话会出现乱码问题，参照<a title="全文检索博客"  href="http://blog.minidx.com/">全文检索博客</a>的《</span><a  href="http://blog.minidx.com/2007/11/15/89.html" style="font-weight: normal; font-size: 10pt;" rel="bookmark" onclick="parent.location.href='http://redirect.alexa.com/redirect?http://blog.minidx.com/2007/11/15/89.html';return event.returnvalue="false"">subscribe to comments插件邮件不能发送/乱码问题的解决</a><span style="font-weight: normal; font-size: 10pt;">》一文，进行下面这样的编码，可以解决乱码问题：</span></h2>
<h2><span style="font-size: 12pt;"><span style="font-size: 12pt;"><span style="font-size: 10pt; font-weight: normal;">$headers = &#8220;From: =?utf8?B?&#8221; . base64_encode(&#8221;\邮件描述，这里会乱码&#8221;") . &#8220;?= &lt;sample@mail.com&gt;\n&#8221;;</span></span></span></h2>
utf8的地方,如果自己采用的是其他编码的话，替换成相应的编码就可以了。<br><br><img src ="http://www.phpweblog.net/minidxer/aggbug/2549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/minidxer/" target="_blank">minidxer</a> 2007-12-16 21:24 <a href="http://www.phpweblog.net/minidxer/archive/2007/12/16/2549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>遭遇PHP has encountered an Access Violation</title><link>http://www.phpweblog.net/minidxer/archive/2007/12/11/2526.html</link><dc:creator>minidxer</dc:creator><author>minidxer</author><pubDate>Tue, 11 Dec 2007 00:00:00 GMT</pubDate><guid>http://www.phpweblog.net/minidxer/archive/2007/12/11/2526.html</guid><wfw:comment>http://www.phpweblog.net/minidxer/comments/2526.html</wfw:comment><comments>http://www.phpweblog.net/minidxer/archive/2007/12/11/2526.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.phpweblog.net/minidxer/comments/commentRss/2526.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/minidxer/services/trackbacks/2526.html</trackback:ping><description><![CDATA[<a href="http://blog.minidx.com/2007/10/13/12.html">http://blog.minidx.com/2007/10/13/12.html</a><br><br>调试<a href="http://blog.minidx.com/">全文检索博客</a>的时候突然间看到前台留言处出现了&#8220;PHP has encountered an Access Violation at
02B75679&#8220;这样的一句话，赶紧google了一下，据说http://bugs.php.net/上也能找到好几千页的关于这个问题的报告/讨论
了，总结了一下，大致有这么七种会引起发生这个问题的可能性<span id="more-12"></span><br>
●1，是否zend所需的dll文件所在目录给的权限不够，必须有读取和运行的权限<br>
● 2，是否使用的2003，设置过应用池，比如池中限制了什么什么，调整一下再试试看，是否好了<br>
● 3，去掉 php中 eaccelerator 的扩展，这样做能够解决问题，不过可能会加重系统负担,找到找到php.ini,去掉类    似于这样的行<br>
zend_extension_ts=&#8221;C:\php\extensions\eaccelerator_win_xxx.dll&#8221;<br>
eaccelerator.shm_size=&#8221;16&#8243;<br>
eaccelerator.cache_dir=&#8221;c:\temp&#8221;<br>
eaccelerator.enable=&#8221;1&#8243;<br>
eaccelerator.optimizer=&#8221;1&#8243;<br>
eaccelerator.check_mtime=&#8221;1&#8243;<br>
eaccelerator.debug=&#8221;0&#8243;<br>
eaccelerator.filter=&#8221;"<br>
eaccelerator.shm_max=&#8221;0&#8243;<br>
eaccelerator.shm_ttl=&#8221;0&#8243;<br>
eaccelerator.shm_prune_period=&#8221;0&#8243;<br>
eaccelerator.shm_only=&#8221;0&#8243;<br>
eaccelerator.compress=&#8221;1&#8243;<br>
eaccelerator.compress_level=&#8221;9&#8243;<br>
● 4，session_save_path 需要设定一个实际的物理路径，并且该目录需要everyone的所有权限，类似Linux/Unix主机的0777权限<br>
● 5，c:/winnt/temp 或者 c:/windows/temp，也需要everyone的所有权限，类似Linux/Unix主机的0777<br>
● 6，本身内存不足，自己的主机的话容易解决，加一块内存就OK了<br>
● 7，ZendOptimizer和php的搭配不是很好，这个如果是虚拟主机的话就比较麻烦，没办法换个版本来测试，：）<br>  <img src ="http://www.phpweblog.net/minidxer/aggbug/2526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/minidxer/" target="_blank">minidxer</a> 2007-12-11 08:00 <a href="http://www.phpweblog.net/minidxer/archive/2007/12/11/2526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP和PEAR动态创建和编辑TAR文档</title><link>http://www.phpweblog.net/minidxer/archive/2007/11/21/2364.html</link><dc:creator>minidxer</dc:creator><author>minidxer</author><pubDate>Wed, 21 Nov 2007 07:24:00 GMT</pubDate><guid>http://www.phpweblog.net/minidxer/archive/2007/11/21/2364.html</guid><wfw:comment>http://www.phpweblog.net/minidxer/comments/2364.html</wfw:comment><comments>http://www.phpweblog.net/minidxer/archive/2007/11/21/2364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/minidxer/comments/commentRss/2364.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/minidxer/services/trackbacks/2364.html</trackback:ping><description><![CDATA[<p><strong> 创建TAR</strong> <strong> 文档</strong> </p>
<p>让我们从一个简单的例子开始：动态创建包含几个文件的TAR文档。使用下面的脚本：<br>列表 A</p>
<p>&lt;php<br>include ('Archive/Tar.php');// import class<br><br>$obj = new Archive_Tar('dummy.tar'); // name of archive<br><br>$files = array('mystuff/ad.gif', <br>'mystuff/alcon.doc', <br>'mystuff/alcon.xls'); // files to store in archive<br><br>if ($obj-&gt;create($files)) {<br>echo 'Created successfully!';<br>} else {<br>echo 'Error in file creation';<br>}<br>&gt; </p>
<p>这个脚本相当简单，但是还是值得具体看一下：</p>
<p>首先，创建Archive_Tar类的一个实例，初始化创建文档的路径和文件名。在本例中，文件名是dummy.tar，存于当前目录。</p>
<p>其次，列出归档的所有文件，包括它们的磁盘地址，存于一个PHP数组中。脚本(更准确的说是运行脚本的用户)必须拥有访问这些磁盘地址的许可权，否则文档创建过程就会失败。</p>
<p>最后，creat（）方法将所有的文件压缩到单个TAR文档。这个方法接受输入的文件名数组，返回一个布尔值表明文档是否成功创建。记住脚本必须拥有将文件写入命名磁盘地址的许可权，否则，creat（）方法就无法使用，文档创建就会失败。</p>
<p>应用上面例子中的脚本，修改$files数组的内容以反映你的本地系统配置，在命令行或者浏览器中试着执行它，如果一切正常的话，脚本将会查找并读取这些文件到一个命名为dummy.tar的TAR文档中。<strong>  <br></strong> </p>
<p><strong> 查看TAR</strong> <strong> 文档内容</strong> </p>
<p>如何查看已经存在的TAR文件的内部信息呢？Archive_Tar类有一个listContent（）方法，该方法可以查看一个TAR包中的每个组件的详细信息。列表B显示了如何使用它：</p>
<p>列表 B<br>&lt;php<br>include ('Archive/Tar.php');// import class<br><br>$obj = new Archive_Tar('dummy.tar'); // name of archive<br><br>$files = $obj-&gt;listContent();// array of file information<br><br>foreach ($files as $f) {<br>foreach ($f as $k =&gt; $v) {<br>echo "$k: $vn";<br>}<br>echo "n";<br>}<br>&gt; </p>
<p>listContent（）方法的输出是一个结构化数组，每个数组元素代表文档中的一个文件。典型的是，每个元素有相应文件的名字信息，它的许可模
式，所有者和组用户的ID，状态，大小和上一次修改的时间。通过一个循环可以很容易的提取这些信息，然后再对格式稍作修改使它根据表达性，像上面的例子中
提到的。下面是一个输入示例：</p>
<p>校验和：3872</p>
<p>文件名：mystuff/alcon.doc</p>
<p>模式：33206</p>
<p>用户ID：433</p>
<p>组ID：106</p>
<p>大小：41472</p>
<p>时间：1140358031</p>
<p><strong> 向已经存在的TAR</strong> <strong> 文档中添加文件</strong> </p>
<p>由于我们大家的健忘性，有时可能忘记某个文件，Archive_Tar 类通过add（）方法提供了<br>向已经存在的文档中添加新文件的能力。为了演示，我们再回到上文的dummy.tar文档，试着给它添加一个新文件（列表C）：</p>
<p>列表C</p>
<p>&lt;php<br>include ('Archive/Tar.php');// import class<br><br>if (file_exists('dummy.tar')) {<br>$obj = new Archive_Tar('dummy.tar'); // name of TAR file<br>} else {<br>die('File does not exist');<br>}<br><br>$files = array('otherstuff/logo.gif', <br>'otherstuff/header.gif',<br>'morestuff/berlin-bear.psd'); // additional files <br><br>if ($obj-&gt;add($files)) {<br>echo 'Added successfully!';<br>} else {<br>echo 'Error in file addition';<br>}<br>&gt; </p>
<p><strong> 从已经存在的TAR</strong> <strong> 文档中提取文件</strong> </p>
<p>在你将文件存入文档之后，如何读取它们呢？使用extractList（）方法，显然，这个方法可以从一个已经存在的文档中提取一个或多个文件到一个指定目录，如列表D：<br>列表D</p>
<p>&lt;php </p>
<p>include ('Archive/Tar.php');// import class</p>
<p>if (file_exists('dummy.tar')) {</p>
<p>$obj = new Archive_Tar('dummy.tar'); // name of TAR file</p>
<p>} else {</p>
<p>die('File does not exist');</p>
<p>}</p>
<p>$files = array('otherstuff/logo.gif', </p>
<p>'mystuff/alcon.doc'); // files to extract</p>
<p>if ($obj-&gt;extractList($files, 'unpackaged/')) {</p>
<p>echo 'Extracted successfully!';</p>
<p>} else {</p>
<p>echo 'Error in file extraction';</p>
<p>}</p>
<p>&gt; </p>
<p>这里，要提取文件数组传递给extractlist（）方法，同时包括提取文件存入的目录名。注意的是文件将连同它们的内部目录结构一起被提取出来（虽然这个行为可以通过传递特殊参数给extractlist（）方法进行修改）。</p>
<p>除了这种可选择提取，还可以使用extract（）方法，这个方法解压整个文档，提取所有文件到一个指定目录。如果这个目录不存在，它将通过extract（）方法自动创建，当然要假设脚本据有些磁盘的许可权。列表E显示如何去做：<br>列表E</p>
<p>&lt;php<br>include ('Archive/Tar.php'); // import class<br>if (file_exists('dummy.tar')) {<br>$obj = new Archive_Tar('dummy.tar'); // name of TAR file<br>} else {<br>die('File does not exist');<br>}<br>if ($obj-&gt;extract('unpackaged/')) {<br>echo 'Extracted successfully!';<br>} else {<br>echo 'Error in file extraction';<br>}<br>&gt; </p>
<p>如上面的例子演示，PEAR的Archive_Tar类是多功能的，它允许你仅用几行简单的代码就可以执行一些相当复杂的TAE行为。希望本文中的示例脚本对你在日常的开发活动中使用Archive_Tar类有所帮助。</p>
<p><br><strong> </strong> </p>
<p><strong> <br></strong> </p>
<br> <img src ="http://www.phpweblog.net/minidxer/aggbug/2364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/minidxer/" target="_blank">minidxer</a> 2007-11-21 15:24 <a href="http://www.phpweblog.net/minidxer/archive/2007/11/21/2364.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP所有版本 SESSION 漏洞</title><link>http://www.phpweblog.net/minidxer/archive/2007/11/13/2303.html</link><dc:creator>minidxer</dc:creator><author>minidxer</author><pubDate>Tue, 13 Nov 2007 15:21:00 GMT</pubDate><guid>http://www.phpweblog.net/minidxer/archive/2007/11/13/2303.html</guid><wfw:comment>http://www.phpweblog.net/minidxer/comments/2303.html</wfw:comment><comments>http://www.phpweblog.net/minidxer/archive/2007/11/13/2303.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.phpweblog.net/minidxer/comments/commentRss/2303.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/minidxer/services/trackbacks/2303.html</trackback:ping><description><![CDATA[我们看下面这一段代码：
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">&lt;?</span><span style="color: #000000;">php<br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008080;">session_start</span><span style="color: #000000;">();<br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #800080;">$_SESSION</span><span style="color: #000000;">[</span><span style="color: #000000;">'</span><span style="color: #000000;">isadmin</span><span style="color: #000000;">'</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">'</span><span style="color: #000000;">yes</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #800080;">$isadmin</span><span style="color: #000000;">=</span><span style="color: #000000;">'</span><span style="color: #000000;">no</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$_SESSION</span><span style="color: #000000;">[</span><span style="color: #000000;">'</span><span style="color: #000000;">isadmin</span><span style="color: #000000;">'</span><span style="color: #000000;">];<br></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #000000;">?&gt;</span></div>
当php.ini里配置 register_globals = Off 时，<br>
没任何问题，<br>
输出 yes<br><br>
当php.ini里配置 register_globals = On 的时候，<br>
第一次运行输出 yes<br>
而刷新一下，则显示的是 no<br><br>
显然这是不正常的，<br>
这是个很奇怪的问题，<br>
如果说是 $isadmin='no'; 改变了SESSION，<br>
那么为什么第一次会显示yes呢？<br><br>原因：register_globals 为 On 的时候，<br>
用import_request_variables('G')和extract($_GET)创建的变量是不会改变SESSION的。<br>
<br>
总结：漏洞只存在于PHP配置register_globals = On的时候，定义的变量会改变同名的SESSION。<br> <img src ="http://www.phpweblog.net/minidxer/aggbug/2303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/minidxer/" target="_blank">minidxer</a> 2007-11-13 23:21 <a href="http://www.phpweblog.net/minidxer/archive/2007/11/13/2303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Zend Optimizer的安装配置</title><link>http://www.phpweblog.net/minidxer/archive/2007/11/12/2240.html</link><dc:creator>minidxer</dc:creator><author>minidxer</author><pubDate>Mon, 12 Nov 2007 02:41:00 GMT</pubDate><guid>http://www.phpweblog.net/minidxer/archive/2007/11/12/2240.html</guid><wfw:comment>http://www.phpweblog.net/minidxer/comments/2240.html</wfw:comment><comments>http://www.phpweblog.net/minidxer/archive/2007/11/12/2240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/minidxer/comments/commentRss/2240.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/minidxer/services/trackbacks/2240.html</trackback:ping><description><![CDATA[<font size="3">Zend Optimizer是由PHP核心引擎&#8220;Zend&#8221;</font><a href="http://www.zend.com/" target="_blank"><font color="#003366" size="3"></font></a><font size="3"> 创建者<a href="http://www.zend.com/">Zend技术公司</a>所开的免费PHP优化软件.据说可以提升30%左右的性能。这里让我们来看看Zend Optimizer是如何安装</font>的。<br>1、运行安装文件，首先提示你选择安装目录，选择一个目录，单击&#8220;Next&#8221;。<br>2、安装向导会要求你选择当前使用的WEB服务器（Apache、IIS或其它），选择好服务器后单击&#8220;Next&#8221;<br>3、安装向导提示您确认php.ini的位置（默认是C:\WINDOWS\）单击&#8220;Next&#8221;，提示&#8220;备份php.ini到C:\WINDOWS\php.ini-Optimizer-bak,当卸载该软件时可以恢复到原始的php.ini）单击&#8220;Next&#8221;。<br>4、安装向导提示&#8220;为了继续安装程序需要重新启动IIS服务）单击&#8220;是&#8221;，安装程序开始重新启动IIS服务，然后安装程序会提示&#8220;IIS服务顺利重新启动了&#8221;单击&#8220;确定&#8221;，再单击&#8220;finish&#8221;完成安装。<br>5、安装完毕后程序会自动根据你的选择来修改php.ini帮助你启动这个引擎。
<br>另外还可以根据自己的情况手动修改php.ini，这个资料也挺多的，这里不作介绍了。<br> <img src ="http://www.phpweblog.net/minidxer/aggbug/2240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/minidxer/" target="_blank">minidxer</a> 2007-11-12 10:41 <a href="http://www.phpweblog.net/minidxer/archive/2007/11/12/2240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>感谢dudu的大度~</title><link>http://www.phpweblog.net/minidxer/archive/2007/11/11/2231.html</link><dc:creator>minidxer</dc:creator><author>minidxer</author><pubDate>Sun, 11 Nov 2007 15:50:00 GMT</pubDate><guid>http://www.phpweblog.net/minidxer/archive/2007/11/11/2231.html</guid><wfw:comment>http://www.phpweblog.net/minidxer/comments/2231.html</wfw:comment><comments>http://www.phpweblog.net/minidxer/archive/2007/11/11/2231.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.phpweblog.net/minidxer/comments/commentRss/2231.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/minidxer/services/trackbacks/2231.html</trackback:ping><description><![CDATA[已经在cppblog上开通了一个blog了，又申请了php的，dudu也很大度的给与注册了，感谢dudu~<br>hoho<br><br><img src ="http://www.phpweblog.net/minidxer/aggbug/2231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/minidxer/" target="_blank">minidxer</a> 2007-11-11 23:50 <a href="http://www.phpweblog.net/minidxer/archive/2007/11/11/2231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>