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

<channel>
	<title>Wordpress外贸企业主题, Wp企业主题, wordpress主题定制,  PHP代码, ASP代码, 精选JS代码, WORDPRESS, 网站SEO,Flash焦点广告,JS焦点广告,CSS技巧 &#124; 酷码资源 &#187; PHP</title>
	<atom:link href="http://www.3code.cn/category/phpcode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.3code.cn</link>
	<description>Wordpress外贸企业主题, Wp企业主题, wordpress主题定制,  PHP代码,ASP代码,精选JS代码,WORDPRESS,网站SEO,Flash焦点广告,JS焦点广告,CSS技巧</description>
	<lastBuildDate>Fri, 30 Jul 2010 05:13:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>php缩略图程序</title>
		<link>http://www.3code.cn/php-thu/</link>
		<comments>http://www.3code.cn/php-thu/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 04:46:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP图片]]></category>
		<category><![CDATA[PHP图片上传]]></category>

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

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

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

		<guid isPermaLink="false">http://www.3code.cn/?p=1673</guid>
		<description><![CDATA[判断URL来路的PHP代码]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
$referer = $_SERVER['HTTP_REFERER'];<br />
echo $referer;<br />
if(!$referer == ""){<br />
                if(ereg('http',$referer)){<br />
    <br />
                                $referer = @explode('.',$referer);<br />
                                if(is_array($referer)){<br />
                                                $referer = $referer['1'];<br />
                                                if($referer == '9cweb'){<br />
?&gt;<br />
这里是想放的任何代码.<br />
&lt;?php</p>
<p>                                                }<br />
                                }<br />
                }<br />
}<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-url-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php数组与字符串互换</title>
		<link>http://www.3code.cn/php-implode-explode/</link>
		<comments>http://www.3code.cn/php-implode-explode/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 08:04:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1666</guid>
		<description><![CDATA[函数:implode()
--------------------------------------------------------------------------------
字符串处理函数库

implode
将数组变成字符串。

语法: string implode(string glue, array pieces);

返回值: 字符串

函数种类: 资料处理]]></description>
			<content:encoded><![CDATA[<p>函数:implode()<br />
--------------------------------------------------------------------------------<br />
字符串处理函数库</p>
<p>implode<br />
将数组变成字符串。</p>
<p>语法: string implode(string glue, array pieces);</p>
<p>返回值: 字符串</p>
<p>函数种类: 资料处理<br />
--------------------------------------------------------------------------------<br />
内容说明</p>
<p>本函数将数组的内容组合成一个字符串，参数 glue 是字之间的分隔符号。<br />
使用范例</p>
<p>&lt;?<br />
$colon_separated = implode(":", $array);<br />
echo $colon_separated;<br />
?&gt;</p>
<p>参考<br />
explode()  join()  split()<br />
--------------------------------------------------------------------------------<br />
函数:explode()<br />
--------------------------------------------------------------------------------</p>
<p>字符串处理函数库</p>
<p>explode<br />
切开字符串。</p>
<p>语法: array explode(string separator, string string);</p>
<p>返回值: 数组</p>
<p>函数种类: 资料处理</p>
<p>--------------------------------------------------------------------------------</p>
<p>内容说明</p>
<p>本函数将字符串依指定的字符串或字符 separator 切开。将切开后的字符串返回到数组变量中。</p>
<p>--------------------------------------------------------------------------------</p>
<p>使用范例</p>
<p>&lt;?<br />
$pizza = "第一片 第二片 第三片 第四片 第五片 第六片";<br />
$pieces = explode(" ", $pizza);<br />
?&gt;</p>
<p>参考<br />
implode()</p>
<p>--------------------------------------------------------------------------------<br />
函数:split()<br />
--------------------------------------------------------------------------------<br />
正则表达式函数库<br />
split<br />
将字符串依指定的规则切开。</p>
<p>语法: array split(string pattern, string string, int [limit]);</p>
<p>返回值: 数组</p>
<p>函数种类: 资料处理</p>
<p>内容说明<br />
本函数可将字符串依指定的规则分开。切开后的返回值为数组变量。参数 pattern 为指定的规则字符串、参数 string 则为待处理的字符串、参数 limit 可省略，表示欲处理的最多合乎值。值得注意的是本函数的 pattern 参数有区分大小写。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-implode-explode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery加载远程PHP文件</title>
		<link>http://www.3code.cn/jquery-load-phpfile/</link>
		<comments>http://www.3code.cn/jquery-load-phpfile/#comments</comments>
		<pubDate>Thu, 13 May 2010 09:09:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[精选JS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JS]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1648</guid>
		<description><![CDATA[最近有一个跨域加载远程PHP文件需求，需要将跨域远程的用户信息加载到本地使用，研究和参考相关资料，非常简单，其它后缀类似文件(asp,js)一样。
解决方案如下：需要两个文件：提供信息的PHP文件(访问的远程文件)，加载远程文件的JS文件(获取或处理远程信息)]]></description>
			<content:encoded><![CDATA[<p>最近有一个跨域加载远程PHP文件需求，需要将跨域远程的用户信息加载到本地使用，研究和参考相关资料，非常简单，其它后缀类似文件(asp,js)一样。</p>
<p>解决方案如下：</p>
<p>需要两个文件：提供信息的PHP文件(访问的远程文件)，加载远程文件的JS文件(获取或处理远程信息)</p>
<p>------------------------------------------------------------------</p>
<p>infoBox.php(提供远程信息，与JS文件不在同一域)</p>
<p>&lt;?php</p>
<p>$InfoBox = array('url'=&gt;'biuuu.com','title'=&gt;'必优博客');</p>
<p>echo 'var data=' . json_encode($InfoBox) . ';';</p>
<p>?&gt;</p>
<p>将数据组装数组，通过PHP内置函数json_encode将数组转化成json数组，方便数组内容被远程调用。</p>
<p>------------------------------------------------------------------</p>
<p>box.js(调用远程PHP文件JS类)</p>
<p>var box = {};</p>
<p>var remoteUrl = 'http://www.biuuu.com/infoBox.php';//远程调用URL</p>
<p>box.showBoxInfo = function() {</p>
<p>jQuery.getScript(remoteUrl, function(){</p>
<p>var boxInfoWrapper = jQuery('#boxInfoWrapper');</p>
<p>var html = box.getBoxHtml(data.url,data.title);</p>
<p>boxInfoWrapper.html(html);</p>
<p>});</p>
<p>}</p>
<p>box.getBoxHtml = function(url,title){</p>
<p>return '&lt;div&gt;&lt;a href="'+url+'"&gt;'+title+'&lt;/a&gt;&lt;/div&gt;';</p>
<p>}</p>
<p>remoteUrl就是前面infoBox.php的远程路径，通过getScript直接调用。其中boxInfoWrapper就是要显示信息 DIV的ID。</p>
<p>------------------------------------------------------------------</p>
<p>test.html(测试HTML文件，包含JQuery与前面的box.js类)</p>
<p>&lt;script src="jquery-1.2.6.js" type="text/javascript"&gt;&lt;/script&gt;</p>
<p>&lt;script src="box.js" type="text/javascript"&gt;&lt;/script&gt;</p>
<p>&lt;script type="text/javascript"&gt;</p>
<p>$(document).ready(function (){</p>
<p>box.showBoxInfo();</p>
<p>});</p>
<p>&lt;/script&gt;</p>
<p>&lt;div id="boxInfoWrapper"&gt;&lt;/div&gt;</p>
<p>jQuery.getScript跨域加载远程PHP文件实现过程非常简单，扩展性非常性，可以实现非常强大的功能，其它应用可以更深入的实践，供参考。</p>
<p>转载自 必优博客 http://www.biuuu.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/jquery-load-phpfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php mysql_affected_rows</title>
		<link>http://www.3code.cn/php-mysql_affected_rows/</link>
		<comments>http://www.3code.cn/php-mysql_affected_rows/#comments</comments>
		<pubDate>Thu, 06 May 2010 04:05:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1634</guid>
		<description><![CDATA[mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数 int mysql_affected_rows ( [resource link_identifier] ) 
取得最近一次与 link_identifier 关联的 INSERT，UPDATE 或 DELETE 查询所影响的记录行数。]]></description>
			<content:encoded><![CDATA[<p><strong>mysql_affected_rows</strong></p>
<div>(PHP 3, PHP 4, PHP 5)<br />
mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数</div>
<div><a name="AEN95945"></a></p>
<h2>说明</h2>
<p>int <strong>mysql_affected_rows</strong> ( [resource link_identifier] )</p>
<p>取得最近一次与 <var>link_identifier</var> 关联的    INSERT，UPDATE 或 DELETE 查询所影响的记录行数。</div>
<div><a name="AEN95955"></a></p>
<h2>参数</h2>
<div>
<dl>
<dt><var> link_identifier</var></dt>
<dd>MySQL 的连接标识符。如果没有指定，默认使用最后被 <strong>mysql_connect()</strong> 打开的连接。如果没有找到该连接，函数会尝试调用 <strong>mysql_connect()</strong> 建立连接并使用它。如果发生意外，没有找到连接或无法建立连接，系统发出 <tt><strong>E_WARNING</strong></tt> 级别的警告信息。</p>
</dd>
</dl>
</div>
</div>
<div><a name="AEN95967"></a></p>
<h2>返回值</h2>
<p>执行成功则返回受影响的行的数目，如果最近一次查询失败的话，函数返回 -1。</p>
<p>如果最近一次操作是没有任何条件（WHERE）的 DELETE    查询，在表中所有的记录都会被删除，但本函数返回值在 4.1.2 版之前都为 0。</p>
<p>当使用 UPDATE 查询，MySQL 不会将原值和新值一样的列更新。这样使得    <strong>mysql_affected_rows()</strong> 函数返回值不一定就是查询条件所符合的记录数，只有真正被修改的记录数才会被返回。</p>
<p>REPLACE 语句首先删除具有相同主键的记录，然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。</p></div>
<div><a name="AEN95974"></a></p>
<h2>范例</h2>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<div><a name="AEN95977"></a><strong>例子 1. <strong>mysql_affected_rows()</strong> 例子</strong></p>
<table border="0" cellpadding="5" bgcolor="#e0e0e0">
<tbody>
<tr>
<td><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?php<br />
$link </span><span style="color: #007700;">= </span><span style="color: #0000bb;">mysql_connect</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'localhost'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'mysql_user'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'mysql_password'</span><span style="color: #007700;">);<br />
if (!</span><span style="color: #0000bb;">$link</span><span style="color: #007700;">) {<br />
die(</span><span style="color: #dd0000;">'Could not connect: ' </span><span style="color: #007700;">. </span><span style="color: #0000bb;">mysql_error</span><span style="color: #007700;">());<br />
}<br />
</span><span style="color: #0000bb;">mysql_select_db</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'mydb'</span><span style="color: #007700;">);</p>
<p></span><span style="color: #ff8000;">/* 本例返回被删除记录的准确数目 */<br />
</span><span style="color: #0000bb;">mysql_query</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'DELETE FROM mytable WHERE id &lt; 10'</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">printf</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"Records deleted: %d\n"</span><span style="color: #007700;">, </span><span style="color: #0000bb;">mysql_affected_rows</span><span style="color: #007700;">());</p>
<p></span><span style="color: #ff8000;">/* 对于非真值的 WHERE 子句，应返回 0 */<br />
</span><span style="color: #0000bb;">mysql_query</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'DELETE FROM mytable WHERE 0'</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">printf</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"Records deleted: %d\n"</span><span style="color: #007700;">, </span><span style="color: #0000bb;">mysql_affected_rows</span><span style="color: #007700;">());<br />
</span><span style="color: #0000bb;">?&gt;</span> </span> </code></td>
</tr>
</tbody>
</table>
<p>上例的输出类似于：</p>
<table border="0" cellpadding="5" bgcolor="#e0e0e0">
<tbody>
<tr>
<td>
<pre>Records deleted: 10
Records deleted: 0</pre>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<div><a name="AEN95984"></a><strong>例子 2. 使用事务处理的 <strong>mysql_affected_rows()</strong> 例子</strong></p>
<table border="0" cellpadding="5" bgcolor="#e0e0e0">
<tbody>
<tr>
<td><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;?php<br />
$link </span><span style="color: #007700;">= </span><span style="color: #0000bb;">mysql_connect</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'localhost'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'mysql_user'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'mysql_password'</span><span style="color: #007700;">);<br />
if (!</span><span style="color: #0000bb;">$link</span><span style="color: #007700;">) {<br />
die(</span><span style="color: #dd0000;">'Could not connect: ' </span><span style="color: #007700;">. </span><span style="color: #0000bb;">mysql_error</span><span style="color: #007700;">());<br />
}<br />
</span><span style="color: #0000bb;">mysql_select_db</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'mydb'</span><span style="color: #007700;">);</p>
<p></span><span style="color: #ff8000;">/* Update records */<br />
</span><span style="color: #0000bb;">mysql_query</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"UPDATE mytable SET used=1 WHERE id &lt; 10"</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">printf </span><span style="color: #007700;">(</span><span style="color: #dd0000;">"Updated records: %d\n"</span><span style="color: #007700;">, </span><span style="color: #0000bb;">mysql_affected_rows</span><span style="color: #007700;">());<br />
</span><span style="color: #0000bb;">mysql_query</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"COMMIT"</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">?&gt;</span> </span> </code></td>
</tr>
</tbody>
</table>
<p>上例的输出类似于：</p>
<table border="0" cellpadding="5" bgcolor="#e0e0e0">
<tbody>
<tr>
<td>
<pre>Updated Records: 10</pre>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div><a name="AEN95990"></a></p>
<h2>注释</h2>
<div>
<blockquote><p><strong>事务处理: </strong> 如果使用事务处理（transactions），需要在 INSERT，UPDATE 或 DELETE 查询后调用     <strong>mysql_affected_rows()</strong> 函数，而不是在 COMMIT 命令之后。</p></blockquote>
</div>
<div>
<blockquote><p><strong>SELECT 语句: </strong> 要获取 SELECT 所返回的行数，可以用     <strong>mysql_num_rows()</strong>。</p></blockquote>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-mysql_affected_rows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>htaccess RewriteRule伪静态写法实例</title>
		<link>http://www.3code.cn/htaccess-rewriterule/</link>
		<comments>http://www.3code.cn/htaccess-rewriterule/#comments</comments>
		<pubDate>Sun, 02 May 2010 16:37:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[大杂汇]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1632</guid>
		<description><![CDATA[htaccess RewriteRule伪静态写法实例]]></description>
			<content:encoded><![CDATA[<p>RewriteEngine On<br />
ReWriteRule ^([0-9]+)$ $1.php<br />
ReWriteRule ^([a-z]+)$ $1.php<br />
如/news    会解析为news.php</p>
<p>无参数<br />
RewriteRule /index.html /index.php</p>
<p>一个参数<br />
RewriteRule /bulletin_([0-9]+).html /index.php?gOo=article_list.dwt&amp;acat=1&amp;p=$1</p>
<p>二个参数<br />
RewriteRule ^(.*)/article-([0-9]+)(.*)\.html$  $1/article.php?id=$2  [I]</p>
<p>多个参数<br />
RewriteRule ^(.*)/article_cat-([0-9]+)-([0-9]+)-(.+)-([a-zA-Z]+)(.*)\.html$  $1/article_cat.php?id=$2&amp;page=$3&amp;sort=$4&amp;order=$5  [I]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/htaccess-rewriterule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excel xls 导入到mysql的一种方法</title>
		<link>http://www.3code.cn/excel-xls-to-mysql/</link>
		<comments>http://www.3code.cn/excel-xls-to-mysql/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 10:42:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP数据库操作]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1629</guid>
		<description><![CDATA[有一个xls表格很多数据，需要导入到mysql数据库中。在网上搜索了一个比较可行的方法，列出来大家看下：
1. 首先打开excel, 用EXCEL对每行记录生成SQL语句：
2. 第一行数据生成后，利用excel的向下复制的功能，向下拉出其它行的数据。]]></description>
			<content:encoded><![CDATA[<p>有一个xls表格很多数据，需要导入到mysql数据库中。在网上搜索了一个比较可行的方法，列出来大家看下：</p>
<p><strong>1. 首先打开excel, 用EXCEL对每行记录生成SQL语句：<br />
</strong><br />
语法是：=CONCATENATE("insert into ip (a1,a2,a3) values ('",A1,"','",B1,"','",C1,"');")<br />
选中数据列右边的一个空白单元格，在excel地址栏中输入以上语句。<br />
其中a1,a2,a3是字段名称，A1,B1,C1是从单元格中获取的数据。<br />
<strong><br />
2. 第一行数据生成后，利用excel的向下复制的功能，向下拉出其它行的数据。</p>
<p>3. 对生成的数据列复制到记事本中，或者直接复制到phpmyadmin的导入的文本框中，利用phpmyadmin导入到mysql中即可。</strong></p>
<p>以上是全部。</p>
<p>欢迎大家讨论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/excel-xls-to-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php字符串操作函数分析与举例</title>
		<link>http://www.3code.cn/php-str-functions/</link>
		<comments>http://www.3code.cn/php-str-functions/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 10:36:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 函数]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1612</guid>
		<description><![CDATA[php字符串操作函数分析与举例, 两个以上的字符串连接用"."操作符，依字符串的顺序形成新的字符串。 这里用到了初始化，是因为未定义变量在使用时会产生一个notice错误，""或者null可以简单地代表空字符串。]]></description>
			<content:encoded><![CDATA[<p><strong>连接</strong><br />
两个以上的字符串连接用"."操作符，依字符串的顺序形成新的字符串。<br />
$str = "i " . "love " . "iwind";<br />
这里的$str 就是 "i love iwind";字符串。当然，还可以使用 .= 操作符:<br />
$str = ""; // 初始化<br />
$str .= "i love iwind";</p>
<p>这里用到了初始化，是因为未定义变量在使用时会产生一个notice错误，""或者null可以简单地代表空字符串。</p>
<p><strong>长度</strong><br />
PHP提供strlen函数来计算字符串的长度:<br />
$str = "test";<br />
echo strlen($str); // 将输出 4<br />
有点奇怪的是strlen将中日等汉字以及全角字符都当作两个或四个长度计算。好在mbstring或icon两个函数可以帮助解决这个问题，比如:<br />
$len = iconv_strlen($str, "GBK");<br />
$len = mb_strlen($str, "GBK");<br />
注:mbstring模块提供了大量的对含有多字节字符的字符串的处理函数，推荐多加应用，由于这篇文章讲的是字符串入门，所以不打算详细解说。</p>
<p><strong>分隔与连接</strong><br />
PHP允许你把一个字符串按照一个分隔符进行分隔成一个数组，或者将一个数组组合成一个字符串。看下面的例子：<br />
$str = "i love iwind";<br />
$array = explode(" ", $str);<br />
上面的explode函数，就把$str字符串按空格字符进行分隔，结果返回一个数组 $array:array("i", "love", "iwind").与explode函数有类似功能的有：preg_split(), spliti(), split()等函数。</p>
<p>与此相反的，implode和join则能把一个数组结合成一个字符串，他们是具有完全相同功能的函数。<br />
$array = array("i", "love", "iwind");<br />
$str = implode(" ", $array);<br />
例中的implode函数将数组$array的每个元素用空格字符进行连接，返回一个字符串 $str： "i love iwind".<br />
<strong><br />
裁剪</strong><br />
一个字符串首和尾，可能不是你想要的部分，就可以用trim,rtrim,ltrim等函数,分别去除一个字符串两端空格，一个字符串尾部空格，一个字符串首部空格。<br />
echo trim(" i love iwind "); // 将得到 "i love iwind"<br />
echo rtrim(" i love iwind "); // 将得到 " i love iwind"<br />
echo ltrim(" i love iwind "); // 将得到 "i love iwind "<br />
其实这三个参数不仅可以去除字符串首尾的空格，还可以去除它们的第二个参数指定的字符，如:<br />
echo trim(",1,2,3,4,", ","); // 将得到 1,2,3,4 两端的","号被裁掉了。</p>
<p>有时还会看到有人使用chop这个函数，其实它是rtrim的同义函数。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-str-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP查询字符串进行url编码</title>
		<link>http://www.3code.cn/php-url/</link>
		<comments>http://www.3code.cn/php-url/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 10:29:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1608</guid>
		<description><![CDATA[php 对查询字符串进行url编码]]></description>
			<content:encoded><![CDATA[<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;
&lt;title&gt;对查询字符串进行url编码&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table width="250" height="75" border="0" align="center" cellpadding="0" cellspacing="0"&gt;
  &lt;tr&gt;
    &lt;td bgcolor="#0000FF"&gt;
    &lt;table width="250" height="75" border="0" align="center" cellpadding="0" cellspacing="1"&gt;
      &lt;tr&gt;
        &lt;td bgcolor="#0066FF"&gt;&lt;div align="center"&gt;查询字符串的url编码&lt;/div&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td bgcolor="#FFFFFF"&gt;&lt;div align="center"&gt;当前页：&lt;?php echo urldecode($_GET[page]);?&gt;&lt;/div&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td bgcolor="#FFFFFF"&gt;&lt;div align="center"&gt;
&lt;a href=index.php?page=&lt;?php echo urlencode("首页")?&gt;&gt;首页&lt;/a&gt;&amp;nbsp;
&lt;a href=index.php?page=&lt;?php echo urlencode("前一页")?&gt;&gt;前一页&lt;/a&gt;&amp;nbsp;
&lt;a href=index.php?page=&lt;?php echo urlencode("后一页")?&gt;&gt;后一页&lt;/a&gt;&amp;nbsp;
&lt;a href=index.php?page=&lt;?php echo urlencode("尾页")?&gt;&gt;尾页&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>全球著名 CMS 产品大全</title>
		<link>http://www.3code.cn/cms-pro/</link>
		<comments>http://www.3code.cn/cms-pro/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 04:19:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[大杂汇]]></category>
		<category><![CDATA[网站优化]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1596</guid>
		<description><![CDATA[全球知名的 CMS 厂商超过 1000 家，他们的产品各有特色，从浩如烟海的 CMS 产品中选出一款适合自己的，是非常困难的事，世界上甚至存在专门帮助用户选择 CMS 产品的顾问咨询机构，如 CMS Watch，关于 CMS 产品的选择，一个最基本的原则是，如果有简单的，就不要去用复杂的，即使复杂的功能更多。你需要注意，世界上有三五页规模的网站，也有几百万，几千万页的网站，一些 CMS 产品是为大规模网站设计的，如果您的网站，象95%的网站那样，仅仅是一种中小规模的内容展示场所，你根本就不应该去考虑那些超级 CMS 系统。]]></description>
			<content:encoded><![CDATA[<p>全球知名的 CMS 厂商超过 1000 家，他们的产品各有特色，从浩如烟海的 CMS 产品中选出一款适合自己的，是非常困难的事，世界上甚至存在专门帮助用户选择 CMS 产品的顾问咨询机构，如 CMS Watch，关于 CMS 产品的选择，一个最基本的原则是，如果有简单的，就不要去用复杂的，即使复杂的功能更多。你需要注意，世界上有三五页规模的网站，也有几百万，几千万页的 网站，一些 CMS 产品是为大规模网站设计的，如果您的网站，象95%的网站那样，仅仅是一种中小规模的内容展示场所，你根本就不应该去考虑那些超级 CMS 系统。</p>
<p>同时，有的 CMS 是支持或者需要二次开发的，比如几乎所有的开源 CMS 系统，在应用这些 CMS 系统之前，你必须对自己的能力和时间做一个估测，如果您是网站设计商，你为大量的客户设计网站，这时，你应该考虑那些著名的开源 CMS  系统，它们充裕的功能和二次开发能力可以让你得心应手，即使你需要花几个月或者半年来研究这些灵活的 CMS 系统。</p>
<p>如果你自己就是网站所有者，你想自己设计网站，比如，假设你是企业主或这方面的主管，你肯定没有几个月的空余时间去研究开源系统，这时，你最好的选择，就是简单易用的小型商业 CMS 系统，他们价格不贵，功能够用，最好的是，你差不多用半天就知道该怎么用了。</p>
<p>如果你是运营性网站，象 AOL 或 Sina 那样，毫无疑问，你需要一套价格高达几十万到几百万美金大型 CMS 系统，这样的系统在性能，并发访问量，稳固性，后台数据库的效率等方面有着非常苛刻的要求，我们在后面列出的国外大型商业CMS系统就是为这个预备的。</p>
<p>下面是全球最著名 CMS 产品和厂商列表，该列表以国外，国内，开源，商业划分，对商业 CMS 系统，又按规模进行划分，这些数据来源包括 CMS Watch, Open Source CMS, CMS Matrix 等媒体或网站。</p>
<p><strong>开源 Portal 型 CMS</strong></p>
<ul>
<li><a href="http://www.xoops.org/">Xoops</a></li>
<li><a href="http://plone.org/">Plone</a></li>
<li><a href="http://www.joomla.org/">Joomla!</a></li>
<li><a href="http://drupal.org/">Drupal</a></li>
<li><a href="http://www.zope.org/">Zope</a></li>
<li><a href="http://www.cmsmadesimple.org/">CMS Made Simple</a></li>
<li><a href="http://modxcms.com/">MODX</a></li>
<li><a href="http://source.mambo-foundation.org/">Mambo</a></li>
<li><a href="http://www.phpnuke.org/">PHP Nuke</a></li>
</ul>
<p><strong>开源 Blog 型 CMS</strong></p>
<ul>
<li><a href="http://wordpress.org/">Word Press</a></li>
</ul>
<p><strong>开源 wiki 型 CMS</strong></p>
<ul>
<li><a href="http://www.mediawiki.org/">Mediawiki</a></li>
</ul>
<p><strong>国外的大型商业 CMS</strong></p>
<ul>
<li><a href="http://www.vignette.com/contentmanagement/0,2097,1-1-1928-4149-1966-4150,00.html">Vignette Content Management</a> （美国）</li>
<li><a href="http://software.emc.com/products/product_family/documentum_family.htm">EMC Documentum</a> （美国）</li>
<li><a href="http://www-306.ibm.com/software/info/ecatalog/en_US/products/Z106182W88870K64.jsp?S_TACT=none&amp;S_CMP=none&amp;EO=VNM&amp;CC=Vietnam&amp;VP=&amp;incDir=us&amp;pt=jsp">IBM Workplace WCM</a> （美国）</li>
<li><a href="http://www.reddot.com/products_web_content_management.htm">Reddot CMS</a> （德国）</li>
<li><a href="http://www.interwoven.com/products/">Interwoven ECM</a> （美国）</li>
<li><a href="http://www.stellent.com/stellent3/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=64&amp;ssSourceNodeId=7">Oracle Stellent Web Content Management</a> （美国）</li>
</ul>
<p><strong>国外的重量级商业 CMS</strong></p>
<ul>
<li><a href="http://www.tridion.com/Products/R5/Overview.asp">Tridion R5.2</a> （荷兰）</li>
<li><a href="http://www.coremedia.com/en/67852/cms/">CoreMedia CMS 2006</a> （德国）</li>
<li><a href="http://www.fatwire.com/">Fatwire Content Server</a> （美国）</li>
<li><a href="http://www.percussion.com/products/content-management/rhythmyx/">Percussion Rhythmyx</a> （美国）</li>
<li><a href="http://www.day.com/content/site/en/index/products/content-centric_applications/overview.html">Day Software Communique</a> （瑞士）</li>
<li><a href="http://www.hellomorello.com/">MediaSurface Morello</a> （英国）</li>
</ul>
<p><strong>国外的轻量级商业 <a href="http://www.comsharp.com/">CMS</a></strong></p>
<ul>
<li><a href="http://www.microsoft.com/office/sharepoint/prodinfo/demo.mspx">Microsoft SharePoint</a> （美国）</li>
<li><a href="http://www.sitecore.net/Products.aspx">Sitecore Content Manager</a> （丹麦）</li>
<li><a href="http://www.escenic.com/">ESCENIC</a> （挪威）</li>
<li><a href="http://www.serena.com/Products/collage/home.asp">Collage</a> （美国）</li>
<li><a href="http://www1.paperthin.com/products/index.cfm">CommonSpot Content Server</a> （美国）</li>
<li><a href="http://www.ingeniux.com/x628.xml">Ingeniux Content Management System </a>（美国）</li>
<li><a href="http://www.ektron.com/web-content-management-solutions.aspx">CMS400.NET</a> （美国）</li>
<li><a href="http://www.cmswatch.com/CMS/Vendors/www.firstspirit.de">E-Spirit FIRSTspirit</a>（德国）</li>
<li><a href="http://www.hotbanana.com/products/web-content-management-suite/">Hot Banana Web Content Management Suite</a> （加拿大）</li>
<li><a href="http://www.episerver.com/en/">EPiServer</a> （瑞典）</li>
<li><a href="http://www.refreshsoftware.com/SR2">Refresh Software SR2</a> （美国）</li>
<li><a href="http://www.gossinteractive.com/index.cfm?articleid=1941">GOSS iCM</a> （英国）</li>
<li><a href="http://www.hannonhill.com/products/cascade-server/index.html">Hannon Hill Casecade Server</a>（美国）</li>
<li><a href="http://immediacy.co.uk/products/content_management.aspx">Immediacy</a> （英国）</li>
<li><a href="http://www.terminalfour.com/products/">Terminal Four Site Manager</a> （爱尔兰）</li>
<li><a href="http://www.enonic.com/page?id=841">Enonic Vertical Site</a> （挪威）</li>
<li><a href="http://www.synkron.com/">Synkron Via</a> （丹麦）</li>
</ul>
<p><strong>国内的商业与开源 <a href="http://www.comsharp.com/">CMS</a></strong></p>
<ul>
<li><a href="http://www.turbocms.com/">TurboCMS</a></li>
<li><a href="http://www.powereasy.net/">动易内容管理系统</a></li>
<li><a href="tp://www.phome.net">帝国网站管理系统 ECMS</a></li>
<li><a href="http://www.supesite.com/">SupeSite 社区门户系统</a></li>
<li><a href="http://www.comsharp.com/">COMSHARP CMS - 锐商企业CMS</a></li>
<li><a href="http://www.phpcms.cn/">phpcms 网站管理系统</a></li>
<li><a href="http://www.dedecms.com/">dedecms 织梦网站管理系统</a> （开源）</li>
<li><a href="http://www.verycms.net/">verycms 内容管理系统</a></li>
<li><a href="http://www.joekoe.net/">Joekoe CMS乔客网</a></li>
<li><a href="http://www.jfcms.net/">渐飞网站管理系统</a></li>
<li><a href="http://www.siteserver.cn/">SiteServer CMS网站管理系统</a></li>
<li><a href="http://www.xmlasp.net/">.Net动网新闻</a></li>
<li><a href="http://www.hbcms.com/">宏博内容管理系统</a></li>
</ul>
<p>From: http://www.comsharp.com/GetKnowledge/zh-CN/CMS_K235.aspx</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/cms-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP使用MYSQL数据库全攻略</title>
		<link>http://www.3code.cn/asp-mysql/</link>
		<comments>http://www.3code.cn/asp-mysql/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 10:10:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[asp数据库]]></category>
		<category><![CDATA[PHP数据库操作]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1579</guid>
		<description><![CDATA[MYSQL数据库以它短小、方便、速度快、免费等优点成为很多网站目前首选数据库，但一般都是用PHP+MYSQL相结合来开发各种动态页面，其实ASP也可以使用MYSQL数据库开发动态页面，小弟我也是刚刚学会，不敢独享，所以特写了这篇文章供大伙参考。]]></description>
			<content:encoded><![CDATA[<p>MYSQL数据库以它短小、方便、速度快、免费等优点成为很多网站目前首选数据库，但一般都是用PHP+MYSQL相结合来开发各种动态页面，其实ASP也可以使用MYSQL数据库开发动态页面，小弟我也是刚刚学会，不敢独享，所以特写了这篇文章供大伙参考。</p>
<p>我的环境是WINDOWS98+PWS4.0+mysql-3.23.32-win+PHP4<br />
必要的软件：PWS4.0（呵呵，废话）<br />
mysql-3.23.32-win（这个是最新版的）<br />
myodbc-2.50.36-dll（这个是最重要的，MYSQL ODBC的驱动程序，可以到www.mysql.com下载）<br />
第一步：安装MYSQL ODBD的驱动程序，将下载的myodbd-2.50.46-dll文件复制到windows\system目录下(windows2000<br />
是winnt/system32)<br />
然后建立一新文件，扩展名为reg（就是注册表文件）,将以下内容复制到该文件中。<br />
REGEDIT4</p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\myodbc driver]<br />
"UsageCount"=dword:00000002<br />
"Driver"="C:\\WINDOWS\\System\\myodbc.dll"<br />
"Setup"="C:\\WINDOWS\\System\\myodbc.dll"<br />
"SQLLevel"="1"<br />
"FileUsage"="0"<br />
"DriverODBCVer"="02.50"<br />
"ConnectFunctions"="YYY"<br />
"APILevel"="1"<br />
"CpTimeout"="120"<br />
[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]<br />
"myodbc driver"="installed"</p>
<p>保存后双击该文件，将上面代码注册到WINDOWS注册表中。<br />
如果安装在windows2000中,则Driver和Setup主键的值要做相应改变，这里我想就不用多说了。<br />
如果成功，在控制面板/ODBD数据源的驱动程序里将看到myodbd driver这一项！</p>
<p>第二步：建立ASP文件链接数据库。<br />
这里有两种方法，一种是在ODBC数据源中建立一个系统DSN。后来我发现不建立也可以在ASP中使用MYSQL,方<br />
法在下文将讲道。<br />
打开控制面板/ODBD数据源，选择系统DSN,然后添加一个新的DSN,驱动程序选择myodbd driver,会出现一个对<br />
话框供输入mysql<br />
相关信息。<br />
Windows DSN name: 所要建立DSN的名称<br />
Mysql Host (name or ip):Mysql服务器的名称或者是IP地址，通常填localhost<br />
Mysql database name:需要使用数据库的名称，数据库在Mysql管理程序中建立。这里我们使用一个例子。数<br />
据库名：hc188<br />
里面有数据表：user 数据表有两个字段分别是：username和password,随便插入几个<br />
数据。<br />
user:链接数据库的用户名，我填的是root超级用户<br />
password:链接数据库用户密码，如果没有，可以不填<br />
Port(if not 3306)：Mysql在服务器的端口，如果不填默认为3306<br />
SQL command on connect:使用sql命令链接数据库，这项可以不填<br />
填写完毕后选择OK保存。</p>
<p>下面链接数据库的ASP代码！</p>
<p>&lt;%<br />
strConnection = "dsn=hc188;driver={myodbd driver};server=localhost;uid=root;pwd=;database=hc188"<br />
Set adoDataConn = Server.CreateObject("ADODB.Connection")<br />
adoDataConn.Open strConnection</p>
<p>strQuery = "SELECT * FROM user"<br />
Set rs = adoDataConn.Execute(strQuery)<br />
If Not rs.BOF Then<br />
%&gt;<br />
&lt;TABLE&gt;<br />
&lt;TR&gt;<br />
&lt;TD&lt;b&gt;username&lt;/b&gt;&lt;/TD&gt;<br />
&lt;TD&gt;&lt;b&gt;password&lt;/b&gt;&lt;/TD&gt;<br />
&lt;/TR&gt;<br />
&lt;%<br />
Do While Not rs.EOF<br />
%&gt;<br />
&lt;TR&gt;<br />
&lt;TD&gt;&lt;%=rs("username")%&gt;&lt;/TD&gt;<br />
&lt;TD&gt;&lt;%=rs("password")%&gt;&lt;/TD&gt;<br />
&lt;/TR&gt;<br />
&lt;%<br />
rs.MoveNext<br />
Loop<br />
%&gt;<br />
&lt;/TABLE&gt;<br />
&lt;%<br />
Else<br />
Response.Write("Sorry, no data found.")<br />
End If</p>
<p>rs.Close<br />
adoDataConn.Close<br />
Set adoDataConn = Nothing<br />
Set rsEmailData = Nothing<br />
%&gt;</p>
<p>第二种方法：我在使用中想过如果不建立系统DSN，是否也可以使用MYSQL数据库呢？结果是可以的。<br />
方法很简单，把上面ASP代码第二行代码改为：<br />
strconnection="DefaultDir=;Driver={myodbc driver};database=hc188"</p>
<p>我奇怪的发现，这种方法连用户名和密码都不需要就可以使用。是不是MYSQL的一个BUG呢？</p>
<p>以上代码全部经测试通过！</p>
<p>到此，全文结束了，是不是很简单呢！希望能帮上你！</p>
<p>做人要厚道，请注明转自酷网动力(www.ASPCOOL.COM)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/asp-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP发送邮件乱码的具体解决方法</title>
		<link>http://www.3code.cn/php-mail-code/</link>
		<comments>http://www.3code.cn/php-mail-code/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 09:47:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1573</guid>
		<description><![CDATA[PHP发送邮件乱码的具体解决方法]]></description>
			<content:encoded><![CDATA[<p>我们曾经在前面一些文章中具体介绍了PHP发送邮件的相关方法和函数的使用。但是在实际操作过程中也还会遇到一些问题，比如会出现PHP发送邮件乱码这样的问题。<br />
&lt;p&gt;下面这段代码就是PHP发送邮件乱码的具体解决方法的示例：&lt;/p&gt;<br />
&lt;ol&gt;<br />
&lt;li&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;?php &lt;/li&gt;<br />
&lt;li&gt;$name=$_POST['name']; &lt;/li&gt;<br />
&lt;li&gt;$mail=$_POST['mail']; &lt;br&gt;<br />
$content=$_POST['content']; &lt;/li&gt;<br />
&lt;li&gt;$subject='测试专用'; &lt;br&gt;<br />
$body=&amp;quot;来自：姓名&amp;quot;;&lt;br&gt;$headers　=&amp;quot;MIME-Version:1.0\r\n&amp;quot;; &lt;/li&gt;<br />
&lt;li&gt;$headers.='Content-type:text/html;charset=utf-8'.&amp;quot;\r\n&amp;quot;;<br />
&lt;br&gt;<br />
$headers.=&amp;quot;Content-Transfer-Encoding:8bit\r\n&amp;quot;; &lt;/li&gt;<br />
&lt;li&gt;if(mail('*****@qq.com',&lt;br&gt;<br />
$subject,$body,$header)){ echo'success'; &lt;/li&gt;<br />
&lt;li&gt;}else{ echo'fail'; &lt;/li&gt;<br />
&lt;li&gt;} &lt;strong&gt;?&amp;gt;&lt;/strong&gt;<br />
&lt;/li&gt;<br />
&lt;/ol&gt;<br />
&lt;p&gt;希望同构对这段代码的了解，大家能避免PHP发送邮件乱码这种情况的出现。</p>
<p>from: http://www.pcjcw.com/website/php/17364.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-mail-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authorize.Net PHP权威支付接口</title>
		<link>http://www.3code.cn/authorize-net-php/</link>
		<comments>http://www.3code.cn/authorize-net-php/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 09:34:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1569</guid>
		<description><![CDATA[Authorize.Net PHP权威支付接口]]></description>
			<content:encoded><![CDATA[<p>&lt;?PHP<br />
$loginID        = "API_LOGIN_ID";<br />
$transactionKey = "TRANSACTION_KEY";<br />
$amount         = "19.99";<br />
$description     = "Sample Transaction";<br />
$label             = "Submit Payment"; // The is the label on the 'submit' button<br />
$testMode        = "false";   // 是否开启测试功能， 如果开启，则网上付款都是测试，paypal也有此功能，只是方式不一样<br />
$url            = "https://test.authorize.net/gateway/transact.dll"; //  这个是测试地址，实际付款地址为：    $url = "https://secure.authorize.net/gateway/transact.dll"</p>
<p>// If an amount or description were posted to this page, the defaults are overidden<br />
if ($_REQUEST["amount"])<br />
{ $amount = $_REQUEST["amount"]; }<br />
if ($_REQUEST["description"])<br />
{ $description = $_REQUEST["description"]; }</p>
<p>// an invoice is generated using the date and time<br />
$invoice    = date(YmdHis);<br />
// a sequence number is randomly generated<br />
$sequence    = rand(1, 1000);<br />
// a timestamp is generated<br />
$timeStamp    = time ();</p>
<p>if( phpversion() &gt;= '5.1.2' )<br />
{    $fingerprint = hash_hmac("md5", $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey); }<br />
else<br />
{ $fingerprint = bin2hex(mhash(MHASH_MD5, $loginID . "^" . $sequence . "^" . $timeStamp . "^" . $amount . "^", $transactionKey)); }</p>
<p>echo "Amount: $amount &lt;br /&gt;";<br />
echo "Description: $description &lt;br /&gt;";</p>
<p>// 创建html 表单，里面包含了必须的SIM 内容</p>
<p>echo "&lt;FORM method='post' action='$url' &gt;";<br />
// Additional fields can be added here as outlined in the SIM integration guide<br />
// at: http://developer.authorize.net<br />
echo "    &lt;INPUT type='hidden' name='x_login' value='$loginID' /&gt;";             // ID<br />
echo "    &lt;INPUT type='hidden' name='x_amount' value='$amount' /&gt;";             // 付款金额<br />
echo "    &lt;INPUT type='hidden' name='x_description' value='$description' /&gt;";   // 描述<br />
echo "    &lt;INPUT type='hidden' name='x_invoice_num' value='$invoice' /&gt;";<br />
echo "    &lt;INPUT type='hidden' name='x_fp_sequence' value='$sequence' /&gt;";<br />
echo "    &lt;INPUT type='hidden' name='x_fp_timestamp' value='$timeStamp' /&gt;";<br />
echo "    &lt;INPUT type='hidden' name='x_fp_hash' value='$fingerprint' /&gt;";<br />
echo "    &lt;INPUT type='hidden' name='x_test_request' value='$testMode' /&gt;";<br />
echo "    &lt;INPUT type='hidden' name='x_show_form' value='PAYMENT_FORM' /&gt;";<br />
echo "    &lt;input type='submit' value='$label' /&gt;";<br />
echo "&lt;/FORM&gt;";<br />
?&gt;</p>
<p>from: http://newyorkphper.javaeye.com/blog/545210</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/authorize-net-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php urlencode()函数</title>
		<link>http://www.3code.cn/php-urlencode/</link>
		<comments>http://www.3code.cn/php-urlencode/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 04:28:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/php-urlencode%e5%87%bd%e6%95%b0/</guid>
		<description><![CDATA[什么是URLEncode:
URLEncode：是指针对网页url中的中文字符的一种编码转化方式，最常见的就是Baidu、Google等搜索引擎中输入中文查询时候，生成经过 Encode过的网页URL。URLEncode的方式一般有两种一种是传统的基于GB2312的Encode（Baidu、Yisou等使用），一种是基于UTF-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。]]></description>
			<content:encoded><![CDATA[<p><strong>什么是URLEncode:</strong><br />
URLEncode：是指针对网页url中的中文字符的一种编码转化方式，最常见的就是Baidu、Google等搜索引擎中输入中文查询时候，生成经过 Encode过的网页URL。URLEncode的方式一般有两种一种是传统的基于GB2312的Encode（Baidu、Yisou等使用），一种是 基于UTF-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。</p>
<p>中文 -&gt; GB2312的Encode -&gt; %D6%D0%CE%C4<br />
中文 -&gt; UTF-8的Encode -&gt; %E4%B8%AD%E6%96%87</p>
<p><strong>Html中的URLEncode:</strong><br />
编码为GB2312的html文件中,<br />
http://ud03.kinoko.name/中文.rar -&gt; 浏览器自动转换为 -&gt; http://ud03.kinoko.name/%D6%D0%CE%C4.rar<br />
注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.</p>
<p>编码为UTF-8的html文件中,<br />
http://ud03.kinoko.name/中文.rar -&gt; 浏览器自动转换为 -&gt; http://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rar</p>
<p><strong>PHP中的URLEncode:</strong></p>
<p>//GB2312的Encode<br />
echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+<br />
echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.<br />
echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20<br />
echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.<br />
?&gt;</p>
<p>除了 -_. 之外的所有非字母数字字符都将被替换成百分号（%）后跟两位十六进制数。<br />
urlencode和rawurlencode的区别:<br />
urlencode 将空格则编码为加号（+）<br />
rawurlencode 将空格则编码为加号（%20）</p>
<p>如果要使用UTF-8的Encode，有两种方法：<br />
一、将文件存为UTF-8文件，直接使用urlencode、rawurlencode即可。<br />
二、使用mb_convert_encoding函数。</p>
<p>$url = 'http://ud03.kinoko.name/中文.rar';<br />
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";<br />
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";<br />
//http%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar<br />
?&gt;</p>
<p>实例：</p>
<p>function parseurl($url="")<br />
{<br />
$url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8'));<br />
$a = array("%3A", "%2F", "%40");<br />
$b = array(":", "/", "@");<br />
$url = str_replace($a, $b, $url);<br />
return $url;<br />
}<br />
$url="ftp://ud03:password@ud03.kinoko.name/中文/中文.rar";<br />
echo parseurl($url);<br />
//ftp://ud03:password@ud03.kinoko.name/%D6%D0%CE%C4/%D6%D0%CE%C4.rar<br />
?&gt;</p>
<p><strong>JavaScript中的URLEncode:</strong></p>
<p>%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20</p>
<p>encodeURI 不对下列字符进行编码：“:”、“/”、“;”、“?”、“@”等特殊字符。<br />
http://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-urlencode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP生成随机字符串</title>
		<link>http://www.3code.cn/php-rand-str/</link>
		<comments>http://www.3code.cn/php-rand-str/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 08:55:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1564</guid>
		<description><![CDATA[PHP生成随机字符串,可控制长度]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
/* Generate Password<br />
* Length : 8<br />
*/<br />
$str = "0123456789abcdefghijklmnopqrstuvwxyz";   //   输出字符集<br />
$n = 8;   //   输出串长度<br />
$len = strlen($str)-1;<br />
for($i=0 ; $i&lt;$n; $i++){<br />
$s .=  $str[rand(0,$len)];<br />
}<br />
echo $s . "&lt;br/&gt;";<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-rand-str/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何在apache下建立多个站点</title>
		<link>http://www.3code.cn/apache-much-web/</link>
		<comments>http://www.3code.cn/apache-much-web/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 05:53:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1506</guid>
		<description><![CDATA[要在apache 建立多个站点，通过编辑x:/apache/conf/httpd.conf 文件

设置端口号为8081站点目录为e:/AppServ/asen的一个站点代码如下：
===============================================
Listen 9527
<VirtualHost localhost:8081>
ServerName "web1"
DocumentRoot "d:/AppServ/web1"
<Directory "d:/AppServ/web1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all]]></description>
			<content:encoded><![CDATA[<p>要在apache 建立多个站点，通过编辑x:/apache/conf/httpd.conf 文件</p>
<p>设置端口号为8081站点目录为e:/AppServ/asen的一个站点代码如下：<br />
===============================================<br />
Listen 9527<br />
&lt;VirtualHost localhost:8081&gt;<br />
ServerName "web1"<br />
DocumentRoot "d:/AppServ/web1"<br />
&lt;Directory "d:/AppServ/web1"&gt;<br />
Options Indexes FollowSymLinks<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;<br />
&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride None<br />
&lt;/Directory&gt;<br />
===============================================</p>
<p>#设置/目录的指令。具体地说明：</p>
<p>Option：定义在目录内所能执行的操作。<br />
None：表示只能浏览，<br />
FollowSymLinks：允许页面连接到别处，<br />
ExecCGI：允许执行CGI，<br />
MultiViews：允许看动画或是听音乐之类的操作，<br />
Indexes：允许服务器返回目录的格式化列表，<br />
Includes：允许使用SSI。这些设置可以复选。<br />
All：则可以做任何事，但不包括MultiViews。<br />
AllowOverride：加None参数表示任何人都可以浏览该目录下的文件。<br />
另外的参数有：FileInfo、AuthConfig、Limit。<br />
另外一些常用的apache命令<br />
UserDir public_html<br />
#定义使用者存放html文件的目录。<br />
DirectoryIndex index.html<br />
#定义首先显示的文件。<br />
AccessFileName .htaccess<br />
#定义每个目录访问控制文件的名称。<br />
#CacheNegotiatedDocs<br />
定义代理服务器不要Cache你的页面。不建议使用。<br />
UseCanonicalName On<br />
#服务器使用ServerName指定的服务器名和Port指定的端口地址。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/apache-much-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php类的学习二</title>
		<link>http://www.3code.cn/php-class-study-2/</link>
		<comments>http://www.3code.cn/php-class-study-2/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 08:22:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1504</guid>
		<description><![CDATA[类的结构： 类的内部能可能有三种东西，就是常量（constant），属性（property）和方法（method），功能可以理解成类外部的常量，变量和函数。
复制代码 代码如下:
<?php
class TEST
{
const NAME = 'value'; // 常量
public $name = 'value'; // 属性
public function name() // 方法
{
echo 'value';
}
}
?>
]]></description>
			<content:encoded><![CDATA[<p>类的结构： 类的内部能可能有三种东西，就是常量（constant），属性（property）和方法（method），功能可以理解成类外部的常量，变量和函数。<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST<br />
{<br />
const NAME = 'value'; // 常量<br />
public $name = 'value'; // 属性<br />
public function name() // 方法<br />
{<br />
echo 'value';<br />
}<br />
}<br />
?&gt;</p>
<p>在这之中，属性和方法又可以使用public, protected, private三个不同的关键字来将属性和方法的作用范围做进一步的区分，带有private关键字的属性和方法，只有所在的类中的方法才能调用；带有protected关键字的属性和方法，除了自己以外，自己的父类和子类中的方法也可以调用；带有public关键字的属性和方法，则可以从实例化以后的对象中进行调用，这样做最大的好处给所有的属性和方法增加了一些描述的特征，更便于整理和组织代码的结构。const关键字先跳过，和后面的static一起讲。<br />
static关键字是有别于public, protected, private的另一类型关键字（因此可以和public, protected, private叠加起来使用）：<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST<br />
{<br />
public static function name()<br />
{<br />
echo 'value';<br />
}<br />
}<br />
?&gt;</p>
<p>带有static关键字的方法，可以在不对类进行实例化的情况下直接通过“::”符号调用，和public, protected, private的搭配，也可以让调用区分权限，但是一般都是和public搭档，前面提到的常量关键字const，应该就是public static类型的，因此只能通过self::NAME，TEST::NAME这样的形式调用常量，后面的__construct，__destruct等方法，都是属于static。<br />
类的结构部分，最后介绍的两个关键字是abstract和final，abstract关键字表示这个类必须被他的子类覆写，而final关键字表示这个类必须不能被他的子类覆写，这两个关键字的功能是正好相反的，带有abstract的方法被成为抽象方法，带有抽象方法的类，成为抽象类，这个在后面还有介绍。<br />
类的使用：<br />
类的使用主要有两种方法，一种是使用new关键字，另一种是使用“::”符号：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST<br />
{<br />
public static function name()<br />
{<br />
echo 'value';<br />
}<br />
}<br />
//方法1：使用new关键字<br />
$test = new TEST;<br />
$test-&gt;name();<br />
//方法2：使用“::”符号<br />
TEST::name();<br />
?&gt;</p>
<p>（1）：使用new关键字成为实例化，上面的$test就是一个通过TEST类实例化而产生的对象，$test-&gt;name()称为调用$test对象的name方法。<br />
（2）：使用new关键字使用类的时候，可以使用$this来指代类本身。<br />
（3）：使用“::”符号的前提是方法必须是带有static关键字的，使用new关键字时，被调用的方法，必须带有public关键字（一个方法如果不带public, protected, private中的任何一个关键字，则默认为public）<br />
（4）：同一个类可以通过new关键字被实例成多个不同的对象，但是彼此之间的是隔离的；“::”符号在使用的时候，方法在多次使用之间，是共享的：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST1<br />
{<br />
public $name = 0;<br />
public function name()<br />
{<br />
$this-&gt;name = $this-&gt;name + 1;<br />
}<br />
}<br />
$test1 = new TEST1;<br />
$test2 = new TEST1;<br />
$test1-&gt;name(); //$name1 == 1<br />
$test2-&gt;name(); //$name1 == 1<br />
/*--------------------------------------------*/<br />
class TEST2<br />
{<br />
public static $name = 0;<br />
public static function name()<br />
{<br />
TEST2::$name = TEST2::$name + 1;<br />
}<br />
}<br />
TEST2::name(); // $name == 1<br />
TEST2::name(); // $name == 2<br />
?&gt;<br />
类的关系：<br />
类与类之间的关系，主要有抽象，接口和继承：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
abstract class TEST1 // 抽象<br />
{<br />
abstract public function name1();<br />
public function name2()<br />
{<br />
}<br />
}<br />
class TEST2 extends TEST1 implements TEST3 // 继承<br />
{<br />
public function name1()<br />
{<br />
}<br />
}<br />
interface TEST3 // 接口<br />
{<br />
public function name2();<br />
}<br />
?&gt;</p>
<p>（1）带有abstract关键字的类是抽象类，带有abstract关键字的方法是抽象方法，抽象类中的抽象方法，必须在子类中被覆写。<br />
（2）带有interface关键字的类，就是接口，接口不允许实现任何的方法，接口中所有的方法，都必须在子类中被覆写。<br />
（3）带有 classA extends classB 或者 classA implements classB 字样的就是继承，extends表示继承另一个类，implements表示继承另一个接口，一次只能extends一个类，但是可以implements多个接口。<br />
（4）抽象类，接口，以及最终继承并实现的方法，都必须是public的。<br />
在继承的过程中，子类会覆写父类的同名方法，这个时候如果需要在子类中调用父类的方法，可以使用parent关键字或者类名加上“::”符号调用：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST1 extends TEST2<br />
{<br />
public function name()<br />
{<br />
echo parent::name2();<br />
echo TEST2::name2();<br />
}<br />
}<br />
class TEST2<br />
{<br />
public function name2()<br />
{<br />
echo 'value2';<br />
}<br />
}<br />
$test = new TEST1;<br />
$test-&gt;name();<br />
?&gt;</p>
<p>这里再解释一下“::”方法在类中的作用，一个作用是在没有实例化的情况下调用常量（其实也理解成static就可以了），static属性和方法，再一个是在类的内部，通过self，parent和类名建立便捷的调用通道。<br />
对象于对象之间的关系，主要是“==”等于，“===”全等于，不等于和clone：<br />
PHP代码<br />
&lt;?php<br />
class TEST<br />
{<br />
public function name()<br />
{<br />
}<br />
}<br />
$test1 = new TEST;<br />
$test2 = new TEST;<br />
$test3 = $test1;<br />
echo $test1 == $test2 ? true : false; // true<br />
echo $test1 == $test3 ? true : false; // true<br />
echo $test2 == $test3 ? true : false; // true<br />
echo $test1 === $test2 ? true : false; // false<br />
echo $test1 === $test3 ? true : false; // true<br />
echo $test2 === $test3 ? true : false; // false<br />
?&gt;<br />
（1）两个类只要拥有相同的属性和方法，就是“==”等于。<br />
（2）两个类必须是指向的同一个对象，才能是“===”全等于。<br />
clone比较特殊，在上面的例子中，$test3 = $test1的过程并不是给了 $test3 一份 $test1 对象的拷贝，而是让 $test3 指向了 $test1，如果一定要获得一份$test1的拷贝，就必须使用clone关键字：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
$test3 = clone $test1;<br />
?&gt;</p>
<p>类的钩子：<br />
__autoload：<br />
是一个函数名，也是唯一一个在类的外部使用的钩子，在实例化一个对象的时候，如果没有预先载入类，就会调用这个钩子。<br />
__construct<br />
在类被实例话的时候，被调用的钩子，可以做一些初始化的操作。<br />
__destruct<br />
在类被销毁的时候，被调用的钩子。<br />
__call<br />
当对象试图调用一个不存在的方法的时候，被调用的钩子<br />
__sleep<br />
当使用serialize()函数对一个类进行序列话操作的时候，会调用这个钩子<br />
__wakeup<br />
当使用unserialize()函数对一个类进行反序列话操作的时候，会调用这个钩子<br />
__toString<br />
当一个对象将被转变为字符串的时候，会调用这个钩子（比如echo的时候）<br />
__set_state<br />
当调用var_export()函数操作一个类的时候，会调用这个钩子<br />
__clone<br />
当使用clone关键字对一个类进行拷贝操作的时候，会调用这个钩子<br />
__get<br />
在获取一个类中的属性值的时候，会调用这个钩子<br />
__set<br />
在设置一个类中的属性值的时候，会调用这个钩子<br />
__isset<br />
在使用isset()函数对类中的属性值进行判定的时候，会调用这个钩子<br />
__unset<br />
在使用unset()函数销毁一个属性值的时候，会调用这个钩子<br />
类的小技巧：<br />
在实例话一个类的时候，可以使用这样的形式给__construct钩子传递参数：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST<br />
{<br />
public function __construct($para)<br />
{<br />
echo $para;<br />
}<br />
}<br />
$test = new TEST('value'); // 显示 value<br />
?&gt;</p>
<p>foreach()函数可以用来对类或者对象中的属性进行遍历，遍历的时候会先判断public, protected, private的情况而显示：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST<br />
{<br />
public $property1 = 'value1';<br />
public $property2 = 'value2';<br />
public $property3 = 'value3';<br />
public function name()<br />
{<br />
foreach($this as $key =&gt; $value)<br />
{<br />
print "$key =&gt; $value\n";<br />
}<br />
}<br />
}<br />
$test = new TEST;<br />
foreach($test as $key =&gt; $value)<br />
{<br />
print "$key =&gt; $value\n";<br />
}<br />
$test-&gt;name();<br />
?&gt;</p>
<p>在给类中的方法传递参数的时候，可以对参数进行强制的判定，这里只支持对数组和对象的判定：<br />
PHP代码<br />
复制代码 代码如下:<br />
&lt;?php<br />
class TEST1<br />
{<br />
public function name( TEST2 $para )<br />
{<br />
}<br />
}<br />
class TEST2<br />
{<br />
}<br />
$test2 = new TEST2;<br />
$test1 = new TEST1;<br />
$test1-&gt;name('value'); // 会报错，因为这个参数必须是TEST2实例化以后的对象<br />
$test1-&gt;name($test1); // 不会报错<br />
?&gt;</p>
<p>兼容php4的语法：<br />
php5的类是往下兼容php4的，这些php4时代的语法也得到了继承，但是并不建议在php5的环境中使用。<br />
（1）使用var预设属性，会自动转换成public。<br />
（2）使用类名作为构造函数，在没有__construct构造方法的情况下，会寻找和类名相同的函数作为构造函数。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-class-study-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php 类的学习一</title>
		<link>http://www.3code.cn/php-class-study-1/</link>
		<comments>http://www.3code.cn/php-class-study-1/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 08:20:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.3code.cn/?p=1502</guid>
		<description><![CDATA[一、定义类和实例化对象
php以关键字class来定义类，使用new来创建一个对象的实例，这就不用多说了。

二、自动加载对象机制
以前，我们引用对象，都要在前面使用include或者require将类包含进来，有时一个页面引用的类多了，感觉很麻烦，php5种，不再需要这样了，我们可以定义一个__autoload函数，它会在试图使用尚未被定义的类时自动调用。这就省得我们在每个页面都要使用一堆的包含函数了。]]></description>
			<content:encoded><![CDATA[<p>PHP 5 引入了新的对象模型（Object Model）。完全重写了 PHP 处理对象的方式，向java靠齐了。下面来了解下吧！</p>
<p>一、定义类和实例化对象<br />
php以关键字class来定义类，使用new来创建一个对象的实例，这就不用多说了。</p>
<p>二、自动加载对象机制<br />
以前，我们引用对象，都要在前面使用include或者require将类包含进来，有时一个页面引用的类多了，感觉很麻烦，php5种，不再需要这样了，我们可以定义一个__autoload函数，它会在试图使用尚未被定义的类时自动调用。这就省得我们在每个页面都要使用一堆的包含函数了。</p>
<p>使用实例：<br />
类文件:/class/class.testOne.php<br />
&lt;?php<br />
class testOne{<br />
function __construct(){<br />
echo "begin";<br />
}</p>
<p>function __destruct() {<br />
}<br />
}<br />
?&gt;</p>
<p>类文件:/class/class.testTwo.php<br />
&lt;?php<br />
class testTwo{<br />
protected $name;<br />
function __construct(){<br />
echo "conn";<br />
}</p>
<p>function setName( $name ){<br />
$this-&gt;name = $name;<br />
}</p>
<p>function getName(){<br />
return "My name is:".$this-&gt;name;<br />
}</p>
<p>function __destruct() {<br />
}<br />
}<br />
?&gt;</p>
<p>文件:/comm.config.php<br />
&lt;?php<br />
function __autoload( $class_name) {<br />
require_once "./class/class.".$class_name.'.php';<br />
}<br />
?&gt;</p>
<p>文件:/index.php<br />
&lt;?php<br />
require_once( "comm.config.php" );<br />
$testOne = new testOne();<br />
?&gt;<br />
输出结果:begin</p>
<p>文件:/index2.php<br />
&lt;?php<br />
require_once( "comm.config.php" );<br />
$testTwo = new testTwo();<br />
$testTwo-&gt;setName( "test" );<br />
echo $testTwo-&gt;getName();<br />
?&gt;<br />
输出结果:connMy name is:test</p>
<p>三、构造函数和析构函数<br />
构造函数:void __construct ( [mixed args [, ...]] )<br />
具有构造函数的类会在每次创建对象时先调用此方法，我们可以在这里做一些初始化操作。</p>
<p>析构函数:void __destruct ( void )<br />
PHP 5 引入了析构函数的概念，这类似于其它面向对象的语言，如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。</p>
<p>注意：<br />
在继承父类的子类中，默认子类是不会实现父类的构造函数和析构函数，要执行父类的构造函数和析构函数，我们可以使用parent关键字在子类的构造函数和析构函数体中显式调用parent::__construct()和parent::__destruct()。</p>
<p>四、属性和方法的可见性<br />
在php5中，我们可以像java一样，使用public、private、protected关键字来定义属性或者方法的可见性范围。<br />
public：声明方法和属性可以被随意访问。<br />
Protected：声明的方法和属性只能被类本身和其继承子类访问。<br />
private：只能被定义属性和方法的类访问。</p>
<p>实例：<br />
文件：class.testOne.php<br />
&lt;?php<br />
class testOne{<br />
public $public = "testOne.public";<br />
protected $protected = "testOne.preteced";<br />
private $private = "testOne.private";<br />
function __construct(){</p>
<p>}<br />
public function getPublic(){<br />
return "From testOne.getPublic:".$this-&gt;public;<br />
}//end</p>
<p>protected function getProtected(){<br />
return "From testOne.getProtected:".$this-&gt;protected;<br />
}</p>
<p>private function getPrivate(){<br />
return "From testOne.getPrivate:".$this-&gt;private;<br />
}</p>
<p>function printAll(){<br />
echo $this-&gt;public.BR;<br />
echo $this-&gt;getPublic().BR;<br />
echo $this-&gt;protected.BR;<br />
echo $this-&gt;getProtected().BR;<br />
echo $this-&gt;private.BR;<br />
echo $this-&gt;getPrivate().BR;<br />
}</p>
<p>function __destruct() {<br />
}<br />
}<br />
?&gt;</p>
<p>文件：index.php</p>
<p>&lt;?php<br />
require_once( "class.testOne.php" );<br />
$testOne = new testOne();<br />
###    属性<br />
echo $testOne-&gt;public.BR;<br />
echo $testOne-&gt;protected.BR;     //Fatal error: Cannot access protected property testOne::$protected in E:www3testindex.php on line 6<br />
echo $testOne-&gt;private.BR;    //Fatal error: Cannot access private property testOne::$private in E:www3testindex.php on line 7<br />
###    方法<br />
echo $testOne-&gt;getPublic().BR;<br />
echo $testOne-&gt;getProtected().BR;//Fatal error: Call to protected method testOne::getProtected() from context '' in E:www3testindex.php on line 10<br />
echo $testOne-&gt;getPrivate().BR;//Fatal error: Call to private method testOne::getPrivate() from context '' in E:www3testindex.php on line 11<br />
###    内部访问<br />
$testOne-&gt;printAll();<br />
echo "-----------------".BR;</p>
<p>###    定义扩展类<br />
class SunClass extends testOne{<br />
protected $protected = 'SunClass.protected';</p>
<p>function printAll(){<br />
echo $this-&gt;public.BR;<br />
echo $this-&gt;getPublic().BR;<br />
echo $this-&gt;protected.BR;<br />
echo $this-&gt;getProtected().BR;<br />
echo $this-&gt;private.BR;//这里不报错，但是值是空的<br />
echo $this-&gt;getPrivate().BR;//Fatal error: Call to private method testOne::getPrivate() from context 'SunClass' in E:www3testindex.php on line 25<br />
}<br />
}</p>
<p>###    子类访问<br />
$obj2 = new SunClass();<br />
$obj2-&gt;printAll();<br />
?&gt;</p>
<p>正常无错误的输出如下：<br />
testOne.public<br />
From testOne.getPublic:testOne.public<br />
testOne.public<br />
From testOne.getPublic:testOne.public<br />
testOne.preteced<br />
From testOne.getProtected:testOne.preteced<br />
testOne.private<br />
From testOne.getPrivate:testOne.private<br />
-----------------<br />
testOne.public<br />
From testOne.getPublic:testOne.public<br />
SunClass.protected<br />
From testOne.getProtected:SunClass.protected</p>
<p>以上实例说名：<br />
public或者默认无声明的属性和方法无论怎么样都可以被访问到。<br />
protected的属性和方法只能在类内部或者继承子类内部访问。<br />
private的属性和方法只能在类自身内部访问。</p>
<p>五、static关键字<br />
将一个类的属性或者方法定义为static,则可以在不实例化类的情况下使用类的属性和方法。</p>
<p>注意：<br />
1、static关键字必须在public、protected、private之后声明。<br />
2、子类不能重新定义父类中static关键字修饰的变量属性或者方法，除非你将它们定义为static成员。<br />
3、static方法或者变量中,$this 变量是不可用的，如果你要使用同一类中其他的定义为static变量或者方法，可以使用self::(变量名|方法名)来访问static成员。<br />
4、Static成员属性不能以$object-&gt;（static成员属性）方式访问，你可以$类名::（static成员属性）访问它们。这里跟java不同，PHP中static成员是不能被类的实例对象访问的。</p>
<p>实例：<br />
&lt;?php<br />
require_once( "comm.config.php" );<br />
class Foo<br />
{<br />
public static $my_static = 'foo';</p>
<p>public function staticValue() {<br />
###echo $this-&gt;$my_static;    //(不能使用$this变量访问static成员)Fatal error: Cannot access empty property in E:www3testindex.php on line 8<br />
return self::$my_static;<br />
}<br />
}</p>
<p>class Bar extends Foo<br />
{<br />
###public static $my_static;//Fatal error: Cannot redeclare static Foo::$my_static as non static Bar::$my_static in E:www3testindex.php on line 20（在public后面加上static关键字就ok了）<br />
public function fooStatic() {<br />
return self::$my_static;<br />
}<br />
}</p>
<p>$foo = new Foo();<br />
print $foo-&gt;staticValue() . "n";<br />
print Foo::$my_static . "n";<br />
print $foo-&gt;my_static . "n";      // my_static属性是空的。<br />
echo "&lt;br&gt;";<br />
// $foo::my_static is not possible</p>
<p>print Bar::$my_static. "n";<br />
print Bar::staticValue(). "n";<br />
$bar = new Bar();<br />
print $bar-&gt;fooStatic() . "n";<br />
?&gt;<br />
正确的输出结果：<br />
foo foo<br />
foo foo foo</p>
<p>六、作用域分辨运算符（::）<br />
在没有声明任何实例的情况下使用::来访问类中的函数或者基类中的函数和变量。<br />
一般用在以下三种情况<br />
1、从类外部不经过实例化访问类成员(比如static或者常量)，<br />
使用格式：类名::成名名;<br />
2、类内部使用，通过关键字self和parent来实现类内部访问类定义的成员.<br />
3、子类通过关键字parent来访问父类成员。</p>
<p>实例:<br />
class FatherClass<br />
{<br />
const CONST_VALUE = 'FatherClass.const';<br />
static $static = "FatherClass.static";</p>
<p>private function goPrivate(){<br />
echo "FatherClass.goPrivate&lt;br&gt;";<br />
}<br />
protected function goProtected() {<br />
echo "FatherClass.goProtected&lt;br&gt;";<br />
}<br />
function goPublic() {<br />
echo "FatherClass.goPublic&lt;br&gt;";<br />
self::goPrivate();//self关键字访问内部私有方法<br />
self::goProtected();//self关键字访问内部保护方法<br />
echo self::CONST_VALUE."&lt;br&gt;";//self访问类内部常量<br />
echo self::$static."&lt;br&gt;";//self访问类内部static变量<br />
}<br />
}</p>
<p>class SunClass extends FatherClass<br />
{<br />
function goPrivate(){<br />
echo "重载父类方法：SunClass.goPrivate&lt;br&gt;";<br />
###parent::goPrivate();//Fatal error<br />
parent::goProtected();    //parent访问父类protected方法<br />
echo parent::CONST_VALUE."&lt;br&gt;";//parent访问父类常量<br />
echo parent::$static."&lt;br&gt;";//parent访问父类static变量<br />
}<br />
}<br />
###FatherClass::goPrivate();//这里会出现Fatal error:，因为private修饰的成员外部是不能访问的。<br />
###FatherClass::goProtected();//这里会出现Fatal error:，因为protected修饰的成员外部是不能直接访问的，只有子类或者类本身才能访问。<br />
echo FatherClass::CONST_VALUE."&lt;br&gt;";//通过::访问到类内部常量<br />
echo FatherClass::$static."&lt;br&gt;";//访问类的static变量<br />
FatherClass::goPublic();//访问类成员方法<br />
$sunclass = new SunClass();<br />
$sunclass-&gt;goPrivate();</p>
<p>输出结果：<br />
FatherClass.const<br />
FatherClass.static<br />
FatherClass.goPublic<br />
FatherClass.goPrivate<br />
FatherClass.goProtected<br />
FatherClass.const<br />
FatherClass.static<br />
重载父类方法：SunClass.goPrivate<br />
FatherClass.goProtected<br />
FatherClass.const<br />
FatherClass.static</p>
<p>七、类常量<br />
我们可以通过定义类常量使得类的每个实例化对象中，成员的值都是相同的，而且对象不能改变它的值。<br />
常量和其他变量的区别主要在于：<br />
1.类的实例化对象是不能改变常量的值，并且每个实例化对象的常量值都是相同的。<br />
2.不需要$符号来声明和使用常量。<br />
3.常量不能被类的实例化对象直接使用，它只能在类内部使用。这点跟static成员是一相同的。</p>
<p>实例:<br />
class MyClass<br />
{<br />
const constant = 'constant value';</p>
<p>function showConstant() {<br />
//self::constant = "change constant value"; ###会出现错误<br />
echo self::constant . "n";<br />
}<br />
}</p>
<p>echo MyClass::constant . "n";</p>
<p>$class = new MyClass();<br />
$class-&gt;showConstant();<br />
//echo $class::constant; ###is not allowed</p>
<p>八、抽象类<br />
PHP5中引入了abstract类和方法的概念。一个类被声明为abstract，则此类是不能被实例化的。<br />
如果在一个类内部有一个成员方法被声明成abstract，则这个类也必须是抽象类。<br />
而且抽象成员方法只能定义方法的名称，不能定义方法的实现细节，这些方法的实现细节是留待继承<br />
此抽象类的子类去实现的。子类继承抽象类时，除非子类仍然声明为抽象类，否则就必须实现抽象类中<br />
所有声明为abstract的成员方法。注意，子类在是实现抽象类的抽象成员时，子类成员的可见性必须<br />
和抽象类保持一致或者小于抽象类的成员可见性。<br />
比如：抽象方法定义为protected，则实现此抽象方法的子类必须声明为protected或者public，而不能声明为private。</p>
<p>实例:<br />
//class AbstractClass ###如果去掉abstract关键字将出现错误<br />
abstract class AbstractClass<br />
{<br />
// Force Extending class to define this method<br />
abstract protected function getValue();<br />
abstract protected function prefixValue($prefix);</p>
<p>// Common method<br />
public function printOut() {<br />
print $this-&gt;getValue() . "n";<br />
}<br />
}</p>
<p>class ConcreteClass1 extends AbstractClass<br />
{<br />
//private function getValue(){ ###如果声明为private 会出现错误<br />
public function getValue() {<br />
return "ConcreteClass1";<br />
}</p>
<p>public function prefixValue($prefix) {<br />
return "{$prefix}ConcreteClass1";<br />
}<br />
}<br />
//$class = new AbstractClass();###出现错误，抽象类不能被实例化<br />
$class1 = new ConcreteClass1;<br />
$class1-&gt;printOut();<br />
echo $class1-&gt;prefixValue('FOO_') ."n";</p>
<p>九、接口<br />
接口允许你创建一个只有方法声明,而无具体实现的类对象.接口是一系列方法的声明，是一些方法特征的集合，<br />
一个接口只有方法的特征没有方法的实现，因此这些方法可以在不同的地方被不同的类实现，<br />
而这些实现可以具有不同的行为（函数）。 接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色，<br />
它包装与该角色相关的操作和属性，而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演，而不同的演员之间除了扮演一个共同的角色之外，<br />
并不要求其它的共同之处。</p>
<p>注:<br />
1、接口由interface关键字声明。<br />
2、接口的所有方法作用域必须是public的。<br />
3、接口只定义方法，没有任何有实际意义的代码，具体的代码由实现这个接口的类来完成。<br />
4、实现类通过implements来实现接口，接口所定义的方法，实现类必须全部实现。<br />
5、实现类可以实现多个接口，只需要将接口用逗号隔开即可。<br />
6、对象是对某类的事物的抽象,接口是对对象的抽象，接口用来标志类的类别。<br />
7、接口是不能实例化的。</p>
<p>实例:<br />
// 声明接口'iFaceOne'<br />
interface iFaceOne<br />
{<br />
public function setVariable($name, $var);<br />
public function    getVariable( $name );<br />
}</p>
<p>// 声明接口'iFaceTwo'<br />
interface iFaceTwo<br />
{<br />
public function getHtml( $str );<br />
}</p>
<p>//声明接口'iFaceTwoSun'继承iFaceTwo接口,扩展setHtml方法<br />
interface iFaceTwoSun extends iFaceTwo{<br />
public function setHtml();<br />
}</p>
<p>//类one实现iFaceOne、iFaceTwo接口<br />
class one implements iFaceOne,iFaceTwo<br />
{<br />
private $test = "";<br />
//实现iFaceOne接口的setVariable方法<br />
public function setVariable( $name,$var ){<br />
echo "one实现iFaceOne.setVariable&lt;BR&gt;";<br />
$this-&gt;$name = $var;<br />
}</p>
<p>//实现iFaceOne接口的getVariable方法<br />
public function getVariable( $name ){<br />
echo "one实现iFaceOne.getVariable&lt;BR&gt;";<br />
return $this-&gt;$name;<br />
}</p>
<p>//实现iFaceTwo接口的getHtml方法<br />
public function getHtml( $str ){<br />
echo "one实现iFaceTwo.getHtml&lt;BR&gt;";<br />
return $str;<br />
}<br />
}</p>
<p>//类two实现iFaceTwo接口<br />
class two implements iFaceTwoSun{<br />
public function getHtml( $str ){<br />
echo "two实现iFaceTwo.getHtml&lt;BR&gt;";<br />
return $str;<br />
}</p>
<p>public function setHtml(){<br />
echo "two实现iFaceTwoSun.getHtml&lt;BR&gt;";<br />
}<br />
}</p>
<p>class three{</p>
<p>function get(iFaceTwo $Obj,$str ){<br />
return $Obj-&gt;getHtml( $str );<br />
}</p>
<p>function set( iFaceTwo $Obj ){<br />
return $Obj-&gt;setHtml();<br />
}<br />
}</p>
<p>$three = new three();<br />
$one = new one();<br />
$two = new two();<br />
//$iFaceOne = new iFaceOne();    //报错,因为接口是不能被实例化的</p>
<p>$one-&gt;setVariable( "test","one" );<br />
$rs = $one-&gt;getVariable( "test" );<br />
echo $rs."&lt;hr&gt;";</p>
<p>$rs = $two-&gt;getHtml( "two" );<br />
echo $rs."&lt;br&gt;";<br />
$rs = $two-&gt;setHtml();<br />
echo "&lt;hr&gt;";</p>
<p>$rs = $three-&gt;get( $one,"one" );<br />
echo $rs."&lt;hr&gt;";<br />
$rs = $three-&gt;set( $two,"two" );<br />
echo $rs."&lt;hr&gt;";<br />
/*********************/<br />
//$three-&gt;setHTML( $one );//报错<br />
$three-&gt;set( $two );</p>
]]></content:encoded>
			<wfw:commentRss>http://www.3code.cn/php-class-study-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
