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

<channel>
	<title>柠檬工作室 &#187; PHP</title>
	<atom:link href="http://www.crazylemon.net/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.crazylemon.net</link>
	<description>上帝无用，天使无用</description>
	<lastBuildDate>Thu, 17 Nov 2011 19:39:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>ecshop search 漏洞修复</title>
		<link>http://www.crazylemon.net/php/3870.html</link>
		<comments>http://www.crazylemon.net/php/3870.html#comments</comments>
		<pubDate>Fri, 20 May 2011 07:15:12 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3870</guid>
		<description><![CDATA[很早的一个漏洞了，这两天又遇到，而且还是要做给朋友的网站上遇到，在网上搜解决方法，有用的甚少。 官方没有给出补丁，可能认为问题不大吧，并且后续版本会更新掉，但也造成了很多用户网站被入侵了。 在此贴出官方论坛给出的解决方法，以备查用： 我们程序员已经有解决方案 search.php 大概300 源             if (is_not_null($val) ) 修改为             if (is_not_null($val) &#38;&#38; is_numeric($key)) 就可以了 随机日志07/18/2009 -- .htaccess使用指南 (0)11/22/2010 -- Win平台下安装ionCube (0)07/10/2009 -- Ext2 v.s. Ext3 v.s. Ext4 性能比拼 (0)07/29/2009 -- RTX总群三天后解散 (5)05/31/2009 -- php二级联动下拉框的javascript (0)]]></description>
			<content:encoded><![CDATA[<p>很早的一个漏洞了，这两天又遇到，而且还是要做给朋友的网站上遇到，在网上搜解决方法，有用的甚少。</p>
<p>官方没有给出补丁，可能认为问题不大吧，并且后续版本会更新掉，但也造成了很多用户网站被入侵了。</p>
<p>在此贴出官方论坛给出的解决方法，以备查用：</p>
<div>
<div>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td id="postmessage_550529">我们程序员已经有解决方案<br />
search.php<br />
大概300 源<br />
            if (is_not_null($val) )<br />
修改为<br />
            if (is_not_null($val) &amp;&amp; is_numeric($key))<br />
就可以了</td>
</tr>
</tbody>
</table>
</div>
</div>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>08/10/2010 -- <a href="http://www.crazylemon.net/waimao/3383.html" title="国内仿牌域名也存在很大风险">国内仿牌域名也存在很大风险</a> (3)</li><li>05/21/2009 -- <a href="http://www.crazylemon.net/linux/175.html" title="将CentOS 4.7（2.6.9）核心升级为CentOS 5.2（kernel-2.6.18-128.1.6.el5）">将CentOS 4.7（2.6.9）核心升级为CentOS 5.2（kernel-2.6.18-128.1.6.el5）</a> (0)</li><li>10/08/2009 -- <a href="http://www.crazylemon.net/waimao/2154.html" title="莆田外贸的几种形式">莆田外贸的几种形式</a> (0)</li><li>06/01/2010 -- <a href="http://www.crazylemon.net/php/3186.html" title="msn官方在线状态接口（JSON形式）">msn官方在线状态接口（JSON形式）</a> (2)</li><li>06/06/2009 -- <a href="http://www.crazylemon.net/linux/518.html" title="linux基础之教你如何查看linux版本">linux基础之教你如何查看linux版本</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3870.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP curl 处理ssl地址</title>
		<link>http://www.crazylemon.net/php/3801.html</link>
		<comments>http://www.crazylemon.net/php/3801.html#comments</comments>
		<pubDate>Thu, 20 Jan 2011 07:56:17 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3801</guid>
		<description><![CDATA[前段时间dnspod官方变更了API接口地址，主要改动如下： 把API地址改为https://dnsapi.cn 去掉了URL后的/API 我之前使用的接口类更改后仍无法使用，按官方提供的一个PHP+curl调用实例测试也无法成功，主代码如下： function postData($url, $data) { $data = http_build_query($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLOPT_HEADER, 1); // curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, '程序英文名/版本 (联系邮箱)'); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); curl_close($ch); return $response; } 怀疑是否我的curl模块不支持SSL，但又觉得不可能；后上网查了下，原来是没有设置一个参数： curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 就是对安全连接不进行核实，否则即无法正常返回结果 随机日志09/11/2010 -- paypal跳转升级版 (10)08/16/2009 -- [...]]]></description>
			<content:encoded><![CDATA[<p>前段时间dnspod官方变更了API接口地址，主要改动如下：</p>
<li>把API地址改为https://dnsapi.cn</li>
<li>去掉了URL后的/API</li>
<p>我之前使用的接口类更改后仍无法使用，按官方提供的一个PHP+curl调用实例测试也无法成功，主代码如下：</p>
<div>
<pre>function postData($url, $data) {
	$data	= http_build_query($data);

	$ch	= curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	// curl_setopt($ch, CURLOPT_HEADER, 1);
	// curl_setopt($ch, CURLOPT_VERBOSE, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);</pre>
<pre><strong>        curl_setopt($ch, CURLOPT_USERAGENT, '程序英文名/版本 (联系邮箱)');</strong></pre>
<pre>	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

	$response	= curl_exec($ch);
	curl_close($ch);

	return $response;
}</pre>
</div>
<p>怀疑是否我的curl模块不支持SSL，但又觉得不可能；后上网查了下，原来是没有设置一个参数：</p>
<p>curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);</p>
<p>就是对安全连接不进行核实，否则即无法正常返回结果</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>07/16/2009 -- <a href="http://www.crazylemon.net/baike/1198.html" title="登月纪念日">登月纪念日</a> (0)</li><li>09/21/2009 -- <a href="http://www.crazylemon.net/zencart/1975.html" title="MSN在线聊天代码for zen cart">MSN在线聊天代码for zen cart</a> (1)</li><li>03/31/2010 -- <a href="http://www.crazylemon.net/zencart/3003.html" title="zen cart image hander 和 lightbox 冲突问题">zen cart image hander 和 lightbox 冲突问题</a> (0)</li><li>09/13/2009 -- <a href="http://www.crazylemon.net/seo/1866.html" title="Site指令的巧妙运用">Site指令的巧妙运用</a> (0)</li><li>09/28/2010 -- <a href="http://www.crazylemon.net/html/3555.html" title="meta 里绕过IE不同版本兼容性问题">meta 里绕过IE不同版本兼容性问题</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3801.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>preg_match_all (.*)函数不能匹配出换行符</title>
		<link>http://www.crazylemon.net/php/3790.html</link>
		<comments>http://www.crazylemon.net/php/3790.html#comments</comments>
		<pubDate>Fri, 31 Dec 2010 08:16:48 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3790</guid>
		<description><![CDATA[今天发现preg_match_all 函数不能匹配出换行符，如果要配匹的结果里有换行符，需要用用 str_replace(“\n”,”",$s);之类的方法去掉换行符。 随机日志09/14/2009 -- 我的时空观 (1)07/28/2010 -- 什么是天使投资者 (3)09/26/2009 -- lightinthebox真恶心 (7)06/06/2009 -- linux基础之教你如何查看linux版本 (0)06/21/2009 -- linux IP 设置 (0)]]></description>
			<content:encoded><![CDATA[<p>今天发现preg_match_all 函数不能匹配出换行符，如果要配匹的结果里有换行符，需要用用</p>
<p>str_replace(“\n”,”",$s);之类的方法去掉换行符。</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>07/02/2009 -- <a href="http://www.crazylemon.net/work/939.html" title="腾讯通RTX2009 Beta1完美破解版">腾讯通RTX2009 Beta1完美破解版</a> (7)</li><li>02/06/2009 -- <a href="http://www.crazylemon.net/php/64.html" title="php复制一个文件夹下的所有内容到另一个文件夹">php复制一个文件夹下的所有内容到另一个文件夹</a> (0)</li><li>06/18/2009 -- <a href="http://www.crazylemon.net/linux/693.html" title="iptables POSTROUTING PREROUTING">iptables POSTROUTING PREROUTING</a> (0)</li><li>06/11/2009 -- <a href="http://www.crazylemon.net/linux/605.html" title="Rar for Linux的安装方法">Rar for Linux的安装方法</a> (4)</li><li>12/01/2009 -- <a href="http://www.crazylemon.net/work/2609.html" title="利用转发功能管理邮件">利用转发功能管理邮件</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3790.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP防CC攻击</title>
		<link>http://www.crazylemon.net/php/3740.html</link>
		<comments>http://www.crazylemon.net/php/3740.html#comments</comments>
		<pubDate>Tue, 09 Nov 2010 20:50:07 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3740</guid>
		<description><![CDATA[统计代码： &#60;? if (isset($_SERVER)){ $realip = $_SERVER[HTTP_X_FORWARDED_FOR]; } else { $realip = getenv(“HTTP_X_FORWARDED_FOR”); } if($realip&#60;&#62;”"){ $remoteip=$_SERVER['REMOTE_ADDR']; log_ip($remoteip,$realip); } function log_ip($remote_ip,$real_ip) { $temp_time = date(“y-m-d G:i:s”); $temp_result = $temp_time.”\t”.$real_ip.”\t”.$remote_ip.”\n”; if(!$fhandle=fopen(“cc_log.txt”,”a+”)){ print “error”; exit; } fwrite($fhandle,$temp_result); fclose($fhandle); } ?&#62; 此段代码作用: 将代理访问的真实IP记录到日志中，以便排查分析。 以下是cc_log.txt的内容(此代码生产是因我通过CC攻击软件攻击生产的) Time Real_ip Remote_ip &#60;=此行是我自己添加的 09-09-05 13:50:47 122.144.131.72 60.248.212.230 09-09-05 13:50:47 122.144.131.72 60.248.212.230 09-09-05 13:50:47 122.144.131.72 [...]]]></description>
			<content:encoded><![CDATA[<p>统计代码：<br />
&lt;?<br />
if (isset($_SERVER)){<br />
$realip = $_SERVER[HTTP_X_FORWARDED_FOR];<br />
}<br />
else<br />
{<br />
$realip = getenv(“HTTP_X_FORWARDED_FOR”);<br />
}<br />
if($realip&lt;&gt;”"){<br />
$remoteip=$_SERVER['REMOTE_ADDR'];<br />
log_ip($remoteip,$realip);<br />
}<br />
function log_ip($remote_ip,$real_ip)<br />
{<br />
$temp_time = date(“y-m-d G:i:s”);<br />
$temp_result = $temp_time.”\t”.$real_ip.”\t”.$remote_ip.”\n”;<br />
if(!$fhandle=fopen(“cc_log.txt”,”a+”)){<br />
print “error”;<br />
exit;<br />
}<br />
fwrite($fhandle,$temp_result);<br />
fclose($fhandle);<br />
}<br />
?&gt;<br />
此段代码作用:<br />
将代理访问的真实IP记录到日志中，以便排查分析。<br />
以下是cc_log.txt的内容(此代码生产是因我通过CC攻击软件攻击生产的)<br />
Time Real_ip Remote_ip &lt;=此行是我自己添加的<br />
09-09-05 13:50:47 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:47 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:47 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:48 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:48 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:48 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:49 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:49 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:49 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:49 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:49 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:49 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:49 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:49 122.144.131.72 60.248.212.230<br />
09-09-05 13:50:50 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:50 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:50 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:50 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:50 122.144.131.72 219.146.172.91<br />
09-09-05 13:50:51 122.144.131.72 60.248.212.230<br />
在仅仅有4秒的时间内，就从真实IP 122.144.131.72 以代理IP(60.248.212.230,219.146.172.91)来访问我这台服务器，可见这台真实客户端<br />
是有问题的，这时，我们应该用防火墙(iptables)禁止掉这些真实IP，以使他们的请求，在入口就Deny掉。<br />
session_start();<br />
$timestamp = time();<br />
$cc_nowtime = $timestamp ;<br />
if (session_is_registered(&#8216;cc_lasttime&#8217;)){<br />
$cc_lasttime = $_SESSION['cc_lasttime'];<br />
$cc_times = $_SESSION['cc_times'] + 1;<br />
$_SESSION['cc_times'] = $cc_times;<br />
}else{<br />
$cc_lasttime = $cc_nowtime;<br />
$cc_times = 1;<br />
$_SESSION['cc_times'] = $cc_times;<br />
$_SESSION['cc_lasttime'] = $cc_lasttime;<br />
}<br />
if (($cc_nowtime &#8211; $cc_lasttime)&lt;5){ if ($cc_times&gt;=10){<br />
header(sprintf(“Location: %s”,&#8217;http://127.0.0.1&#8242;));<br />
exit;<br />
}<br />
}else{<br />
$cc_times = 0;<br />
$_SESSION['cc_lasttime'] = $cc_nowtime;<br />
$_SESSION['cc_times'] = $cc_times;<br />
}<br />
?&gt;<br />
这段代码的作用：<br />
同一会话，如果在5秒钟内，刷新了10次就将响应指向到本地服务(<a href="http://127.0.0.1">http://127.0.0.1</a>)</p>
<p>通过&lt;iframe&gt;进行CC攻击，攻击者的想法和创意，确实很让人惊叹，但这正好造成了他的完美失败。熟悉网页程序的朋友应该都知道，用&lt;iframe&gt;嵌入的网页，自然都会有HTTP_REFERER值，而有了这个值，从这个值上面屏蔽或是转发掉来源的网站即可。也就是说，你可以访问我，但是我不将真实的页面返回给你，我可以把你随意打发掉，或是将你随意转到另外一个网站上去（如：公安部？哈哈，我就见过有人类似这样做的），这样我就可以大量的节省我的带宽、我的DB Server资源、我的Web Server资源。你最多就是占用了我大量的TCP连接罢了。</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>06/06/2009 -- <a href="http://www.crazylemon.net/nginx/510.html" title="nginx详解">nginx详解</a> (0)</li><li>05/04/2010 -- <a href="http://www.crazylemon.net/php/3125.html" title="EMS 查询接口">EMS 查询接口</a> (5)</li><li>10/01/2010 -- <a href="http://www.crazylemon.net/php/3563.html" title="恶心的Cannot modify header information &#8211; headers already sent by ">恶心的Cannot modify header information &#8211; headers already sent by </a> (0)</li><li>11/15/2010 -- <a href="http://www.crazylemon.net/windows/3754.html" title="ping 命令返回的TTL值">ping 命令返回的TTL值</a> (0)</li><li>07/10/2009 -- <a href="http://www.crazylemon.net/linux/1088.html" title="Linux EXT3文件系统下恢复误删的文件">Linux EXT3文件系统下恢复误删的文件</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3740.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php实现域名(URL)转发</title>
		<link>http://www.crazylemon.net/php/3736.html</link>
		<comments>http://www.crazylemon.net/php/3736.html#comments</comments>
		<pubDate>Tue, 09 Nov 2010 20:36:00 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3736</guid>
		<description><![CDATA[所谓URL转发，是通过服务器的特殊设置，将访问您当前域名的用户引导到您指定的另一个网络地址。 　　地址转向（也可称“URL转发”）即将一个域名指向到另外一个已存在的站点，英文称为“ URL FORWARDING ”。域名指向可能这个站点原有的域名或网址是比较复杂难记的。 不隐藏路径 URL 转发：例如： http://b.com/ 指向 http://a.com/xxx/ （任意目录）；当在浏览器地址栏中敲入 http://b.com/ 后回车， IE 浏览器的地址栏里显示的地址会由原来您敲入的 http://b.com/ 自动变为显示真正的目标地址 http://a.com/xxx/ ；  　　 隐藏路径的 URL 转发：例如： http://b.com/ 指向 http://a.com/xxx/ （任意目录）；当在浏览器地址栏中敲入 http://b.com/ 后回车， IE 浏览器的地址栏里显示的地址保持不变，仍是 http://b.com/ ，但实际访问到的是 http://a.com/xxx/ 的内容。 有些服务器商或域名解析商有提供域名转发功能，之前不太了解，其实这种URL转发可以使用很容的技术来实现。 不隐藏路径 URL 转发：可以使用PHP简单实现，代码如下： &#60;?php header(“Location:http://www.baidu.com”); ?&#62; 可以使用如 header(&#8216;HTTP/1.1 302 Moved Permanently&#8217;); 来告知搜索引擎是301或302或500错误 隐藏路径的 URL 转发：可使用frameset实现，如： &#60;frameset border=”0&#8243; frameSpacing=”0&#8243; [...]]]></description>
			<content:encoded><![CDATA[<p>所谓URL转发，是通过服务器的特殊设置，将访问您当前域名的用户引导到您指定的另一个网络地址。 　　地址转向（也可称“URL转发”）即将一个域名指向到另外一个已存在的站点，英文称为“ URL FORWARDING ”。域名指向可能这个站点原有的域名或网址是比较复杂难记的。</p>
<p>不隐藏路径 URL 转发：例如： http://b.com/ 指向 http://a.com/xxx/ （任意目录）；当在浏览器地址栏中敲入 http://b.com/ 后回车， IE 浏览器的地址栏里显示的地址会由原来您敲入的 http://b.com/ 自动变为显示真正的目标地址 http://a.com/xxx/ ；<br />
 　　<br />
隐藏路径的 URL 转发：例如： http://b.com/ 指向 http://a.com/xxx/ （任意目录）；当在浏览器地址栏中敲入 http://b.com/ 后回车， IE 浏览器的地址栏里显示的地址保持不变，仍是 http://b.com/ ，但实际访问到的是 http://a.com/xxx/ 的内容。</p>
<p>有些服务器商或域名解析商有提供域名转发功能，之前不太了解，其实这种URL转发可以使用很容的技术来实现。</p>
<p>不隐藏路径 URL 转发：可以使用PHP简单实现，代码如下：</p>
<p>&lt;?php<br />
header(“Location:http://www.baidu.com”);<br />
?&gt;</p>
<p>可以使用如 header(&#8216;HTTP/1.1 302 Moved Permanently&#8217;); 来告知搜索引擎是301或302或500错误</p>
<p>隐藏路径的 URL 转发：可使用frameset实现，如：</p>
<p>&lt;frameset border=”0&#8243; frameSpacing=”0&#8243; rows=”*,0&#8243; frameBorder=”0&#8243; cols=”*”&gt;<br />
&lt;frame src=”http://www.baidu.com”  noResize scrolling=auto&gt;<br />
&lt;/frameset&gt;</p>
<p>这里就没有跳转了，只是抓取内容，可以自定义标题等</p>
<p>php的header函数很好用</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li>04/07/2010 -- <a href="http://www.crazylemon.net/seo/3038.html" title="什么情况下google spider会来抓取新站页面">什么情况下google spider会来抓取新站页面</a> (0)</li><li>07/25/2009 -- <a href="http://www.crazylemon.net/work/1376.html" title="通  知">通  知</a> (2)</li><li>06/20/2009 -- <a href="http://www.crazylemon.net/linux/718.html" title="了解 linux 磁盘结构及分区">了解 linux 磁盘结构及分区</a> (0)</li><li>08/29/2009 -- <a href="http://www.crazylemon.net/work/1715.html" title="如何查询一台虚拟主机或一个IP上绑定了多少个域名？">如何查询一台虚拟主机或一个IP上绑定了多少个域名？</a> (6)</li><li>10/19/2009 -- <a href="http://www.crazylemon.net/web/2236.html" title="bluehost如何绑定中文域名">bluehost如何绑定中文域名</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3736.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GSPAY支付模块接口文档及测试方法</title>
		<link>http://www.crazylemon.net/php/3699.html</link>
		<comments>http://www.crazylemon.net/php/3699.html#comments</comments>
		<pubDate>Tue, 26 Oct 2010 12:31:50 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[外贸]]></category>
		<category><![CDATA[ECPSS]]></category>
		<category><![CDATA[GSPAY]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[paypal]]></category>
		<category><![CDATA[ZenCart]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3699</guid>
		<description><![CDATA[GSPAY官方有提供多种网店系统的GSPAY支付接口，及接口的说明文档，但都是英文的，而且需要登陆进GSPAY后台才能看到。 在这里我将官方下载地址贴出来，以免有些人说找不到 说明文档：http://www.gspay.com/docs/Merchants_manual.pdf GSPAY for Zen Cart：http://www.gspay.com/docs/modules_rd/zencart.zip 不过这个版本的接口是较原始的，有些地方还需要改一下，比如你需要在支付方式选择页面为它加上个图片的话。 另外，有幸找到一份简单的中文说明，得知GSPAY支付接口的测试方法如下： 在表单中添加一条POST数据： &#60;input type=”hidden” name=”TransactionMode” value=”test”&#62; 即可告知GSPAY接口该交易为测试交易，测试使用的卡号： 4444445555555555 会模拟一个成功的交易 4444446666666666 会模拟一个失败的交易 到目前为止，PayPal有沙盒测试，ECPSS有无敌卡号4000000000000002，GSPAY也有它自己的测试方法了。 相关日志10/25/2010 -- 近期PayPal跳转用户有所增加 (0)10/26/2010 -- GSPAY跳转for Zen Cart开发进度 (0)10/15/2010 -- Zen Cart开发 (1)11/17/2009 -- GSPAY更新for zen cart (0)06/19/2009 -- PayPal PHP接口 (0)]]></description>
			<content:encoded><![CDATA[<p>GSPAY官方有提供多种网店系统的GSPAY支付接口，及接口的说明文档，但都是英文的，而且需要登陆进GSPAY后台才能看到。</p>
<p>在这里我将官方下载地址贴出来，以免有些人说找不到</p>
<p>说明文档：http://www.gspay.com/docs/Merchants_manual.pdf</p>
<p>GSPAY for Zen Cart：http://www.gspay.com/docs/modules_rd/zencart.zip</p>
<p>不过这个版本的接口是较原始的，有些地方还需要改一下，比如你需要在支付方式选择页面为它加上个图片的话。</p>
<p>另外，有幸找到一份简单的中文说明，得知GSPAY支付接口的测试方法如下：</p>
<p>在表单中添加一条POST数据：</p>
<p>&lt;input type=”hidden” name=”TransactionMode” value=”test”&gt;</p>
<p>即可告知GSPAY接口该交易为测试交易，测试使用的卡号：<br />
4444445555555555 会模拟一个成功的交易<br />
4444446666666666 会模拟一个失败的交易</p>
<p>到目前为止，PayPal有沙盒测试，ECPSS有无敌卡号4000000000000002，GSPAY也有它自己的测试方法了。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>10/25/2010 -- <a href="http://www.crazylemon.net/waimao/3667.html" title="近期PayPal跳转用户有所增加">近期PayPal跳转用户有所增加</a> (0)</li><li>10/26/2010 -- <a href="http://www.crazylemon.net/waimao/3689.html" title="GSPAY跳转for Zen Cart开发进度">GSPAY跳转for Zen Cart开发进度</a> (0)</li><li>10/15/2010 -- <a href="http://www.crazylemon.net/zen-cart-template" title="Zen Cart开发">Zen Cart开发</a> (1)</li><li>11/17/2009 -- <a href="http://www.crazylemon.net/zencart/2506.html" title="GSPAY更新for zen cart">GSPAY更新for zen cart</a> (0)</li><li>06/19/2009 -- <a href="http://www.crazylemon.net/php/700.html" title="PayPal PHP接口">PayPal PHP接口</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3699.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DNSPOD API升级</title>
		<link>http://www.crazylemon.net/php/3603.html</link>
		<comments>http://www.crazylemon.net/php/3603.html#comments</comments>
		<pubDate>Fri, 15 Oct 2010 08:52:53 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Charset]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[DNSPod]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[升级]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3603</guid>
		<description><![CDATA[最近DNSPOD API升级了，改动比较大，之前写的一个整理的dnspod接口类还可以正常使用，但调用参数要作很大更改，主要原因是升级后Domain.List、Record.List等接口返回的数组结构和提交参数值发生了变化。 主要更改有： Domain.List返回的数组去掉了domain一级，Record.List返回的数组去掉了record一级，调用时要相应去掉。 record_line参数值作了改动，原本是英文，如default、edu等，现在改为中文，如默认、教育网等；改为中文，真是个退步，因为编码问题，参数提交和返回时都要求在UTF-8环境下，即用web界面调用时，charset要为UTF-8，源代码也要以utf-8格式保存，避免乱码和造成提交失败。 其它的问题暂时没发现，因为只要能添加删除域名和记录，就行了。 另外，DNSPOD官方文档要求的使用https方式请求并不是强制的，所以原来的http://www.dnspod.com/API/地址还是可以用，其实如果非要用https的话，可能还会遇到服务器CURL配置的问题，至少我的初始配置无法执行。 DNSPOD的API调用限制是一小时内不能超过120次，这个不是针对帐号而是针对IP，所以本地调用受限时，急的话可以切换个IP再试。 相关日志10/15/2010 -- MySQL数据库编码问题之数据转换 (0)06/29/2010 -- wordpress3.0发布，支持多站点 (1)06/10/2009 -- 国内八家域名注册商优缺点比较 (6)05/29/2009 -- 一个整理的dnspod接口类 (1)08/10/2010 -- 国内仿牌域名也存在很大风险 (3)]]></description>
			<content:encoded><![CDATA[<p>最近<strong>DNSPOD API</strong>升级了，改动比较大，之前写的<a title="猛击查看 一个整理的dnspod接口类 的详细内容" rel="bookmark" href="http://www.crazylemon.net/php/220.html">一个整理的dnspod接口类</a>还可以正常使用，但调用参数要作很大更改，主要原因是升级后Domain.List、Record.List等接口返回的数组结构和提交参数值发生了变化。</p>
<p>主要更改有：</p>
<p>Domain.List返回的数组去掉了domain一级，Record.List返回的数组去掉了record一级，调用时要相应去掉。</p>
<p>record_line参数值作了改动，原本是英文，如default、edu等，现在改为中文，如默认、教育网等；改为中文，真是个退步，因为编码问题，参数提交和返回时都要求在UTF-8环境下，即用web界面调用时，charset要为UTF-8，源代码也要以utf-8格式保存，避免乱码和造成提交失败。</p>
<p>其它的问题暂时没发现，因为只要能添加删除域名和记录，就行了。</p>
<p>另外，DNSPOD官方文档要求的使用https方式请求并不是强制的，所以原来的http://www.dnspod.com/API/地址还是可以用，其实如果非要用https的话，可能还会遇到服务器CURL配置的问题，至少我的初始配置无法执行。</p>
<p>DNSPOD的API调用限制是一小时内不能超过120次，这个不是针对帐号而是针对IP，所以本地调用受限时，急的话可以切换个IP再试。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>10/15/2010 -- <a href="http://www.crazylemon.net/mysql/3609.html" title="MySQL数据库编码问题之数据转换">MySQL数据库编码问题之数据转换</a> (0)</li><li>06/29/2010 -- <a href="http://www.crazylemon.net/wordpress/3239.html" title="wordpress3.0发布，支持多站点">wordpress3.0发布，支持多站点</a> (1)</li><li>06/10/2009 -- <a href="http://www.crazylemon.net/work/591.html" title="国内八家域名注册商优缺点比较 ">国内八家域名注册商优缺点比较 </a> (6)</li><li>05/29/2009 -- <a href="http://www.crazylemon.net/php/220.html" title="一个整理的dnspod接口类">一个整理的dnspod接口类</a> (1)</li><li>08/10/2010 -- <a href="http://www.crazylemon.net/waimao/3383.html" title="国内仿牌域名也存在很大风险">国内仿牌域名也存在很大风险</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3603.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ECSHOP安装时数据库出错的原因</title>
		<link>http://www.crazylemon.net/php/3566.html</link>
		<comments>http://www.crazylemon.net/php/3566.html#comments</comments>
		<pubDate>Fri, 01 Oct 2010 08:43:34 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3566</guid>
		<description><![CDATA[应该有些朋友在安装ECSHOP时，遇到这样一个问题，就是填好了数据库信息，并测试能正常连接的情况下（如用搜索现有数据库功能搜索得到数据库），点击安装却报如下错误： 创建配置文件…………成功 创建数据库…………成功 安装数据…………失败 ECSHOP info: Can’t Connect MySQL Server(localhost:3306)! 这是因为ECSHOP的数据库密码不能有美元符号$，应该算是ECSHOP的一个小BUG 解决方法： 修改数据库密码。。。。 相关日志09/01/2010 -- mysql 注入方法（转自Security Angel） (1)08/18/2010 -- MYSQL 字符集 (0)06/14/2009 -- mysql设为linux服务开机启动 (0)06/06/2009 -- nginx详解 (0)02/11/2009 -- pure-ftpd.conf 中文说明 (0)]]></description>
			<content:encoded><![CDATA[<p>应该有些朋友在安装ECSHOP时，遇到这样一个问题，就是填好了数据库信息，并测试能正常连接的情况下（如用搜索现有数据库功能搜索得到数据库），点击安装却报如下错误：</p>
<p>创建配置文件…………成功<br />
创建数据库…………成功<br />
安装数据…………失败<br />
ECSHOP info: Can’t Connect MySQL Server(localhost:3306)!</p>
<p>这是因为ECSHOP的数据库密码不能有美元符号$，应该算是ECSHOP的一个小BUG</p>
<p>解决方法：</p>
<p>修改数据库密码。。。。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>09/01/2010 -- <a href="http://www.crazylemon.net/mysql/3455.html" title="mysql 注入方法（转自Security Angel）">mysql 注入方法（转自Security Angel）</a> (1)</li><li>08/18/2010 -- <a href="http://www.crazylemon.net/mysql/3405.html" title="MYSQL 字符集">MYSQL 字符集</a> (0)</li><li>06/14/2009 -- <a href="http://www.crazylemon.net/mysql/651.html" title="mysql设为linux服务开机启动">mysql设为linux服务开机启动</a> (0)</li><li>06/06/2009 -- <a href="http://www.crazylemon.net/nginx/510.html" title="nginx详解">nginx详解</a> (0)</li><li>02/11/2009 -- <a href="http://www.crazylemon.net/ftp/96.html" title="pure-ftpd.conf 中文说明">pure-ftpd.conf 中文说明</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3566.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>恶心的Cannot modify header information &#8211; headers already sent by</title>
		<link>http://www.crazylemon.net/php/3563.html</link>
		<comments>http://www.crazylemon.net/php/3563.html#comments</comments>
		<pubDate>Thu, 30 Sep 2010 17:14:38 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php.ini]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3563</guid>
		<description><![CDATA[如果在一些动作前有莫名的输出。。。如空格，便会报如下错误 Cannot modify header information &#8211; headers already sent by (output started at&#8230;&#8230; 报也就算了，但同样是开启了错误报告，有的却不报，郁闷，无法找到空格出在哪 解决方法，一般在页面执行前加ob_start(); 或直接在php.ini中开启output_buffering，但这样影响服务器性能，恶心 相关日志09/01/2010 -- mysql 注入方法（转自Security Angel） (1)08/31/2010 -- PHP session超时问题 (0)08/26/2010 -- PHP session 失效不传递的解决办法 (0)04/23/2010 -- Cpanel开启gzip优化功能 (0)12/15/2009 -- bluehost上安装网站显示http 500错误 (2)]]></description>
			<content:encoded><![CDATA[<p>如果在一些动作前有莫名的输出。。。如空格，便会报如下错误</p>
<p>Cannot modify header information &#8211; headers already sent by (output started at&#8230;&#8230;</p>
<p>报也就算了，但同样是开启了错误报告，有的却不报，郁闷，无法找到空格出在哪</p>
<p>解决方法，一般在页面执行前加ob_start();</p>
<p>或直接在php.ini中开启output_buffering，但这样影响服务器性能，恶心</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>09/01/2010 -- <a href="http://www.crazylemon.net/mysql/3455.html" title="mysql 注入方法（转自Security Angel）">mysql 注入方法（转自Security Angel）</a> (1)</li><li>08/31/2010 -- <a href="http://www.crazylemon.net/php/3453.html" title="PHP session超时问题">PHP session超时问题</a> (0)</li><li>08/26/2010 -- <a href="http://www.crazylemon.net/php/3435.html" title="PHP session 失效不传递的解决办法">PHP session 失效不传递的解决办法</a> (0)</li><li>04/23/2010 -- <a href="http://www.crazylemon.net/apache/3111.html" title="Cpanel开启gzip优化功能">Cpanel开启gzip优化功能</a> (0)</li><li>12/15/2009 -- <a href="http://www.crazylemon.net/web/2669.html" title="bluehost上安装网站显示http 500错误">bluehost上安装网站显示http 500错误</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3563.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress模板兼容性问题</title>
		<link>http://www.crazylemon.net/php/3538.html</link>
		<comments>http://www.crazylemon.net/php/3538.html#comments</comments>
		<pubDate>Sat, 25 Sep 2010 07:52:27 +0000</pubDate>
		<dc:creator>CrazyLemon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[word]]></category>
		<category><![CDATA[升级]]></category>

		<guid isPermaLink="false">http://www.crazylemon.net/?p=3538</guid>
		<description><![CDATA[相信有很多wordpress用户有遇到过这种问题，就是新装了个模板后，博客打不开了，提示： Fatal error: Call to undefined function wp_nav_menu() in /。。.php on line 14 之类的问题，原因是wordpress版本太低，可能是2.9版的，而模板只支持wordpress3.0以上版本 这次wordpress升级到3.0版加了很多原本没有的函数，如果模板调用了这些新函数，就会出现以上错误 解决办法，到wordpress后台自动升级wordpress版本到最新版 当然，直接进后台是没办法的，会报错，所以要先进FTP将调用这些新函数的语句注释掉再进 相关日志09/01/2010 -- mysql 注入方法（转自Security Angel） (1)06/29/2010 -- wordpress3.0发布，支持多站点 (1)09/22/2009 -- wordpress自动升级时出现Allowed memory size of 33554432 bytes exhausted (0)07/31/2009 -- google-analytics-for-wordpress 3.0 bug (6)05/30/2009 -- WordPress 2.8 Beta2体验报告 (0)]]></description>
			<content:encoded><![CDATA[<p>相信有很多wordpress用户有遇到过这种问题，就是新装了个模板后，博客打不开了，提示：</p>
<p><strong>Fatal error</strong>: Call to undefined function wp_nav_menu() in <strong>/。。.php</strong> on line <strong>14</strong></p>
<p>之类的问题，原因是wordpress版本太低，可能是2.9版的，而模板只支持wordpress3.0以上版本</p>
<p>这次wordpress升级到3.0版加了很多原本没有的函数，如果模板调用了这些新函数，就会出现以上错误</p>
<p>解决办法，到wordpress后台自动升级wordpress版本到最新版</p>
<p>当然，直接进后台是没办法的，会报错，所以要先进FTP将调用这些新函数的语句注释掉再进</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>09/01/2010 -- <a href="http://www.crazylemon.net/mysql/3455.html" title="mysql 注入方法（转自Security Angel）">mysql 注入方法（转自Security Angel）</a> (1)</li><li>06/29/2010 -- <a href="http://www.crazylemon.net/wordpress/3239.html" title="wordpress3.0发布，支持多站点">wordpress3.0发布，支持多站点</a> (1)</li><li>09/22/2009 -- <a href="http://www.crazylemon.net/wordpress/1994.html" title="wordpress自动升级时出现Allowed memory size of 33554432 bytes exhausted">wordpress自动升级时出现Allowed memory size of 33554432 bytes exhausted</a> (0)</li><li>07/31/2009 -- <a href="http://www.crazylemon.net/wordpress/1423.html" title="google-analytics-for-wordpress 3.0 bug">google-analytics-for-wordpress 3.0 bug</a> (6)</li><li>05/30/2009 -- <a href="http://www.crazylemon.net/wordpress/239.html" title="WordPress 2.8 Beta2体验报告">WordPress 2.8 Beta2体验报告</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.crazylemon.net/php/3538.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

