<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title></title>
		<link>http://www.jackfeng.com/category//</link>
		<description></description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version Plus 2.0 Build 20081001</generator>
		<lastBuildDate>Wed, 07 Jan 2009 11:25:27 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://www.jackfeng.com/archives/1304/</guid>
			<title>addslashes与mysql_escape_string的区别</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p style="text-align: left;"><span style="font-size: large;">mysql_escape_string与addslashes的区别在于 &nbsp; <br />
mysql_escape_string总是将&ldquo;<span style="color: rgb(255, 0, 0);">'</span>&rdquo;转换成&ldquo;<span style="color: rgb(255, 0, 0);">\'</span>&rdquo; &nbsp;  <br />
<br />
而addslashes &nbsp; <br />
在magic_quotes_sybase=on时将&ldquo;<span style="color: rgb(255, 0, 0);">'</span>&rdquo;转换成&ldquo;<span style="color: rgb(255, 0, 0);">''</span>&rdquo; &nbsp; <br />
在magic_quotes_sybase=off时将&ldquo;<span style="color: rgb(255, 0, 0);">'</span>&rdquo;转换成&ldquo;<span style="color: rgb(255, 0, 0);">\'</span>&rdquo; </span></p>]]></description>
			<link>http://www.jackfeng.com/archives/1304/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-27 02:19</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1298/</guid>
			<title>Wrong permissions on configuration file, should not be world writable!</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <div class="entry-content">
<p>试用的自配服务器（php+mysql+nginx）</p>
<p>在网页形式下浏览数据库时</p>
<p>出现错误：Wrong permissions on configuration file, should not be world writable!</p>
<p>其实这个错误是mysql数据库的权限设置成了777所造成的</p>
<p>解决办法就是把数据库的根目录权限重新设置成755即可</p>
<p>比如数据库 phpMyAdmin的存放目录是：/opt/ppt/phpMyAdmin</p>
<p>则可以进行如下的操作：chmod -R 755 phpMyAdmin,这样重新设置后就可以了:-)</p>
</div>]]></description>
			<link>http://www.jackfeng.com/archives/1298/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-20 11:42</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1295/</guid>
			<title>PHP实现长连接</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>&nbsp;</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&lt;?php &nbsp;</span></span></li><li><span>set_time_limit(0); &nbsp;</span></li><li class="alt"><span>header(</span><span class="string">&quot;Connection:&nbsp;Keep-Alive&quot;</span><span>); &nbsp;</span></li><li><span>header(</span><span class="string">&quot;Proxy-Connection:&nbsp;Keep-Alive&quot;</span><span>); &nbsp;</span></li><li class="alt"><span class="keyword">for</span><span>(</span><span class="vars">$i</span><span>=0;&nbsp;</span><span class="vars">$i</span><span>&lt;1000;&nbsp;</span><span class="vars">$i</span><span>++)&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;print&nbsp;</span><span class="string">'fuck&nbsp;man!'</span><span>.</span><span class="vars">$i</span><span>.</span><span class="string">'&lt;br&gt;'</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="func">flush</span><span>(); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;sleep(3); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;clearstatcache(); &nbsp;</span></li><li><span>} &nbsp;</span></li><li class="alt"><span>?&gt;&nbsp;</span></li></ol></pre>
<p>&nbsp;</p>]]></description>
			<link>http://www.jackfeng.com/archives/1295/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-16 20:37</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1294/</guid>
			<title>php数组弹出最后一个</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>array_pop($GAMES)</p>
<p>这样就能把$GAMES里面的最后一个数组给弹显出来</p>
<p>然后$GAMES里面的内容就少了一个</p>]]></description>
			<link>http://www.jackfeng.com/archives/1294/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-16 11:05</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1292/</guid>
			<title>php 保留小数</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>$n=round(1.95583, 2); 保留两位小数+四舍五入</p>]]></description>
			<link>http://www.jackfeng.com/archives/1292/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-14 11:24</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1288/</guid>
			<title>smarty 数组输出</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>一般数字索引用section，常用来循环显示所取得的数据库多维结果数组，关联索引用foreach。 <br />
