浏览模式: 标准 | 列表2007年03月的文章

Adodb的ACCESS库自定义分页

两个知识点:
一,adodb在不设置服务器的dns时怎样链接access
二,adodb怎样自定义分页(不使用adodb-pager.inc.php)
淡水河边原创,用来帮助那些从ASP转到php的朋友。
代码:

<?php
/*
说明:在php中使用Adodb进行ACCESS库的自定义分页
淡水河边kissmumu(AT)126.com
*/
//引入ADODB类库
include("adodb/adodb.inc.php");
//实例化db类,链接
$db = ADONewConnection("ado_access");
    $access = realpath("data/faq.mdb");
    $myDSN = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"."DATA SOURCE=". $access . ";"."USER ID=;PASSWORD=;";
    $user="";
    $pwd="";
    $database="";
$db->Connect($myDSN, $user, $pwd, $database);

//更简单的实例化db类,链接
//    $db = ADONewConnection("ado");
//    $access = realpath("../data/faq.mdb");
//    $db->Connect($access,false,false,"access");

$sql = "sel&#101;ct sml_id as ID,sml_title as 标题 from sml_cls";
$sqltal = "sel&#101;ct count(*) from sml_cls";
//总记录
$rsnum = $db->GetOne($sqltal);
//每页记录数                            
$page_size = 2;                                                
if( $rsnum % $page_size ){                          //取总数据量除以每页数的余数
    $page_count = (int)($rsnum / $page_size) + 1;   //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
}else{
    $page_count = $rsnum / $page_size;              //如果没有余数,则页数等于总数据量除以每页数的结果
}
//取得页码
$my_page = $_GET["p"];

$rs = $db->Sel&#101;ctLimit($sql,$page_size,$my_page * $page_size);
//循环打印记录
while (!$rs->EOF) {
    echo ($rs->fields[0] . " " . $rs->fields[1]);
    echo ("<br />");
    $rs->movenext();
}
echo ("<br />");
//打印页码链接
for ($i=0;$i<$page_count;$i++) {
    echo ("<a href=\"". $_SERVER["PHP_SELF"]. "?p=". $i ."\">[". intval($i+1) ."]</a> ");
    //echo ("<a href=\"/?p=". $i ."\">[". $i ."]</a> ");
}
?>

Tags: adodb, 分页

常用的ADODB使用方法

飞豹游侠常用的ADODB使用方法 整理:淡水河边

» 阅读全文

Tags: adodb

SmartTemplate学习笔记