如果只是一维数组，直接{$数组.下标}就可取值，没必要循环取。 <br />
$uu[ 'kaixin ']= &quot;我的最大三定律肤色地方 &quot;; <br />
$uu[ 'io ']= &quot;111色地方 &quot;; <br />
$uu[ 'i2o ']= &quot;111111111色地方 &quot;; <br />
<br />
$smarty-&gt; assign( &quot;StieInfo &quot;,$uu); <br />
这种情况用foreach <br />
tpl: <br />
------------- <br />
{foreach &nbsp; item=value &nbsp; key=key &nbsp; from=$StieInfo} <br />
{$key} &nbsp; : &nbsp; {$value} <br />
{/foreach}</p>]]></description>
			<link>http://www.jackfeng.com/archives/1288/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-13 00:36</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1286/</guid>
			<title>PHP日期比较</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>竟然发现字符串直接去对比日期会犯错误结果-_-@</p>
<pre><ol class="dp-c"><li class="alt"><span><span>PHP里没有内置的日期比较函数,不过处理一下格式还是可以比较的,代码如下: &nbsp;</span></span></li><li><span class="vars">$date2</span><span>=&rdquo;2007-1-20&Prime;; &nbsp;</span></li><li class="alt"><span class="vars">$date</span><span>=&rdquo;2006-1-1&Prime;; &nbsp;</span></li><li><span>&nbsp;</span></li><li class="alt"><span class="keyword">if</span><span>(</span><span class="func">date</span><span>(&rdquo;Y-m-d&rdquo;,</span><span class="func">strtotime</span><span>(</span><span class="vars">$date</span><span>))&gt;</span><span class="func">date</span><span>(&rdquo;Y-m-d&rdquo;,</span><span class="func">strtotime</span><span>(</span><span class="vars">$date2</span><span>))){ &nbsp;</span></li><li><span class="func">echo</span><span>&nbsp;&ldquo;Y&rdquo;; &nbsp;</span></li><li class="alt"><span>} &nbsp;</span></li><li><span class="keyword">else</span><span>{ &nbsp;</span></li><li class="alt"><span class="func">echo</span><span>&nbsp;&ldquo;N&rdquo;; &nbsp;</span></li><li><span>} &nbsp;</span></li></ol></pre>
<p>&nbsp;</p>]]></description>
			<link>http://www.jackfeng.com/archives/1286/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-12 14:59</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1282/</guid>
			<title>php 编码输出设置</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>页面只输出了 汉字没有header的话 在ie里面有可能会输出乱码。所以得要用header定义一下</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&lt;?php&nbsp; &nbsp;</span></span></li><li><span>header(</span><span class="string">'Content-Type:&nbsp;text/html;&nbsp;charset=UTF-8'</span><span>);&nbsp; &nbsp;</span></li><li class="alt"><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;编码测试&quot;</span><span>;&nbsp; &nbsp;</span></li><li><span>?&gt; &nbsp;</span></li></ol></pre>
<p>&nbsp;</p>]]></description>
			<link>http://www.jackfeng.com/archives/1282/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-10 09:48</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1280/</guid>
			<title>用 PHPRPC 实现 Ajax 安全登录</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>昨天我举了个用 PHPRPC 实现 Ajax 级联下拉菜单 的例子，那个例子中我们重点要演示的是用 PHPRPC 实现 Ajax 效果是多么的简单。今天我们这个例子主要演示用 PHPRPC 内置的安全加密机制来实现安全登录是多么简单。当然它同样可以用于密码设置、其它关键保密数据的传输等领域。</p>
<p>&nbsp;</p>
<p>这个例子比昨天的例子还要简单，先来看服务器端：</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&lt;?php &nbsp;</span></span></li><li><span class="keyword">function</span><span>&nbsp;login(</span><span class="vars">$username</span><span>,&nbsp;</span><span class="vars">$password</span><span>)&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;((</span><span class="vars">$username</span><span>&nbsp;==&nbsp;</span><span class="string">&quot;root&quot;</span><span>)&nbsp;&amp;&amp;&nbsp;(</span><span class="vars">$password</span><span>&nbsp;==&nbsp;</span><span class="string">&quot;admin&quot;</span><span>))&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$_SESSION</span><span>[</span><span class="string">'user'</span><span>]&nbsp;=&nbsp;</span><span class="string">&quot;root&quot;</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;true; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$_SESSION</span><span>[</span><span class="string">'user'</span><span>]&nbsp;=&nbsp;null; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;false; &nbsp;</span></li><li class="alt"><span>} &nbsp;</span></li><li><span>&nbsp; &nbsp;</span></li><li class="alt"><span class="keyword">require_once</span><span>(</span><span class="string">&quot;phprpc_server.php&quot;</span><span>); &nbsp;</span></li><li><span class="keyword">new</span><span>&nbsp;phprpc_server(</span><span class="keyword">array</span><span>(</span><span class="string">'login'</span><span>)); &nbsp;</span></li><li class="alt"><span>?&gt;&nbsp;</span></li></ol></pre>
<p>&nbsp;</p>
<p>这段代码太简单了，我不需要多说什么大家也能够看明白。不过大家会发现，在 login 函数中我用了 $_SESSION 变量，但是并没有在什么位置上写 session_start()，原因在于建立加密连接时，已经自动调用了 session_start()，因此不需要再单独写 session_start() 了。为了验证它是否生效，我们在后面的另一个页面中（admin.php），将判断这里设置的 $_SESSION 变量，并根据它来报告登录成功或者没成功跳回到登录页面。</p>
<p>那再来看看客户端，客户端我们将 JavaScript 跟 HTML 分离了，先来看看 html 页面。</p>
<p>&nbsp;</p>
<pre><ol class="dp-xml"><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;</span></span></li><li><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;phprpc_client.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;login.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">align</span><span>=</span><span class="attribute-value">&quot;center&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span>帐号：</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;username&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;</span></li><li class="alt"><span>密码：</span><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;password&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;password&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;button&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;登录&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;loginbtn&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;</span></li><li class="alt"><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;</span></li></ol></pre>
<p>这个页面很简单，只是设置好了表单输入框和按钮，所有的处理都是在 login.js 中完成的。不过需要注意的是这里的 phprpc_client.js 是 full 压缩版本，因为我们需要用到它的加密传输功能。我们来看看 login.js 是怎么写的。</p>
<pre><ol class="dp-c"><li class="alt"><span><span class="comment">//&nbsp;创建&nbsp;phprpc&nbsp;客户端对象&nbsp;rpc </span><span>&nbsp;</span></span></li><li><span>phprpc_client.create(</span><span class="string">'rpc'</span><span>); &nbsp;</span></li><li class="alt"><span>&nbsp; &nbsp;</span></li><li><span class="comment">//&nbsp;初始化带有加密连接的&nbsp;rpc&nbsp;服务，第二个参数表示是否创建加密连接 </span><span>&nbsp;</span></li><li class="alt"><span>rpc.use_service(</span><span class="string">'rpc.php'</span><span>,&nbsp;</span><span class="keyword">true</span><span>); &nbsp;</span></li><li><span>&nbsp; &nbsp;</span></li><li class="alt"><span class="comment">//&nbsp;登录函数 </span><span>&nbsp;</span></li><li><span class="keyword">function</span><span>&nbsp;login()&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;如果加密连接已经初始化完毕，则验证用户名密码 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(rpc.ready)&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;获取用户输入的用户名和密码 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;username&nbsp;=&nbsp;document.getElementById(</span><span class="string">'username'</span><span>).value; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;password&nbsp;=&nbsp;document.getElementById(</span><span class="string">'password'</span><span>).value; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;设置远程过程调用为单向加密， </span><span>&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;即传递的参数是加密的，但返回结果不加密 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpc.encrypt&nbsp;=&nbsp;1; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;调用远程过程验证用户名密码是否正确，并设置回调函数。 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rpc.login(username,&nbsp;password,&nbsp;</span><span class="keyword">function</span><span>&nbsp;(result)&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;如果返回结果正确，则转到登录后的页面 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(result&nbsp;===&nbsp;</span><span class="keyword">true</span><span>)&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.replace(</span><span class="string">'admin.php'</span><span>); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;否则提示用户名密码不正确 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span class="string">'用户名密码不正确！'</span><span>); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;如果连接尚未初始化完毕，则等待&nbsp;100&nbsp;毫秒后重试。 </span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.setTimeout(</span><span class="string">'login();'</span><span>,&nbsp;100); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>} &nbsp;</span></li><li><span>&nbsp; &nbsp;</span></li><li class="alt"><span>window.onload&nbsp;=&nbsp;</span><span class="keyword">function</span><span>&nbsp;()&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span class="string">'loginbtn'</span><span>).onclick&nbsp;=&nbsp;login; &nbsp;</span></li><li class="alt"><span>}&nbsp;</span></li></ol></pre>
<p>大家会发现除了在调用 use_service 时，设置了第二个参数为 true 外，还在调用服务器端的 login 函数前，设置了 rpc.encrypt 的值为 1，这里 1 表示单向加密传输，单向加密传输是指调用的参数会以加密的方式传给服务器，但是返回的结果不加密（如果参数是引用参数的话，参数返回时也是加密的）。如果 rpc.encrypt 的值为 0，则表示不加密；如果是 2，则表示双向加密。</p>
<p>这里因为只有用户名和密码是敏感数据，需要保证它在传递给服务器时不被截获（即使截获也是加密的内容，无法破解），但返回的结果成功还是不成功并不是什么需要保密的数据，所以可以不加密。因此这里选择了单向加密传输。</p>
<p>大家也不必担心密钥是否会被截获，因为密钥是通过密钥交换算法，在服务器端和客户端（浏览器端）随机同步生成的，但没有经过网络传输，在网络上传输的是生成同步密钥的相关信息，但是只获取到这些信息是不足以算出密钥的，因此可以保证密钥的安全性。而加密算法本身也是一个强加密算法，密钥长度是 128 位，在没有密钥的情况下采用穷举法也是无法破解的。</p>
<p>大家会发现登录成功后，我们转向了 admin.php 页面，下面是这个页面的一个简单的例子：</p>
<pre><ol class="dp-c"><li class="alt"><span><span>&lt;?php &nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;session_start(); &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(</span><span class="vars">$_SESSION</span><span>[</span><span class="string">'user'</span><span>]&nbsp;==&nbsp;</span><span class="string">'root'</span><span>)&nbsp;{ &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="func">echo</span><span>&nbsp;</span><span class="string">&quot;登录成功！&quot;</span><span>; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header(</span><span class="string">&quot;Location:&nbsp;index.html&quot;</span><span>); &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;</span></li><li class="alt"><span>?&gt;&nbsp;</span></li></ol></pre>
<p>这里需要自己 sestion_start() 一下了，之后就可以验证 $_SESSION[&rsquo;user&rsquo;] 是否设置了。</p>
<p>通过 PHPRPC，你不再需要为 Ajax 程序中数据的安全性而头痛，也不必为回话支持而苦恼，这一切 PHPRPC 都已经帮你自动完成了，你只需要关注具体的事务就可以了。用 PHPRPC 来做 Ajax 安全编程，就是这么简单！</p>]]></description>
			<link>http://www.jackfeng.com/archives/1280/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-12-08 20:46</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1272/</guid>
			<title>php比较完美的Mail检测程序</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>&nbsp;找了好几个检测email地址的函数 只有下面这个接近完美！</p>