这些日子,一直在游荡。只为找个容易上手的PHP模板引擎(Smarty太麻烦了,甭谈用了,看着就晕-_-#)。TinyButStrong这个不错,在DW的可视环境下方便地说。但是,就我目前的状况没力气去一行行的啃E文,于是先放一放。今天偷偷看一下SmartTemplate,不错,合俺的胃口。方法不多assign();Append();output();很容易驾驭.逻辑运算结构也容易。呵呵。
先说SmartTemplate的变量
Array的变量是由SmartTemplate内建函数assign()来赋值的
具体语法如下

assign ( 模版中的变量, 要替换的内容 )

assign ( Array内容 )

和其他程序的变量一样,smartTemplate的变量是由特殊的{}所包含的。里面的内容可以是String,Array,Int,或者是Long Text等等(基本上php支持的)
来个例子:
<?php
$template = new SmartTemplate("template.html");
$text = "菜鸟捡到宝了";
$template->assign( "TITLE", $text );
$template->output();
?>

模版
<html> {TITLE} </html>

输出
<html> 菜鸟捡到宝了</html>

再来个例子:
在只有一个Array的情况下,可以直接省略前面的array handle,就象在使用javascript时,document.window.close()可以省略为window.close()

<?php
$user = array(
"NAME" => "Kissmumu",
"GROUP" => "Admin",
"AGE" => "25",
);
$template = new SmartTemplate("user.html");
$template->assign( $user );
$template->output();
?>

模版
Name: {NAME}
Group: {GROUP}
Age: {AGE}

输出  
Name: Kissmumu
Group: Admin
Age: 25

例子3
使用SmartTemplate的循环函数<!-- begin Array名 -->XXXXXX<!-- end Array名>
他的功能类似foreach(),只要有东西,就一直循环显示

<?php
$links = array(
array(
"TITLE" => "PHP",
"URL" => "http://www.php.net/&#3...,
),
array(
"TITLE" => "Apache",
"URL" => "http://www.php.net/&#3...,
),
array(
"TITLE" => "MySQL",
"URL" => "http://www.mysql.com/&...,
),
);
$template = new SmartTemplate("links.html");
$template->assign( "links", $links );
$template->output();
?>

HTML模版
<html>
<h3> Sample Links </h3>
<!-- BEGIN links -->
<a href="../{URL}"> {TITLE} </a>
<!-- END links -->
</html>

输出
<html>
<h3> Sample Links </h3>
<a href="../http://www.php.net/"> PHP </a>
<a href="../http://www.apache.org/"> Apache </a>
<a href="../http://www.mysql.com/"> MySQL </a>
</html>

再看看SmartTemplate的逻辑控制结构

If和end If

语法:
<!-- IF 变量 --> 变量已被赋值! <!-- ENDIF 变量 -->
如果IF后面直接跟变量,变量为Null时会返回0,否则返回1
<!-- IF name=="kissmumu" --> My name is kissmumu! <!-- ENDIF name -->
“==”判断是否相等,如果相等返回1,不相等返回0
<!-- IF name!="kissmumu" --> My name is not kissmumu! <!-- ENDIF name -->
“!=”判断是否不等,如果成立返回1,相等则返回0
例子:
<?php
require_once "class.smarttemplate.php";
$page = new SmartTemplate("if.html");
$page->assign( "username", "kissmumu" );
$page->assign( "usergroup", "ADMIN" );
$page->assign( "picture", "" );
$page->output();
?>

模板:
<!-- IF username --> <H3> Welcome, {username} </H3> <!-- ENDIF username -->
<!-- IF picture --> <img src="{picture}"> <!-- ENDIF picture -->
<!-- IF usergroup="ADMIN" -->
<a href="../admin.php"> ADMIN Login </a><br>
<!-- ENDIF usergroup -->

输出
<H3> Welcome, kissmumu </H3>
<a href="../admin.php"> ADMIN Login </a><br>

IF的子句 else

如果else子句出现在一个逻辑循环中,当if的条件不成立时则会被运行。
例子
<?php
require_once "class.smarttemplate.php";
$page = new SmartTemplate("else.html");
$page->assign( "username", "kissmumu" );
$page->assign( "usergroup", "ADMIN" );
$page->assign( "picture", "" );
$page->output();
?>

模版
<!-- IF username -->
<H3> Welcome, {username} </H3>
<!-- ENDIF username -->
<!-- IF picture -->
<img src="{picture}">
<!-- ELSE -->
Picture not available! <br>
<!-- ENDIF picture -->
<!-- IF usergroup="ADMIN" -->
<a href="../admin.php"> ADMIN Login </a><br>
<!-- ELSE -->
You are in guest mode!
<!-- ENDIF usergroup -->

输出
<H3> Welcome, kissmumu </H3>
Picture not available! <br>
<a href="../admin.php"> ADMIN Login </a><br>

elseif
elseif是else和if组合起来的一种结构,其意义为"除此之外如果..."
以下是一个例子
<?php
require_once "class.smarttemplate.php";
$page = new SmartTemplate("elseif.html");
$page->assign( "usergroup", "INTERNAL" );
$page->output();
?>

模版文件
<!-- IF usergroup="ADMIN" -->
<a href="../admin.php"> 管理员登陆 </a><br>
<!-- ELSEIF usergroup="SUPPORT" -->
<a href="../support.php"> 帮助人员登陆</a><br>
<!-- ELSEIF usergroup -->
<a href="../other.php"> 普通方式登陆 </a><br>
<!-- ELSE -->
You don"t even have a usergroup!
<!-- ENDIF -->

输出
<a href="../other.php"> 普通方式登陆 </a><br>

Begin...End
这个语句用于读取一个整数索引矩阵(Numerical Array,以数字为索引的数组)的值.而每个整数矩阵的子矩阵则成为以字符串为索引的矩阵(Associative Array)然后在<!-- begin --> 和 <!-- end -->之间的语句将会被读取并且重复执行.
附加:每个associative array(字符串为索引的矩阵)会有两个附加的值
ROWCNT : 此元素在父矩阵中的具体位置 (0,1,2,3,...n) (就是目前在第几个矩阵)
ROWBIT : 矩阵序号的最后一位. (0,1,0,1,0,1,...)

下面是一个例子
<?php
require_once "class.smarttemplate.php";
$page = new SmartTemplate("begin_end.html");
$users = array(
array( "NAME" => "John Doe", "GROUP" => "ADMIN" ),
array( "NAME" => "Jack Doe", "GROUP" => "SUPPORT" ),
array( "NAME" => "James Doe", "GROUP" => "GUEST" ),
array( "NAME" => "Jane Doe", "GROUP" => "GUEST" ),
);
$page->assign( "users", $users );
$page->output();
?>

HTML模版
<style type="text/css">
.col0 { background-color: #D0D0D0; }
.col1 { background-color: #F0F0F0; }
</style>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<th> No </th>
<th> Username </th>
<th> Usergroup </th>
</tr>
<!-- BEGIN users -->
<tr class="col{ROWBIT}">
<td> {ROWCNT} </td>
<td> {NAME} </td>
<td> {GROUP} </td>
</tr>
<!-- END users -->
</table>

最后的输出
<style type="text/css">
.col0 { background-color: #D0D0D0; }
.col1 { background-color: #F0F0F0; }
</style>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<th> No </th>
<th> Username </th>
<th> Usergroup </th>
</tr>
<tr class="col0">
<td> 0 </td>
<td> John Doe </td>
<td> ADMIN </td>
</tr>
<tr class="col1">
<td> 1 </td>
<td> Jack Doe </td>
<td> SUPPORT </td>
</tr>
<tr class="col0">
<td> 2 </td>
<td> James Doe </td>
<td> GUEST </td>
</tr>
<tr class="col1">
<td> 3 </td>
<td> Jane Doe </td>
<td> GUEST </td>
</tr>
</table>

小结smartTemplate的方法
注:以下列出的方法并不会在模版设计中出前,他们属于smartTemplate的代码编辑部分,但是如果为了实现更深一步的模版设计,下面的内容是肯定有用的.

基础方法:assign (中文意思:赋值)
语法:
assign ( 变量名, 混合内容 )
或者
assign ( 矩阵变量 )

Append(附加)
语法:append ( 变量名, 内容 )
对所提供的变量附加提供的内容
例子:
<?php
$page = new SmartTemplate("links.html");
$page->append("links" => array(
"TITLE" => "PHP",
"URL" => "http://www.php.net/&#3...
));
$page->append("links" => array(
"TITLE" => "Apache",
"URL" => "http://www.apache.org/&...
));
$page->append("links" => array(
"TITLE" => "MySQL",
"URL" => "http://www.mysql.com/&...
));
$page->output();
?>

模版
<html>
<h3> Sample Links </h3>
<!-- BEGIN links -->
<a href="../{URL}"> {TITLE} </a>
<!-- END links -->
</html>

最终输出
<html>
<h3> Sample Links </h3>
<a href="../http://www.php.net/"> PHP </a>
<a href="../http://www.apache.org/"> Apache </a>
<a href="../http://www.mysql.com/"> MySQL </a>
</html>

一个附加字符串的例子:
<?php
$page = new SmartTemplate("template.html");
$page->append("TITLE" => "Hello ");
$page->append("TITLE" => "World ");
$page->append("TITLE" => "!");
$page->output();
?>

模板
<html> {TITLE} </html>

输出将会得到
<html> Hello World ! </html>

Tags: 模板, SmartTemplate

PHP函数点评

PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助。

1.print_r()
打印关于变量的易于理解的信息,若为数组,则显示数组的结构信息.

例如:
[codes=php]<pre>
<?php
    $a = array ("a" => "apple", "b" => "banana", "c" => array ("x", "y", "z"));
    print_r ($a);
?>
</pre> [/codes]
点评:查看任何数组的结构信息,是程序调试的必备工具。对于任何返回结果是数组的“函数”,只要print_r一下,一切底细一目了然!

2.var_export()
输出或返回一个变量的字符串表示

此函数返回关于传递给该函数的变量的结构信息,它和print_r() 类似,不同的是其返回的表示是合法的 PHP 代码。

您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

例如:
[codes=php] <pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);

echo "<hr>";

$v = var_export($a, TRUE);
echo $v;

?>
</pre>[/codes]
点评:上面例子中,$v = var_export($a, TRUE)返回的是php代码噢~~那么您就可以把它保存为php文件。
保存为php文件做什么?呵呵,这可以用作“缓存”,当需要的时候,可以直接include它。

3.file()
file() 将文件作为一个数组返回。数组中的每个元素都是文件中相应的一行,包括换行符在内。如果失败 file() 返回 FALSE。
[codes=php] <pre>
<?php
// 将一个文件读入数组。
$lines = file("test.txt");

//查看这个数组的结构
print_r($lines);

?>
</pre>[/codes]
点评:file()函数是我接触php的初期让我非常惊讶的的一个函数。相比以前我在c语言和vb里对
文件读写的无比麻烦的经历,使得当时的我感觉再也没有比file()函数更方便的文件读写方式了。

4.phpinfo()
打印与php有关的信息,例如PHP版本,功能支持,全局变量等.

例如:
<?php
phpinfo();
?>
点评:简单的一个函数,让你时刻了解php的飞速发展---若您密切关注php的发展的话~~~~

5.file_get_contents() (注:PHP 4 >= 4.3.0, PHP 5)
将整个文件读入一个字符串.file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

例如:
[codes=php]<?php

$data = file_get_contents("test.txt");

echo $data;

?>[/codes]
6. file_put_contents (注:PHP 5)
将一个字符串直接写入文件.

例如:
[codes=php] <?php
//某图象的地址
$url="http://test.com/plmm.jpg&a...

//读取二进制“字符串”
$data=file_get_contents($url);

//保存到自己的电脑里
file_put_contents("美女.jpg",$data);
?>[/codes]
点评:若您发现某个美女图片网站的图片命名是诸如1.jpg,2.jpg...
ok,用一个for循环,把所有的“美女”抓下来吧,不要因此太兴奋让您的女朋友
吃醋了哈~~~

7.function_exists
若函数存在,则返回true

例如:
[codes=php] <?php
//若该函数不存在,则自定义该函数
if(!function_exists("file_put_contents")) {

    function file_put_contents($filename,$data) {
    
     $fp=fopen($filename,"wb");
     fwrite($fp,$data);        
     fclose($fp);

   }

}

?>[/codes]

8.get_defined_functions
返回一个数组,得到所有已定义的php函数。

例如:
[codes=php]<pre>
<?php
$arr = get_defined_functions();

print_r($arr);
?>
</pre>[/codes]

点评:这下您知道所有的函数名了吧。若您想了解某个函数的用法,可使用形如 http://www.php.net/functio... 在线查阅,“包治百病,各种疑难杂诊,药到病除~~~~”

9.get_declared_classes
返回一个数组,得到所有已定义的php类。

例如:
[codes=php]<pre>
<?php
$arr = get_declared_classes();

print_r($arr);
?>
</pre>[/codes]

点评:相信本函数你可以在例8运行之后看到。在php4中运行本函数,只能得到寥寥无几的几个类;但若你使用php5,那么本例中你将看到几十个预定义的php类!可见php5在面向对象方面增强了很多。

10.exit
输出消息并且停止当前脚本。(注:和echo一样,这不是一个"函数",而是一个"语句")。

例如:
[codes=php]<?php
echo "语句1";

exit("下面的语句2不会输出");

echo "语句2";

?>[/codes]
点评:调试程序,查找出错的位置等比较有用.

常用正则表达式[收藏]

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

Tags: 正则表达式

PHP 和 MySQL 开发的 8 个技巧

1. PHP 中数组的使用
在操作数据库时,使用关联数组(associatively-indexed arrays)十分有帮助,下面我们看一个基本的数字格式的数组遍历:

代码:
<?php
$temp[0] = "richmond";
$temp[1] = "tigers";
$temp[2] = "premiers";

for($x=0;$x<count($temp);$x++)
{
echo $temp[$x];
echo " ";
}
?>


然而另外一种更加节省代码的方式是:

代码:
<?php
$temp = array("richmond", "tigers", "premiers");
foreach ($temp as $element)
echo "$element ";
?>


foreach 还能输出文字下标:

代码:
<?php
$temp = array("club" => "richmond",
"nickname" =>"tigers",
"aim" => "premiers");

foreach ($temp as $key => $value)
echo "$key : $value ";
?>

PHP 手册中描述了大约 50 个用于处理数组的函数。

2. 在 PHP 字符串中加入变量

这个很简单的:

代码:
<?php
$temp = "hello"
echo "$temp world";
?>


但是需要说明的是,尽管下面的例子没有错误:
代码:
<?php
$temp = array("one" => 1, "two" => 2);
// 输出:: The first element is 1
echo "The first element is $temp[one].";
?>


但是如果后面那个 echo 语句没有双引号引起来的话,就要报错,因此建议使用花括号:

代码:
<?php
$temp = array("one" => 1, "two" => 2);
echo "The first element is {$temp["one"]}.";
?>



3. 采用关联数组存取查询结果
看下面的例子:

代码:
<?php
$connection = mysql_connect("localhost", "albert", "shhh");
mysql_sel&#101;ct_db("winestore", $connection);

$result = mysql_query("Sel&#101;ct cust_id, surname,
firstname FROM customer", $connection);

while ($row = mysql_fetch_array($result))
{
echo "ID:\t{$row["cust_id"]}\n";
echo "Surname\t{$row["surname"]}\n";
echo "First name:\t{$row["firstname"]}\n\n";
}
?>

函数 mysql_fetch_array() 把查询结果的一行放入数组,可以同时用两种方式引用,例如 cust_id 可以同时用下面两种方式:$row["cust_id"] 或者$row[0] 。显然,前者的可读性要比后者好多了。

在多表连查中,如果两个列名字一样,最好用别名分开:

Sel&#101;ct winery.name AS wname,
region.name AS rname,
FROM winery, region
Wh&#101;re winery.region_id = region.region_id;


列名的引用为:$row["wname"] 和 $row["rname"]。


在指定表名和列名的情况下,只引用列名:

Sel&#101;ct winery.region_id
FROM winery

列名的引用为: $row["region_id"]。

聚集函数的引用就是引用名:

Sel&#101;ct count(*)
FROM customer;

列名的引用为: $row["count(*)"]。

4. 注意常见的 PHP bug

常见的 PHP 纠错问题是:

No page rendered by the Web browser when much more is expected
A pop-up dialog stating that the "Document Contains No Data"
A partial page when more is expected

出现这些情况的大多数原因并不在于脚本的逻辑,而是 HTML 中存在的 bug 或者脚本生成的 HTML 的 bug 。例如缺少类似 </table>, </form>, </frame> 之类的关闭 Tag,页面就不能刷新。解决这个问题的办法就是,查看 HTML 的源代码。

对于复杂的,不能查到原因的页面,可以通过 W3C 的页面校验程序 http://validator.w3.org/ 来分析。

如果没有定义变量,或者变量定义错误也会让程序变得古怪。例如下面的死循环:

代码:
<?php
for($counter=0; $counter<10; $Counter++)
myFunction();
?>


变量 $Counter 在增加,而 $counter 永远小于 10。这类错误一般都能通过设置较高的错误报告级别来找到:

代码:
<?php
error_reporting(E_ALL);

for($counter=0; $counter<10; $Counter++)
myFunction();
?>

5. 采用 header() 函数处理单部件查询

在很多 Web 数据库应用中,一些功能往往让用户点击一个连接后,继续停留在当前页面,这样的工作我叫它“单部件查询”。

下面是一个叫做 calling.php 的脚本:

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4... >
<html>
<head>
<title>Calling page example</title>
</head>
<body>
<a href="action.php">Click here!</a>
</body>
</html>

当用户点击上面的连接时,就去调用 action.php。下面是 action.php 的源码:

代码:
<?php
// 数据库功能

// 重定向
header("Location: $HTTP_REFERER");
exit;
?>

这里有两个常见的错误需要提醒一下:
调用 header() 函数后要包含一个 exit 语句让脚本停止,否则后续的脚本可能会在头发送前输出。


header() 函数常见的一个错误是:

Warning: Cannot add header information - headers already sent...

header() 函数只能在 HTML 输出之前被调用,因此你需要检查 php 前面可能存在的空行,空格等等。

6. reload 的问题及其解决
我以前在写 PHP 程序时,经常碰到页面刷新时,数据库多处理一次的情况。
我们来看 addcust.php:

<?php
$query = "Ins&#101;rt INTO customer
SET surname = $surname,
firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shhh");
mysql_sel&#101;ct_db("winestore", $connection);
$result = mysql_query($query, $connection);
?>
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4... >
<html>
<head>
<title>Customer ins&#101;rt</title>
</head>
<body>
I"ve ins&#101;rted the customer for you.
</body>
</html>
假设我们用下面的连接使用这个程序:

http://www.freelamp.com/ad... ... &amp;firstname=Fred

如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。
这个问题可以通过 header() 函数解决:下面是新版本的 addcust.php:

代码:
<?php
$query = "Ins&#101;rt INTO customer
SET surname = $surname,
firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shhh");
mysql_sel&#101;ct_db("winestore", $connection);
$result = mysql_query($query, $connection);
header("Location: cust_receipt.php");
?>
这个脚本把浏览器重定向到一个新的页面:cust_receipt.php:

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4... >
<html>
<head>
<title>Customer ins&#101;rt</title>
</head>
<body>
I"ve ins&#101;rted the customer for you.
</body>
</html>
这样,原来的页面继续刷新也没有副作用了。

7. 巧用锁机制来提高应用性能
如果我们要紧急运行一个报表,那么,我们可以对表加写锁,防治别人读写,来提高对这个表的处理速度。

8. 用 mysql_unbuffered_query() 开发快速的脚本
这个函数能用来替换 mysql_query() 函数,主要的区别就是 mysql_unbuffered_query() 执行完查询后马上返回,不需要等待或者对数据库加锁。

但是返回的行数不能用mysql_num_rows() 函数来检查,因为输出的结果集大小未知。

转一个PHP操作Access类(PHP+ODBC+Access)

代码:

<?php
--------------------------------------------------------------------
//FileName:class.php
//Summary: Access数据库操作类
//Author: forest
//Cr&#101;ateTime: 2006-8-10  
//LastModifed:
//copyright (c)2006 freeweb.nyist.net/~chairy chaizuxue@163.com
//   使用范例:
//$databasepath="database.mdb";
//$dbusername="";
//$dbpassword="";
//include_once("class.php");
//$access=new Access($databasepath,$dbusername,$dbpassword);

--------------------------------------------------------------------
  class Access
  {
      var $databasepath,$constr,$dbusername,$dbpassword,$link;
      function Access($databasepath,$dbusername,$dbpassword)
      {
          $this->databasepath=$databasepath;
    $this->username=$dbusername;
    $this->password=$dbpassword;
    $this->connect();
      }
    
  function connect()
  {
    $this->constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this->databasepath);
    $this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
    return $this->link;
    //if($this->link) echo "恭喜你,数据库连接成功!";
    //else echo "数据库连接失败!";
  }
    
  function query($sql)
  {
    return @odbc_exec($this->link,$sql);
  }
    
  function first_array($sql)
  {
    return odbc_fetch_array($this->query($sql));
  }
    
  function fetch_row($query)
  {
    return odbc_fetch_row($query);
  }
    
  function total_num($sql)//取得记录总数
  {
    return odbc_num_rows($this->query($sql));
  }
    
  function close()//关闭数据库连接函数
  {  
    odbc_close($this->link);
  }
        
  function ins&#101;rt($table,$field)//插入记录函数
  {
    $temp=explode(",",$field);
    $ins="";
    for ($i=0;$i<count($temp);$i++)
    {
        $ins.=""".$_POST[$temp[$i]]."",";
    }
    $ins=substr($ins,0,-1);
    $sql="Ins&#101;rt INTO ".$table." (".$field.") VALUES (".$ins.")";
    $this->query($sql);
  }
    
  function getinfo($table,$field,$id,$colnum)//取得当条记录详细信息
  {
    $sql="Sel&#101;ct * FROM ".$table." Wh&#101;re ".$field."=".$id."";
    $query=$this->query($sql);
    if($this->fetch_row($query))
    {
        for ($i=1;$i<$colnum;$i++)
        {
      $info[$i]=odbc_result($query,$i);
        }
      }
      return $info;
  }
    
  function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得记录列表  
  {
      $sql="Sel&#101;ct * FROM ".$table." ".$condition." ".$sort;
      $query=$this->query($sql);
      $i=0;
      while ($this->fetch_row($query))
      {
    $recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
    $i++;
      }
      return $recordlist;
  }
    
  function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得记录列表
  {
      $sql="Sel&#101;ct ".$field." FROM ".$table." ".$condition." ".$sort;
      $query=$this->query($sql);
      $i=0;
      while ($this->fetch_row($query))
      {
      for ($j=0;$j<$fieldnum;$j++)
    {
            $info[$j]=odbc_result($query,$j+1);
    }  
    $rdlist[$i]=$info;
    $i++;
      }
      return $rdlist;
  }
    
  function up&#100;ateinfo($table,$field,$id,$set)//更新记录
  {
    $sql="Up&#100;ate ".$table." SET ".$set." Wh&#101;re ".$field."=".$id;
    $this->query($sql);
  }
    
  function del&#101;teinfo($table,$field,$id)//删除记录
  {
      $sql="Del&#101;te FROM ".$table." Wh&#101;re ".$field."=".$id;
      $this->query($sql);
  }
    
  function del&#101;terecord($table,$condition)//删除指定条件的记录
  {
      $sql="Del&#101;te FROM ".$table." Wh&#101;re ".$condition;
      $this->query($sql);
  }
    
  function getcondrecord($table,$condition="")// 取得指定条件的记录数
  {
      $sql="Sel&#101;ct COUNT(*) AS num FROM ".$table." ".$condition;
      $query=$this->query($sql);
      $this->fetch_row($query);
      $num=odbc_result($query,1);
      return $num;        
  }
  }
?>

asp直接将繁体中文转为简体中文

怎么用asp直接将繁体中文转为简体中文?

代码如下:

代码:
<%
function surnfujtof(str,types)
dim surnfujian,surnfufan,surnfujtofstr
surnfujtofstr=""
surnfujian="皑蔼碍爱翱袄奥澳靶耙坝罢摆败扳颁办绊帮绑镑谤剥雹饱宝报鲍辈贝钡狈备惫绷笔蓖毕毙闭弊臂陛边编贬变辩辫鳖别瘪濒滨宾摈饼拨钵铂驳卜补簿怖参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤猖场尝长偿肠厂畅钞车掣彻郴尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠酬畴踌筹绸丑橱厨锄雏础储搐触处传疮闯创锤纯戳绰茨雌辞瓷词赐聪葱囱从丛凑醋促蹿窜瘁淬撮措错达戴带贷担单郸掸胆但惮诞弹当挡党荡档捣岛祷导盗灯邓迪敌涤递缔颠滇点垫电奠淀钓调爹蝶迭谍叠钉顶锭订东懂动栋冻斗犊独读睹赌镀锻断缎兑队对吨敦顿钝遁哆夺鹅额讹恶遏饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫峰锋风疯逢冯缝讽凤肤辐抚辅赋复腹负讣妇缚噶该概钙盖干赶秆赣冈刚钢纲岗皋搞镐搁鸽疙阁铬个给羹耿龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骸骇韩汉阂赫鹤贺横轰鸿红后壶护沪户哗华画划话徊怀坏欢环还缓换唤痪焕涣黄蝗谎挥辉恢毁慧晦贿秽会烩汇讳诲绘荤浑伙获货祸击机稽积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾稼价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱椒焦胶浇骄娇搅铰矫侥脚饺缴绞教轿较揭秸阶节茎惊经景颈静敬镜径痉竟竞净纠厩旧驹举据锯惧剧鹃绢攫杰睫洁结藉诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军俊浚骏开凯堪坎康糠颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥奎傀馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒肋类泪冷梨黎篱离理里鲤礼荔丽厉励砾历痢沥隶哩俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅聊疗寥辽撂镣猎临邻鳞凛赁菱龄铃凌灵岭领馏刘龙聋咙笼隆垄拢陇楼娄搂篓陋芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣履屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡落骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们蒙盟锰梦谜弥觅绵勉缅藐庙灭悯闽鸣铭谬摹谋亩钠纳难挠脑恼闹呢馁腻蔫撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟懦诺欧鸥殴呕沤潘盘盼庞国山爱下赔喷鹏骗飘频贫苹凭评坡泼颇扑铺朴谱脐齐骑岂启砌气弃讫牵扦钎铅迁签谦黔钱钳潜浅谴堑歉枪呛羌墙蔷强抢锹桥乔侨撬翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱取龋颧权痊劝炔却鹊让饶扰绕热韧认纫荣绒褥软锐闰润撒洒萨鳃赛伞嗓丧骚扫涩杀纱啥筛晒闪陕赡缮伤赏捎烧绍赊赦摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎熟暑署黍属术树竖数帅双谁税瞬顺说硕烁丝饲耸怂颂讼诵艘擞苏诉肃蒜虽绥碎岁孙损笋梭缩琐锁獭挞抬酞摊贪瘫滩坛痰谭谈袒探叹汤烫涛绦腾誊锑题啼体嚏涕屉条贴铁厅听烃铜统头图涂团颓蜕退拖脱鸵驮驼椭洼袜弯湾顽万网韦违围惟为潍维苇伟伪纬谓卫温闻纹稳问翁瓮挝蜗涡窝握呜钨乌诬无芜吴坞雾务误锡牺膝檄袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪限线厢镶乡详响项萧销晓啸些蝎协挟携胁谐写卸懈泻谢锌衅兴汹锈绣戌虚嘘须许绪续轩悬选癣绚薛学勋询寻驯训讯逊压鸦鸭哑亚讶咽阉烟盐严颜阎艳厌砚唁彦谚验鸯杨扬疡阳痒养样邀瑶摇尧遥窑谣药噎爷页业叶夜壹医铱颐遗仪彝蚁艺亿逸疫毅忆义诣议谊译异翌绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈雍踊咏涌优忧邮铀犹游诱盂愚舆鱼渝渔娱与屿语吁御狱誉预驭鸳渊辕园员圆源缘远愿院约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏遭凿枣灶责择则泽贼赠扎札轧铡闸诈斋债瞻毡盏斩辗崭蘸栈战湛绽张涨帐账胀赵蛰辙锗这甄臻贞针侦诊振镇阵挣睁狰帧郑证织职殖执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍棕踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄"
surnfufan="皚藹礙愛翺襖奧澳靶耙壩罷擺敗扳頒辦絆幫綁鎊謗剝雹飽寶報鮑輩貝鋇狽備憊繃筆蓖畢斃閉弊臂陛邊編貶變辯辮鼈別癟瀕濱賓擯餅撥缽鉑駁蔔補簿怖參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫猖場嘗長償腸廠暢鈔車掣徹郴塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵酬疇躊籌綢醜櫥廚鋤雛礎儲搐觸處傳瘡闖創錘純戳綽茨雌辭瓷詞賜聰蔥囪從叢湊醋促躥竄瘁淬撮措錯達戴帶貸擔單鄲撣膽但憚誕彈當擋黨蕩檔搗島禱導盜燈鄧迪敵滌遞締顛滇點墊電奠澱釣調爹蝶叠諜疊釘頂錠訂東懂動棟凍鬥犢獨讀睹賭鍍鍛斷緞兌隊對噸敦頓鈍遁哆奪鵝額訛惡遏餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓峰鋒風瘋逢馮縫諷鳳膚輻撫輔賦複腹負訃婦縛噶該概鈣蓋幹趕稈贛岡剛鋼綱崗臯搞鎬擱鴿疙閣鉻個給羹耿龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過骸駭韓漢閡赫鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話徊懷壞歡環還緩換喚瘓煥渙黃蝗謊揮輝恢毀慧晦賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機稽積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀稼價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬椒焦膠澆驕嬌攪鉸矯僥腳餃繳絞教轎較揭稭階節莖驚經景頸靜敬鏡徑痙竟競淨糾廄舊駒舉據鋸懼劇鵑絹攫傑睫潔結藉誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍俊浚駿開凱堪坎康糠顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺奎傀饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘肋類淚冷梨黎籬離理裏鯉禮荔麗厲勵礫曆痢瀝隸哩倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒聊療寥遼撂鐐獵臨鄰鱗凜賃菱齡鈴淩靈嶺領餾劉龍聾嚨籠隆壟攏隴樓婁摟簍陋蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶履屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾落駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們蒙盟錳夢謎彌覓綿勉緬藐廟滅憫閩鳴銘謬摹謀畝鈉納難撓腦惱鬧呢餒膩蔫攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧懦諾歐鷗毆嘔漚潘盤盼龐國山愛下賠噴鵬騙飄頻貧蘋憑評坡潑頗撲鋪樸譜臍齊騎豈啓砌氣棄訖牽扡釺鉛遷簽謙黔錢鉗潛淺譴塹歉槍嗆羌牆薔強搶鍬橋喬僑撬翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅取齲顴權痊勸炔卻鵲讓饒擾繞熱韌認紉榮絨褥軟銳閏潤撒灑薩鰓賽傘嗓喪騷掃澀殺紗啥篩曬閃陝贍繕傷賞捎燒紹賒赦攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖熟暑署黍屬術樹豎數帥雙誰稅瞬順說碩爍絲飼聳慫頌訟誦艘擻蘇訴肅蒜雖綏碎歲孫損筍梭縮瑣鎖獺撻擡酞攤貪癱灘壇痰譚談袒探歎湯燙濤縧騰謄銻題啼體嚏涕屜條貼鐵廳聽烴銅統頭圖塗團頹蛻退拖脫鴕馱駝橢窪襪彎灣頑萬網韋違圍惟爲濰維葦偉僞緯謂衛溫聞紋穩問翁甕撾蝸渦窩握嗚鎢烏誣無蕪吳塢霧務誤錫犧膝檄襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲限線廂鑲鄉詳響項蕭銷曉嘯些蠍協挾攜脅諧寫卸懈瀉謝鋅釁興洶鏽繡戌虛噓須許緒續軒懸選癬絢薛學勳詢尋馴訓訊遜壓鴉鴨啞亞訝咽閹煙鹽嚴顔閻豔厭硯唁彥諺驗鴦楊揚瘍陽癢養樣邀瑤搖堯遙窯謠藥噎爺頁業葉夜壹醫銥頤遺儀彜蟻藝億逸疫毅憶義詣議誼譯異翌繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰雍踴詠湧優憂郵鈾猶遊誘盂愚輿魚渝漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓源緣遠願院約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒遭鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債瞻氈盞斬輾嶄蘸棧戰湛綻張漲帳賬脹趙蟄轍鍺這甄臻貞針偵診振鎮陣掙睜猙幀鄭證織職殖執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬棕蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩"
if types=1 then
"@#简到烦
surnfujtofstr=surnfujof(str,surnfujian,surnfufan)
elseif types=2 then
"@#简到烦
surnfujtofstr=surnfujof(str,surnfufan,surnfujian)
end if
surnfujtof=surnfujtofstr
end function
function surnfujof(str,str1,str2)
dim surnfufori,finlishstr,surnfulens
surnfulens=len(str)
finlishstr=""
for surnfufori=1 to surnfulens
if instr(str1,mid(str,surnfufori,1))<>0 then
finlishstr=finlishstr&amp;mid(str2,instr(str1,mid(str,surnfufori,1)),1)
else
finlishstr=finlishstr&amp;mid(str,surnfufori,1)
end if
next
surnfujof=finlishstr
end function
%>


调用代码:
response.write surnfujtof("我",1)

注释:1简到繁  2繁到简;其中“我”为需要转换的字符,希望对大家有用。

Tags: 简繁转换

php一个基于SMTP的邮件发送类

PHP自带的Mail函数使用起来不怎么灵活,而且不支持SMTP。

参考网上的一些资料写了一个SMTP邮件类,花了半天时间,不过可惜不支持基于SSL的GMail,群发、附件及MIME邮件功能接下来继续扩充。
下载文件
点击这里下载文件

代码:

<?

/*
* SMTP 邮件发送类
* Akon @ 2007/02/01
*/

class SMTPMail {

    var $_mailFrom;
    var $_mailTo;
    var $_mailSubject;
    var $_mailBody;
    var $_host;
    var $_user;
    var $_pass;
    var $_port;
    var $_socket;
    var $_request;
    var $_conn;
    var $_debug;
    var $_log;

    function SMTPMail($host, $user, $pass, $port=25, $debug=false) {
        $this->_host = $host;
        $this->_user = base64_encode($user);
        $this->_pass = base64_encode($pass);
        $this->_port = $port;
        $this->_debug = $debug;
        $this->_socket = socket_cr&#101;ate(AF_INET, SOCK_STREAM, SOL_TCP);
        if ($this->_socket) $this->Output(1001);
        else $this->Output(2001);
        $this->_conn = socket_connect($this->_socket, $this->_host, $this->_port);
        if ($this->_conn) $this->Output(1002);
        else $this->Output(2002);
        $this->Output(1003);
    }

    function SendMail($mailFrom, $mailTo, $mailSubject, $mailBody) {
        if (!$this->CheckMail($mailFrom)) $this->Output(2003);
        elseif (empty($mailTo)) $this->Output(2004);
        elseif (empty($mailSubject)) $this->Output(2005);
        elseif (empty($mailBody)) $this->Output(2006);
        else {
            $this->_mailFrom = $mailFrom;
            $this->_mailTo = $mailTo;
            $this->_mailSubject = $mailSubject;
            $this->_mailBody = $mailBody;
            $SendContent = "From:{$this->_mailFrom}\r\n";
            $SendContent .= "To:{$this->_mailTo}\r\n";
            $SendContent .= "Subject:{$this->_mailSubject}\r\n";
            $SendContent .= $this->_mailBody;
            $this->docommand("EHLO HELO\r\n");
            $this->docommand("AUTH LOGIN\r\n");
            $this->docommand($this->_user . "\r\n");
            $this->docommand($this->_pass . "\r\n");
            $this->docommand("MAIL FROM: <" . $this->_mailFrom. ">\r\n");
            $this->docommand("RCPT TO: <" . $this->_mailTo . ">\r\n");
            $this->docommand("DATA\r\n");
            $this->docommand($SendContent ."\r\n.\r\n");
            $this->docommand("QUIT\r\n");
            socket_close($this->_socket);
        }
    }

    function CheckMail($email) {
        return (ereg( "^[^@ ]+@([a-zA-Z0-9-]+.)+([a-zA-Z0-9-]{2}|net|com|gov|mil|org|edu|int)$", $email));
    }

    function docommand($request) {
        $this->_request = $request;
        socket_write ($this->_socket, $this->_request, strlen ($this->_request));
        $this->Output(1004);
        $this->Output(1003);
    }

    function Output($msgcode) {
        switch ($msgcode) {
            case 1001 :
                $msg = "<b>SOCKET Cr&#101;ate:</b> " . socket_strerror(socket_last_error()) . "";
                break;
            case 1002 :
                $msg = "<b>SOCKET Connection:</b> " . socket_strerror(socket_last_error()) . "";
                break;
            case 1003 :
                $msg = "<b>BACK:</b> <font color=\"green\">" . socket_read ($this->_socket, 1024) . "</font>";
                break;
            case 1004 :
                $msg = "<b>CWD:</b> <font color=\"red\">" . htmlentities($this->_request) . "</font>";
                break;
            case 2001 :
                $msg = "SOKET initialization failure, please check your network connections and parameters.";
                break;
            case 2002 :
                $msg = "SOKET failure to establish links, please check your network connections and parameters.";
                break;
            case 2003 :
                $msg = "<b>Error :</b> Mail FROM is invalid mail format.";
                break;
            case 2004 :
                $msg = "<b>Error :</b> Mail TO is null.";
                break;
            case 2005 :
                $msg = "<b>Error :</b> Mail Subject is null.";
                break;
            case 2006 :
                $msg = "<b>Error :</b> Mail Body is null.";
                break;
            case 2007 :
                $msg = "<b>Error :</b> ";
                break;
            default :
                $msg = $msgcode;
                break;
        }
        if ($this->_debug) $this->_log .= "{$msg}";
    }

}

$SMTPMail = new SMTPMail("smtp.163.com", "toale", "******", 25 ,true);
$SMTPMail->SendMail("toale@163.com", "aultoale@126.com", "this is mail title", "this is mail body");
echo nl2br($SMTPMail->_log);
?>

Tags: 邮件, mail, SMTP

给PJBlog增加语法高亮的功能

支持以下类型:
  1. c  
  2. c#  
  3. css  
  4. js  
  5. delphi  
  6. java  
  7. php  
  8. python  
  9. ruby  
10. vb  
11. sql  
12. xml

功能演示
http://www.tsingfeng.com/a...
下载文件
点击这里下载文件

Tags: pjblog

Records:1412