<pre><ol class="dp-c"><li class="alt"><span><span class="keyword">function</span><span>&nbsp;checkEmail(</span><span class="vars">$str</span><span>)&nbsp; &nbsp;</span></span></li><li><span>{ &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(</span><span class="func">eregi</span><span>(</span><span class="string">&quot;^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$&quot;</span><span>,&nbsp;</span><span class="vars">$str</span><span>))&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;true; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;false;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>}&nbsp;</span></li></ol></pre>
<p>&nbsp;</p>]]></description>
			<link>http://www.jackfeng.com/archives/1272/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-11-28 09:38</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1266/</guid>
			<title>phpmyadmin出现“无法载入mcrypt扩展，请检查PHP配置”</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>先用phpinfo();找出你的php.ini配置文件所在 然后打开编辑</p>
<p>搜索extension=php_mcrypt.dll把前面的;给去掉</p>
<p>修改完毕 就重启apache或者iis</p>]]></description>
			<link>http://www.jackfeng.com/archives/1266/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-11-24 10:37</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1265/</guid>
			<title>eclipse快捷键大全</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>eclipse快捷键大全</p><br /><br /><a href="http://www.jackfeng.com/archives/1265/" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.jackfeng.com/archives/1265/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-11-21 18:51</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1261/</guid>
			<title>php删除目录 复制目录 判断目录是否为空</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>php删除目录 复制目录 判断目录是否为空~~~~~~~~</p><br /><br /><a href="http://www.jackfeng.com/archives/1261/" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.jackfeng.com/archives/1261/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-11-20 17:39</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1260/</guid>
			<title>php中判断一个字符串包含另一个字符串的方法</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>php中判断一个字符串包含另一个字符串的方法</p>
<pre><ol class="dp-c"><li class="alt"><span><span class="vars">$name</span><span>&nbsp;=&nbsp;</span><span class="string">&quot;001x.gif&quot;</span><span>;&nbsp; &nbsp;</span></span></li><li><span class="vars">$pan</span><span>&nbsp;=&nbsp;</span><span class="string">&quot;x&quot;</span><span>;&nbsp; &nbsp;</span></li><li class="alt"><span class="vars">$con</span><span>&nbsp;=&nbsp;</span><span class="func">explode</span><span>(</span><span class="vars">$pan</span><span>,</span><span class="vars">$name</span><span>);&nbsp; &nbsp;</span></li><li><span class="keyword">if</span><span>&nbsp;(</span><span class="func">count</span><span>(</span><span class="vars">$con</span><span>)&gt;1):&nbsp; &nbsp;</span></li><li class="alt"><span class="func">echo</span><span>&nbsp;</span><span class="vars">$name</span><span>.</span><span class="string">&quot;中包含&quot;</span><span>.</span><span class="vars">$pan</span><span>;&nbsp; &nbsp;</span></li><li><span class="keyword">else</span><span>:&nbsp; &nbsp;</span></li><li class="alt"><span class="func">echo</span><span>&nbsp;</span><span class="vars">$name</span><span>.</span><span class="string">&quot;中没有包含&quot;</span><span>.</span><span class="vars">$pan</span><span>;&nbsp; &nbsp;</span></li><li><span class="keyword">endif</span><span>;&nbsp;&nbsp;</span></li></ol></pre>
<p>&nbsp;</p>]]></description>
			<link>http://www.jackfeng.com/archives/1260/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-11-17 17:57</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1250/</guid>
			<title>php 获得前一个月的月份</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>&nbsp;</p>
<pre><ol class="dp-c"><li class="alt"><span><span class="func">date</span><span>(</span><span class="string">&quot;Y.m&quot;</span><span>,</span><span class="func">strtotime</span><span>(</span><span class="string">&quot;-31&nbsp;days&quot;</span><span>)) &nbsp;</span></span></li></ol></pre>
<p>&nbsp;</p>]]></description>
			<link>http://www.jackfeng.com/archives/1250/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-11-14 14:39</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1240/</guid>
			<title>php 之动态变量用法</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">PHP代码</div>
<ol class="dp-c">
    <li class="alt"><span><span class="comment">//用{} </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="vars">$a1</span><span>=</span><span class="string">&quot;a11111&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$a2</span><span>=</span><span class="string">&quot;a22222&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="vars">$a3</span><span>=</span><span class="string">&quot;a33333&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="vars">$a4</span><span>=</span><span class="string">&quot;a44444&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">for</span><span>(</span><span class="vars">$i</span><span>=1;&nbsp;</span><span class="vars">$i</span><span>&lt;5;&nbsp;</span><span class="vars">$i</span><span>++){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="func">echo</span><span>&nbsp;${</span><span class="string">&quot;a&quot;</span><span>.</span><span class="vars">$i</span><span>}.</span><span class="string">&quot; </span>&nbsp;</li>
    <li><span><span class="string">&quot;</span><span>; &nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
    <li><span class="comment">//用eval() </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">for</span><span>(</span><span class="vars">$i</span><span>=1;&nbsp;</span><span class="vars">$i</span><span>&lt;5;&nbsp;</span><span class="vars">$i</span><span>++){ &nbsp;&nbsp;</span></li>
    <li><span class="func">eval</span><span>(</span><span class="string">&quot;\$a=\&quot;\$a$i\&quot;;print&nbsp;\$a.\&quot; </span>&nbsp;</li>
    <li class="alt"><span><span class="string">\&quot;;&quot;</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>?&gt; &nbsp;&nbsp;</span></li>
</ol>
</div>]]></description>
			<link>http://www.jackfeng.com/archives/1240/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-10-28 01:46</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1236/</guid>
			<title>php的函数执行速率问题</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>执行结果：</p>
<p>time1: 0.409836053848 ms<br />
time2: 0.399658918381 ms<br />
time3: 0.348029136658 ms</p><br /><br /><a href="http://www.jackfeng.com/archives/1236/" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.jackfeng.com/archives/1236/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-10-18 01:13</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1235/</guid>
			<title>dede跳转网址直接链接而非跳转</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>1、列表页的实现： <br />
<br />
/include/inc_arclist.php <br />
查找 <br />
$row['arcurl'] = $this-&gt;GetArcUrl( <br />
<br />
在前面加上： <br />
<br />
if($row['redirecturl']) $row['arcurl'] = $row['redirecturl']; else<br />
<br />
[无需修改其他地方] <br />
<br />
2、主页直接跳转的实现： <br />
<br />
/include/inc/inc_fun_SpGetArcList.php <br />
<br />
查找 <br />
<br />
$row['arcurl'] = GetFileUrl( <br />
<br />
在前面加上： <br />
<br />
if($row['redirecturl']) $row['arcurl'] = $row['redirecturl']; else <br />
<br />
同时再 查找 arc.shorttitle,arc.memberid, 后面加上 arc.redirecturl,</p>]]></description>
			<link>http://www.jackfeng.com/archives/1235/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-10-17 15:34</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1234/</guid>
			<title>php邮件发送</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>发送邮件的pear包里面的mail类</p><br /><br /><a href="http://www.jackfeng.com/archives/1234/" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.jackfeng.com/archives/1234/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-10-14 21:07</pubDate>
		</item>
		<item>
			<guid>http://www.jackfeng.com/archives/1233/</guid>
			<title>memcache的session出错问题[解决]</title>
			<author>小锋</author>
			<description><![CDATA[小锋堂 ( http://www.jackfeng.com/ ) : <p>session_start()&nbsp;&nbsp; <font color="#c0c0c0">^%&amp;*()</font>&nbsp; Failed to initialize storage module</p>
<p>以上这个问题竟然让我碰到了</p>
<p>现在php已经是采用了memcache来进行session的存储$%^&amp;*</p>
<p>昨天都好好的 今天也搞不清楚是怎么一回事就不行了 然后发现session不能被存储</p>
<p>查了一下问题是在php配置文件里面有几处要改</p>
<p>修改了php.ini里面的</p>
<p><font color="#ff0000">session.auto_start = 1<br />
session.save_path = tcp://127.0.0.1:11210<br />
session.save_handler = memcache</font></p>
<p><font color="#ff0000">就搞定了。-_-#</font></p>]]></description>
			<link>http://www.jackfeng.com/archives/1233/</link>
			<category domain="http://www.jackfeng.com/category/16/">PHP</category>
			<pubDate>2008-10-11 11:40</pubDate>
		</item>
	</channel>
</rss>
