浏览模式: 标准 | 列表分类:网站|PHP学习

PHP新手上路(八)

文件上传

  你可以利用PHP实现文件的上传功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上的版本。同时,因为本程序与你的PHP配置文件(PHP3为php3.ini,PHP4为php.in)设置有关。在执行该程序之前请先检查您的PHP配置文件有没有做好如下的设置:

  将;upload_tmp_dir该行的注释符,即前面的分号“;”去掉,使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,例如:upload_tmp_dir = d:\upload  当然,此时你的d:\upload目录必须有读写权限。

  如果你在你的.php3程序里已经定义了上传的路径,此时上传文件的路径以.php3程序里定义的路径为基准。在下例中,receiver.php3文件就指定了用于存放上传文件的目录是:d:\upload。

upload_max_filesize 是用来限制PHP处理的上载文件大小的最大值,以字节计算,缺省值为2097152= 2*1024*1024字节(2兆),你可以通过修改该缺省值来定义最大的上载文件大小。

  修改后不要忘了重启Apache,IIS或PWS服务哦。
  
  同时在PHP中,文件上载还有几点是值得注意的:
1. 在form表单中要将method属性设为post,enctype属性设为multipart/form-data;

2. 在form表单中可以加一个hidden类型的input框,其中名字为 MAX_FILE_SIZE的隐藏值域,通过设置其VALUE可以限制上载文件的大小。当然,这个值不可能超过PHP的配置文件(PHP3为php3.ini,PHP4为php.ini)中的upload_max_filesize,注意这个input框一定要放在所有file类型的input框前面,否则也是无效的哦;

3. 在PHP程序运行完后,上传文件被放在了临时目录下。如果上传文件没有被改名或移动,那么在请求的最后该文件将自动被从临时文件夹中删除,所以我们最好立即将新的上传文件上传移到一个永久目录下或更改其文件名。

首先我们需要一个上载文件的表单网页(upload.htm):
代码:
<HTML>
<HEAD>
<TITLE>Upload Your File</TITLE>
</HEAD>
<BODY>
<FORM ACTION="receiver.php3"
ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="HIDDEN"
NAME="MAX_FILE_SIZE" VALUE="2000000">
<INPUT TYPE="FILE"
N ="uploadfile" SIZE="24" MAXLENGTH="80">
<BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload File!"
NAME="sendit">
<INPUT TYPE="SUBMIT" VALUE="Cancel"
NAME="cancelit"><BR>
</FORM>
</BODY>
</HTML>


处理上载文件的PHP文件(receiver.php3)
代码:
<?
function do_upload ()
{
global $uploadfile, $uploadfile_size;
global $local_file, $error_msg;
if ( $uploadfile == "none" )
{
$error_msg = "对不起,你没有选定任何文件上传!";
return;
}
if ( $uploadfile_size > 2000000 )
{
$error_msg = "对不起,你要上传的文件太大了!";
return;
}
$the_time = time ();

// 在这里指定你用来存放上传文件的目录,你需要对以下目录有写权限
// 同时,我们也可以给上传文件指定另外的目录,如:$upload_dir = "/local/uploads";

$upload_dir = "d:/upload";
$local_file = "$upload_dir/$the_time";
if ( file_exists ( $local_file ) )
{
$seq = 1;
while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; }
$local_file = "$upload_dir/$the_time$seq";
};
rename ( $uploadfile, $local_file );
display_page ();
}
function display_page ()
{
// 这里是你的页面内容
}
?>
<HTML>
<HEAD>
<TITLE>php3 Receiving Script</TITLE>
</HEAD>
<BODY>
<?
if ( $error_msg ) { echo "<B>$error_msg</B><BR><BR>"; }
if ( $sendit )
{
do_upload ();
echo "文件上载成功!";
}
elseif ( $cancelit )
{
header ( "Location: $some_other_script" );
echo "文件上载失败!";
exit;
}
else
{
some_other_func ();
}
?>
</BODY>
</HTML>

PHP新手上路(九)

建设一个简单交互的网站(五)

投票系统

  在许多时候,我们需要收集上网者和网友们的意见。例如:新版页面与旧版页面的比较;对某一事情的看法;对体育比赛结果的预测等等。这时候,你需要一个非常有效的网上调查系统。使用PHP就可以非常方便地实现你的这一构想。

8.1 投票系统(mypolls.php3):

代码:
<?
$status=0;
if(isset($polled)&&($polled=="c-e")){
$status=1;
}
#echo "$status";
if(isset($poll)&&($status==0)){
setcookie("polled","c-e",time()+86400,"/");#time=24h
}
?>
<html>
<head>
<title>新版页面调查</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.tb { border="1" bordercolor="#009933" cellspacing="0" font-size: 9pt; color: #000000}
.head { font-family: "宋体"; font-size: 12pt; font-weight: bold; color: #009933; text-decoration: none}
.pt9 { font-size: 9pt}
a.p9:link { font-size: 9pt; color: #000000; text-decoration: none}
a.p9:visited { font-size: 9pt; color: #000000; text-decoration: none }
a.p9:hover { font-size: 9pt; color: #FF0000; text-decoration: underline}
a.p9:active { font-size: 9pt; color: #FF0000; text-decoration: underline }
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<div class="head">与旧版页面相比较您觉得新版页面:</div><br>
<?
if(!isset($submit)){
?>
<form action="myPolls.php3" method="get">
<input type="radio" name="poll_voteNr" value="1" checked >
<span class="pt9">信息量更大</span> <br>
<input type="radio" name="poll_voteNr" value="2" >
<span class="pt9">网页更精美</span> <br>
<input type="radio" name="poll_voteNr" ue="3" >
<span class="pt9">没什么改进</span> <br>
<input type="radio" name="poll_voteNr" value="4" >
<span class="pt9">其它</span> <br>
<input type="submit" name="submit" value="OK">
<input type="hidden" name="poll" value="vote">
<A HREF="myPolls.php3?submit=OK" class="p9">查看调查结果</A>
</form>
<?
/*
如果想增加其它的选项可直接加上即可
*/
}else{
$descArray=array(1=>"信息量更大",
2=>"网页更精美",
3=>"没什么改进",
4=>"其它"
);
$poll_resultBarHeight = 9; // height in pixels of percentage bar in result table
$poll_resultBarScale = 1; // scale of result bar (in multiples of 100 pixels)
$poll_tableHeader="<table border=1 class=\"tb\">";
$poll_rowHeader="<tr>";
$poll_dataHeader="<td align=center>";
$poll_dataFooter="</td>";
$poll_rowFooter="</tr>";
$poll_tableFooter="</table>";
$coutfile="data.pol";
$poll_sum=0;

// read counter-file
if (file_exists( $coutfile))
{
$fp = fopen( $coutfile, "rt");
while ($Line = fgets($fp, 10))
{
// split lines into identifier/counter
if (ereg( "([^ ]*) *([0-9]*)", $Line, $tmp))
{
$curArray[(int)$tmp[1]] = (int)$tmp[2];
$poll_sum+=(int)$tmp[2];
}
}
// close file
fclose($fp);
}else{//
for ($i=1;$i<=count($descArray);$i++){
$curArray[$i]=0;
}
}
if(isset($poll)){
$curArray[$poll_voteNr]++;
$poll_sum++;
}
echo $poll_tableHeader;

// cycle through all options编历数组
reset($curArray);
while (list($K, $V) = each($curArray))
{
$poll_optionText = $descArray[$K];
$poll_optionCount = $V;
echo $poll_rowHeader;

if($poll_optionText != "")
{
echo $poll_dataHeader;
echo $poll_optionText;
echo $poll_dataFooter;

if($poll_sum)
$poll_percent = 100 * $poll_optionCount / $poll_sum;
else
$poll_percent = 0;
echo $poll_dataHeader;

if ($poll_percent > 0)
{
$poll_percentScale = (int)($poll_percent * $poll_resultBarScale);
}

printf(" %.2f %% (%d)", $poll_percent, $poll_optionCount);

echo $poll_dataFooter;
}

echo $poll_rowFooter;
}

echo "总共投票次数:<font color=red> $poll_sum</font>";
echo $poll_tableFooter;
echo "<br>";
echo "<input type=\"submit\" name=\"Submit1\" value=\"返回主页\" onClick=\"javascript:location=http://gophp.heha.net/index.html\">";
echo " <input type=\"submit\" name=\"Submit2\" value=\"重新投票\" onClick=\"javascript:location=http://gophp.heha.net/mypolls.php3\">";
if(isset($poll)){
// write counter file
$fp = fopen($coutfile, "wt");
reset($curArray);
while (list($Key, $Value) = each($curArray))
{
$tmp = sprintf( "%s %d\n", $Key, $Value);
fwrite($fp, $tmp);
}
// close file
fclose($fp);
}
}
?>
</body>
</html>

注释:从上面我们可以看出该投票系统的基本过程:
1、打开文件取得数据到数组$curArray(文件不存在则初始化数组$curArray)
2、编历数组,处理数据得到所需值
3、计算百分比,控制统计bar图像宽度
4、将数据保存到"data.pol"中

   这里有一点是需要注意:这里的data.pol文本文件需要有写权限。

[GD]描边字、马赛克(zt)

手机上的“中国移动”等字一般都是描边的,这样无论在什么背景上,都很清晰。用GD给图片添加文字的时候,由于图片的颜色不是单一的,导致写上去的文字在图片颜色跟文字颜色相近的地方就比较模糊。昨天写了两个小函数,一个是实现所谓的“描边字”,另一个是将某一图片的指定区域变成马赛克。

» 阅读全文

Tags: gd, 马赛克

html实体与网页编码

最近在解析一个天气预报的xml文件时,发现它里面所有的汉字都转化为了html实体(十进制表示的Unicode编码),这样做的好处就是不管网页的编码是什么,都可以正常的显示汉字,而不会出现乱码,当然也适用于其他字符集。
在php中我们可以用mbstring的mb_convert_encoding函数实现这个正向及反向的转化。
如:

mb_convert_encoding ("你好", "HTML-ENTITIES", "gb2312");    //输出:&#20320;&#22909;
mb_convert_encoding ("&#20320;&#22909;", "gb2312", "HTML-ENTITIES");    //输出:你好
可以查看这个页面:htmlentities.html, 不管选择什么网页编码,网页都能正常显示。

如果需要对整个页面转化,则只需要在php文件的头部加上这三行代码:

mb_internal_encoding("gb2312");  // 这里的gb2312是你网站原来的编码
mb_http_output("HTML-ENTITIES");
ob_start('mb_output_handler');  

PS:要打开mbstring扩展

在asp中我们可以用下面这个函数来实现这个转化:

Function htmlentities(str)
    For i = 1 to Len(str)
        char = mid(str, i, 1)
        If AscW(char) > 0 then
            htmlentities = htmlentities & "&#" & Ascw(char) & ";"
        Else
            htmlentities = htmlentities & "&#" & (65536 + ascW(char)) & ";"
        End if
    Next
End Function  

出自:http://www.ugia.cn/?p=72#m...

网页后退不再出现过期

网页后退不再出现过期。一般是启用了sessin才会这样的。后退后,所有字段的信息都被清空了

» 阅读全文

Tags: session, 过期

让你的ECMS模板更“自动化”

模板制作技巧系列:让你的ECMS模板更“自动化”

这里只是说到我做模板的一些经验,不涉及程序,对HTML有所了解的话,更容易理解。我所列的都是以我制作的大观园网站为例子,希望能起个抛砖引玉的作用。。具体要做什么样的效果,大家可以多动手试下

以中华大观园为例  http://www.5000sky.com/

一、使用公共模板变量定义通用部分
一般可建立[!--temp.header--]  ,[!--temp.footer--],[!--temp.sitename--],[!-- temp.search--]之类的常用部分。然后在页面需要插入的地方直接插入。好处是修改时只需要修改这个变量,不必每个模板页去都去改。

注意:动态页面,如搜索,评论等不支持公共模板变量

二、网站通用导航(所有一级栏目)
在3.7版本以前,只能手工设定,3.7新增的带模板的导航标签可以实现

页面模板内容:
[!--empirenews.listtemp--]<!--list.var1-->[!--empirenews.listtemp--]

列表内容模板
(list.var)  
<a  href="[!--classurl--]"  title="[!--classname--]">[!--classname--]</a>  |  

标签调用  [showclasstemp]0,标签模板ID,0[/showclasstemp]

注意:如果在栏目页显示的是当前栏目的导航,可以加上单引号"0"——我是这样做的。如果ID号填的是为某个栏目的ID,则为特定栏目的导航

点击在新窗口中浏览此图片

Tags: ecms

【资料】PHP语法速查表

key: 取得阵列中的索引资料。
ksort: 将阵列的元素依索引排序。
ldap_add: 增加 LDAP 名录的条目。
ldap_bind: 系住 LDAP 目录。
ldap_close: 结束 LDAP 连结。
ldap_connect: 连上 LDAP 伺服器。
ldap_count_entries: 搜寻结果的数目。
ldap_delete: 删除指定资源。
ldap_dn2ufn: 将 dn 转成易读的名字。
ldap_explode_dn: 切开 dn 的栏位。
ldap_first_attribute: 取得第一笔资源的属性。
ldap_first_entry: 取得第一笔结果代号。
ldap_free_result: 释放传回资料记忆体。
ldap_get_attributes: 取得传回资料的属性。
ldap_get_dn: 取得 DN 值。
ldap_get_entries: 取得全部传回资料。
ldap_get_values: 取得全部传回值。
ldap_list: 列出简表。
ldap_modify: 改变 LDAP 名录的属性。
ldap_mod_add: 增加 LDAP 名录的属性。
ldap_mod_del: 删除 LDAP 名录的属性。
ldap_mod_replace: 新的 LDAP 名录取代旧属性。
ldap_next_attribute: 取得传回资料的下笔属性。
ldap_next_entry: 取得下一笔结果代号。
ldap_read: 取得目前的资料属性。
ldap_search: 列出树状简表。
ldap_unbind: 结束 LDAP 连结。
leak: 泄出记忆体。
link: 建立硬式连结。
linkinfo: 取得连结资讯。
list: 列出阵列中元素的值。
Log: 自然对数值。
Log10: 10 基底的对数值。
lstat: 取得连结档相关资讯。
ltrim: 去除连续空白。
mail: 寄出电子邮件。
max: 取得最大值。
mcrypt_cbc: 使用 CBC 将资料加/解密。
mcrypt_cfb: 使用 CFB 将资料加/解密。
mcrypt_create_iv: 从随机源将向量初始化。
mcrypt_ecb: 使用 ECB 将资料加/解密。
mcrypt_get_block_size: 取得编码方式的区块大小。
mcrypt_get_cipher_name: 取得编码方式的名称。
mcrypt_get_key_size: 取得编码钥匙大小。
mcrypt_ofb: 使用 OFB 将资料加/解密。
md5: 计算字串的 MD5 杂凑。
mhash: 计算杂凑值。
mhash_count: 取得杂凑 ID 的最大值。
mhash_get_block_size: 取得杂凑方式的区块大小。
mhash_get_hash_name: 取得杂凑演算法名称。
microtime: 取得目前时间的 UNIX 时间戳记的百万分之一秒值。
min: 取得最小值。
mkdir: 建立目录。
mktime: 取得 UNIX 时间戳记。
msql: 送出 query 字串。
msql_affected_rows: 得到 mSQL 最后操作影响的列数目。
msql_close: 关闭 mSQL 资料库连线。
msql_connect: 开启 mSQL 资料库连线。
msql_createdb: 建立一个新的 mSQL 资料库。
msql_create_db: 建立一个新的 mSQL 资料库。
msql_data_seek: 移动内部传回指标。
msql_dbname: 取得目前所在资料库名称。
msql_dropdb: 删除指定的 mSQL 资料库。
msql_drop_db: 删除指定的 mSQL 资料库。
msql_error: 取得最后错误讯息。
msql_fetch_array: 传回阵列资料。
msql_fetch_field: 取得栏位资讯。
msql_fetch_object: 传回物件资料。
msql_fetch_row: 传回单列的各栏位。
msql_fieldflags: 获得栏位的旗标。
msql_fieldlen: 获得栏位的长度。
msql_fieldname: 传回指定栏位的名称。
msql_fieldtable: 获得栏位的资料表 (table) 名称。
msql_fieldtype: 获得栏位的型态。
msql_field_seek: 设定指标到传回值的某栏位。
msql_freeresult: 释放传回占用记忆体。
msql_free_result: 释放传回占用记忆体。
msql_listdbs: 列出可用资料库 (database)。
msql_listfields: 列出指定资料表的栏位 (field)。
msql_listtables: 列出指定资料库的资料表 (table)。
msql_list_dbs: 列出可用资料库 (database)。
msql_list_fields: 列出指定资料表的栏位 (field)。
msql_list_tables: 列出指定资料库的资料表 (table)。
msql_numfields: 取得传回栏位的数目。
msql_numrows: 取得传回列的数目。
msql_num_fields: 取得传回栏位的数目。
msql_num_rows: 取得传回列的数目。
msql_pconnect: 开启 mSQL 伺服器长期连线。
msql_query: 送出一个 query 字串。
msql_regcase: 将字串逐字传回大小写字元。
msql_result: 取得查询 (query) 的结果。
msql_selectdb: 选择一个资料库。
msql_select_db: 选择一个资料库。
msql_tablename: 传回指定资料表的名称。
mssql_affected_rows: 取得最后 query 影响的列数。
mssql_close: 关闭与资料库的连线。
mssql_connect: 连上资料库。
mssql_data_seek: 移动列指标。
mssql_fetch_array: 传回阵列资料。
mssql_fetch_field: 取得栏位资讯。
mssql_fetch_object: 传回物件资料。
mssql_fetch_row: 传回单列的各栏位。
mssql_field_seek: 设定指标到传回值的某栏位。
mssql_free_result: 释放传回占用记忆体。
mssql_num_fields: 取得传回栏位的数目。
mssql_num_rows: 取得传回列的数目。
mssql_pconnect: 开启 MS SQL 伺服器长期连线。
mssql_query: 送出一个 query 字串。
mssql_result: 取得查询 (query) 的结果。
mssql_select_db: 选择一个资料库。
mt_getrandmax: 乱数的最大值。
mt_rand: 取得乱数值。
mt_srand: 设定乱数种子。
mysql_affected_rows: 得到 MySQL 最后操作影响的列数目。
mysql_close: 关闭 MySQL 伺服器连线。
mysql_connect: 开启 MySQL 伺服器连线。
mysql_create_db: 建立一个 MySQL 新资料库。
mysql_data_seek: 移动内部传回指标。
mysql_db_query: 送查询字串 (query) 到 MySQL 资料库。
mysql_drop_db: 移除资料库。
mysql_errno: 传回错误讯息代码。
mysql_error: 传回错误讯息。
mysql_fetch_array: 传回阵列资料。
mysql_fetch_field: 取得栏位资讯。
mysql_fetch_lengths: 传回单列各栏资料最大长度。
mysql_fetch_object: 传回物件资料。
mysql_fetch_row: 传回单列的各栏位。
mysql_field_flags: 获得目前栏位的旗标。
mysql_field_len: 获得目前栏位的长度。
mysql_field_name: 传回指定栏位的名称。
mysql_field_seek: 设定指标到传回值的某栏位。
mysql_field_table: 获得目前栏位的资料表 (table) 名称。
mysql_field_type: 获得目前栏位的型态。
mysql_free_result: 释放传回占用记忆体。
mysql_insert_id: 传回最后一次使用 INSERT 指令的 ID。
mysql_list_dbs: 列出 MySQL 伺服器可用的资料库 (database)。
mysql_list_fields: 列出指定资料表的栏位 (field)。
mysql_list_tables: 列出指定资料库的资料表 (table)。
mysql_num_fields: 取得传回栏位的数目。
mysql_num_rows: 取得传回列的数目。
mysql_pconnect: 开启 MySQL 伺服器长期连线。
mysql_query: 送出一个 query 字串。
mysql_result: 取得查询 (query) 的结果。
mysql_select_db: 选择一个资料库。
mysql_tablename: 取得资料表名称。
next: 将阵列的内部指标向后移动。
nl2br: 将换行字元转成 <br>。
number_format: 格式化数字字串。
OCIBindByName: 让动态 SQL 可使用 PHP 变数。
OCIColumnIsNULL: 测试传回行是否为空的。
OCIColumnSize: 取得栏位型态的大小。
OCICommit: 将 Oracle 的交易处理付诸实行。
OCIDefineByName: 让 SELECT 指令可使用 PHP 变数。
OCIExecute: 执行 Oracle 的指令区段。
OCIFetch: 取得传回资料的一列 (row)。
OCIFetchInto: 取回 Oracle 资料放入阵列。
OCILogOff: 关闭与 Oracle 的连结。
OCILogon: 开启与 Oracle 的连结。
OCINewDescriptor: 初始新的 LOB/FILE 描述。
OCINumRows: 取得受影响栏位的数目。
OCIParse: 分析 SQL 语法。
OCIResult: 从目前列 (row) 的资料取得一栏 (column)。
OCIRollback: 撤消当前交易。
OctDec: 八进位转十进位。
odbc_autocommit: 开关自动更动功能。
odbc_binmode: 设定二进位资料处理方式。
odbc_close: 关闭 ODBC 连结。
odbc_close_all: 关闭所有 ODBC 连结。
odbc_commit: 更动 ODBC 资料库。
odbc_connect: 连结至 ODBC 资料库。
odbc_cursor: 取得游标名。
odbc_do: 执行 SQL 指令。
odbc_exec: 执行 SQL 指令。
odbc_execute: 执行预置 SQL 指令。
odbc_fetch_into: 取得传回的指定列。
odbc_fetch_row: 取得传回一列。
odbc_field_len: 取得栏位资料长度。
odbc_field_name: 取得栏位名称。
odbc_field_type: 取得栏位资料形态。
odbc_free_result: 释出传回资料的记忆体。
odbc_longreadlen: 设定传回栏的最大值。
odbc_num_fields: 取得栏位数目。
odbc_num_rows: 取得传回列数目。
odbc_pconnect: 长期连结至 ODBC 资料库。
odbc_prepare: 预置 SQL 指令。
odbc_result: 取得传回资料。
odbc_result_all: 传回 HTML 表格资料。
odbc_rollback: 撤消当前交易。
odbc_setoption: 调整 ODBC 设定。
opendir: 开启目录 handle。
openlog: 打开系统纪录。
Ora_Bind: 连结 PHP 变数到 Oracle 参数。
Ora_Close: 关闭一个 Oracle 的 cursor。
Ora_ColumnName: 得到 Oracle 传回列 (Column) 的名称。
Ora_ColumnSize: 取得栏位型态的大小。
Ora_ColumnType: 得到 Oracle 传回列 (Column) 的型态。
Ora_Commit: 将 Oracle 的交易处理付诸实行。
Ora_CommitOff: 关闭自动执行 Oracle 交易更动的功能。
Ora_CommitOn: 打开自动执行 Oracle 交易更动的功能。
Ora_Do: 快速的 SQL 查询。
Ora_Error: 获得 Oracle 错误讯息。
Ora_ErrorCode: 获得 Oracle 错误代码。
Ora_Exec: 执行 Oracle 的指令区段。
Ora_Fetch: 取得传回资料的一列 (row)。
Ora_FetchInto: 取回 Oracle 资料放入阵列。
Ora_GetColumn: 从传回列 (row) 的资料取得一栏 (column)。
Ora_Logoff: 结束与 Oracle 的连结。
Ora_Logon: 开启与 Oracle 的连结。
Ora_Numcols: 取得栏位的数目。
Ora_Open: 开启 Oracle 的 cursor。
Ora_Parse: 分析 SQL 语法。
Ora_PLogon: 开启与 Oracle 的长期连结。
Ora_Rollback: 撤消当前交易。
Ord: 传回字元的序数值。
pack: 压缩资料到位元字串之中。
parse_str: 剖析 query 字串成变数。
parse_url: 剖析 URL 字串。
passthru: 执行外部程式并不加处理输出资料。
pclose: 关闭档案。
PDF_add_annotation: 加入注解。
PDF_add_outline: 目前页面加入书签。
PDF_arc: 绘弧。
PDF_begin_page: 启始 PDF 档案页面。
PDF_circle: 绘圆。
PDF_clip: 组合所有向量。
PDF_close: 关闭 PDF 档。
PDF_closepath: 形成封闭的向量形状。
PDF_closepath_fill_stroke: 形成封闭的向量形状沿向量绘线并填满。
PDF_closepath_stroke: 形成封闭的向量形状并沿向量绘线。
PDF_close_image: 关闭图档。
PDF_continue_text: 输出文字。
PDF_curveto: 绘贝氏曲线。
PDF_endpath: 关闭目前向量。
PDF_end_page: 关闭 PDF 档案页面。
PDF_execute_image: 放置 PDF 档中图片到指定位置。
PDF_fill: 填满目前的向量。
PDF_fill_stroke: 填满目前的向量并沿向量绘线。
PDF_get_info: 传回档案资讯。
PDF_lineto: 绘直线。
PDF_moveto: 设定处理的坐标点。
PDF_open: 建立新的 PDF 档。
PDF_open_gif: 开启 GIF 图档。
PDF_open_jpeg: 开启 JPEG 图档。
PDF_open_memory_image: 开启记忆体图档。
PDF_place_image: 放置图片到 PDF 档指定位置。
PDF_put_image: 放置图片到 PDF 档。
PDF_rect: 绘长方形。
PDF_restore: 还原环境变数。
PDF_rotate: 旋转物件。
PDF_save: 储存环境变数。
PDF_scale: 缩放物件。
PDF_setdash: 设定虚线样式。
PDF_setflat: 设定平滑值。
PDF_setgray: 指定绘图的颜色为灰阶并填入。
PDF_setgray_fill: 指定填入的颜色为灰阶。
PDF_setgray_stroke: 指定绘图的颜色为灰阶。
PDF_setlinecap: 设定 linecap 参数。
PDF_setlinejoin: 设定连线参数。
PDF_setlinewidth: 设定线宽。
PDF_setmiterlimit: 设定斜边界限。
PDF_setrgbcolor: 指定绘图的颜色为彩色并填入。
PDF_setrgbcolor_fill: 指定填入的颜色为彩色。
PDF_setrgbcolor_stroke: 指定绘图的颜色为彩色。
PDF_set_char_spacing: 设定字元间距。
PDF_set_duration: 设定二页的切换时间。
PDF_set_font: 设定使用的字型及大小。
PDF_set_horiz_scaling: 设定文字水平间距。
PDF_set_info_author: 设定档案作者。
PDF_set_info_creator: 设定建档者字串。
PDF_set_info_keywords: 设定档案的关键字。
PDF_set_info_subject: 设定档案主题。
PDF_set_info_title: 设定档案标题。
PDF_set_leading: 设定行距。
PDF_set_text_matrix: 设定文字矩阵。
PDF_set_text_pos: 设定文字位置。
PDF_set_text_rendering: 设定文字表现方式。
PDF_set_text_rise: 设定文字高度。
PDF_set_transition: 设定页的转换。
PDF_set_word_spacing: 设定字间距。
PDF_show: 输出字串到 PDF 档案。
PDF_show_xy: 输出字串到指定坐标。
PDF_stringwidth: 计算字串的宽度。
PDF_stroke: 沿向量绘线。
PDF_translate: 移动原点。
pfsockopen: 打开网路的 Socket 持续连结。
pg_Close: 关闭 PostgreSQL 伺服器连线。
pg_cmdTuples: 取得被 SQL 指令影响的资料笔数。
pg_Connect: 开启 PostgreSQL 伺服器连线。
pg_DBname: 取得目前的资料库名称。
pg_ErrorMessage: 传回错误讯息。
pg_Exec: 执行 query 指令。
pg_Fetch_Array: 传回阵列资料。
pg_Fetch_Object: 传回物件资料。
pg_Fetch_Row: 传回单列的各栏位。
pg_FieldIsNull: 检查栏位是否有资料。
pg_FieldName: 传回指定栏位的名称。
pg_FieldNum: 取得指定栏位的行数。
pg_FieldPrtLen: 计算可列示的长度。
pg_FieldSize: 计算指定栏位的长度。
pg_FieldType: 获得目前栏位的型态。
pg_FreeResult: 释放传回占用记忆体。
pg_GetLastOid: 取得最后的物件代码。
pg_Host: 取得连线机器名称。
pg_loclose: 关闭大型物件。
pg_locreate: 建立大型物件。
pg_loopen: 开启大型物件。
pg_loread: 读取大型物件。
pg_loreadall: 读取大型物件并输出。
pg_lounlink: 删除大型物件。
pg_lowrite: 读取大型物件。
pg_NumFields: 取得传回栏位的数目。
pg_NumRows: 取得传回列的数目。
pg_Options: 取得连线机器选项。
pg_pConnect: 开启 PostgreSQL 伺服器长期连线。
pg_Port: 取得连线机器埠号。
pg_Result: 取得查询 (query) 的结果。
pg_tty: 取得连线机器终端机。
phpinfo: 传回 PHP 所有相关资讯。
phpversion: 传回 PHP 版本讯息。
pi: 圆周率。
popen: 开启档案。
pos: 传回阵列目前的元素。
pow: 次方。
preg_match: 字串比对剖析。
preg_match_all: 字串整体比对剖析。
preg_replace: 字串比对剖析并取代。
preg_split: 将字串依指定的规则切开。
prev: 将阵列的内部指标往前移动。
print: 输出字串。
printf: 输出格式化字串。
putenv: 设定系统环境变数。
quoted_printable_decode: 将 qp 编码字串转成 8 位元字串。
QuoteMeta: 加入引用符号。
rand: 取得乱数值。
range: 建立一个整数范围的阵列。
rawurldecode: 从 URL 专用格式字串还原成普通字串。
rawurlencode: 将字串编码成 URL 专用格式。
readdir: 读取目录 handle。
readfile: 输出档案。
readgzfile: 读出压缩档。
readlink: 传回符号连结 (symbolic link) 目标档。
recode_file: 记录档案或档案请求到记录中。
recode_string: 记录字串到记录中。
register_shutdown_function: 定义 PHP 程式执行完成后执行的函式。
rename: 更改档名。
reset: 将阵列的指标指到阵列第一个元素。
rewind: 重置开档的读写位置指标。
rewinddir: 重设目录 handle。
rmdir: 删除目录。
round: 四舍五入。
rsort: 将阵列的值由大到小排序。
sem_acquire: 捕获信号。
sem_get: 取得信号代码。
sem_release: 释出信号。
serialize: 储存资料到系统中。
session_decode: Session 资料解码。
session_destroy: 结束 session。
session_encode: Session 资料编码。
session_id: 存取目前 session 代号。
session_is_registered: 检查变数是否注册。
session_module_name: 存取目前 session 模组。
session_name: 存取目前 session 名称。
session_register: 注册新的变数。
session_save_path: 存取目前 session 路径。
session_start: 初始 session。
session_unregister: 删除已注册变数。
setcookie: 送出 Cookie 资讯到浏览器。
setlocale: 设定地域化资讯。
settype: 设定变数型态。
set_file_buffer: 设定档案缓冲区大小。
set_magic_quotes_runtime: 设定 magic_quotes_runtime 值。
set_socket_blocking: 切换搁置与无搁置模式。
set_time_limit: 设定该页最久执行时间。
shm_attach: 开启建立共享记忆体区段。
shm_detach: 中止共享记忆体区段连结。
shm_get_var: 取得记忆体区段中指定的变数。
shm_put_var: 加入或更新记忆体区段中的变数。
shm_remove: 清除记忆体区段。
shm_remove_var: 删除记忆体区段中指定的变数。
shuffle: 将阵列的顺序弄混。
similar_text: 计算字串相似度。
Sin: 正弦计算。
sizeof: 获知阵列的大小。
sleep: 暂停执行。
snmpget: 取得指定物件识别码。
snmpwalk: 取得所有物件。
snmpwalkoid: 取得网路本体树状资讯。
snmp_get_quick_print: 取得 UCD 函式库中的 quick_print 值。
snmp_set_quick_print: 设定 UCD 函式库中的 quick_print 值。
solid_close: 关闭 solid 连结。
solid_connect: 连结至 solid 资料库。
solid_exec: 执行 SQL 指令。
solid_fetchrow: 取得传回一列。
solid_fieldname: 取得栏位名称。
solid_fieldnum: 取得栏位数目。
solid_freeresult: 释出传回资料的记忆体。
solid_numfields: 取得栏位数目。
solid_numrows: 取得传回列数目。
solid_result: 取得传回资料。
sort: 将阵列排序。
soundex: 计算字串的读音值
split: 将字串依指定的规则切开。
sprintf: 将字串格式化。
sql_regcase: 将字串逐字传回大小写字元。
Sqrt: 开平方根。
srand: 设定乱数种子。
stat: 取得档案相关资讯。
strchr: 寻找第一个出现的字元。
strcmp: 字串比较。
strcspn: 不同字串的长度。
strftime: 将伺服器的时间本地格式化。
StripSlashes: 去掉反斜线字元。
strip_tags: 去掉 HTML 及 PHP 的标记。
strlen: 取得字串长度。
strpos: 寻找字串中某字元最先出现处。
strrchr: 取得某字元最后出现处起的字串。
strrev: 颠倒字串。
strrpos: 寻找字串中某字元最后出现处。
strspn: 找出某字串落在另一字串遮罩的数目。
strstr: 传回字串中某字串开始处至结束的字串。
strtok: 切开字串。
strtolower: 字串全转为小写。
strtoupper: 字串全转为大写。
strtr: 转换某些字元。
strval: 将变数转成字串型态。
str_replace: 字串取代。
substr: 取部份字串。
sybase_affected_rows: 取得最后 query 影响的列数。
sybase_close: 关闭与资料库的连线。
sybase_connect: 连上资料库。
sybase_data_seek: 移动列指标。
sybase_fetch_array: 传回阵列资料。
sybase_fetch_field: 取得栏位资讯。
sybase_fetch_object: 传回物件资料。
sybase_fetch_row: 传回单列的各栏位。
sybase_field_seek: 设定指标到传回值的某栏位。
sybase_free_result: 释放传回占用记忆体。
sybase_num_fields: 取得传回栏位的数目。
sybase_num_rows: 取得传回列的数目。
sybase_pconnect: 开启伺服器长期连线。
sybase_query: 送出一个 query 字串。
sybase_result: 取得查询 (query) 的结果。
sybase_select_db: 选择一个资料库。
symlink: 建立符号连结 (symbolic link)。
syslog: 纪录至系统纪录。
system: 执行外部程式并显示输出资料。
Tan: 正切计算。
tempnam: 建立唯一的临时档。
time: 取得目前时间的 UNIX 时间戳记。
touch: 设定最后修改时间。
trim: 截去字串首尾的空格。
uasort: 将阵列依使用者自定的函式排序。
ucfirst: 将字串第一个字元改大写。
ucwords: 将字串每个字第一个字母改大写。
uksort: 将阵列的索引依使用者自定的函式排序。
umask: 改变目前的档案属性遮罩 umask。
uniqid: 产生唯一的值。
unlink: 删除档案。
unpack: 解压缩位元字串资料。
unserialize: 取出系统资料。
unset: 删除变数。
urldecode: 还原 URL 编码字串。
urlencode: 将字串以 URL 编码。
usleep: 暂停执行。
usort: 将阵列的值依使用者自定的函式排序。
utf8_decode: 将 UTF-8 码转成 ISO-8859-1 码。
utf8_encode: 将 ISO-8859-1 码转成 UTF-8 码。
virtual: 完成阿帕契伺服器的子请求 (sub-request)。
vm_addalias: 加入新别名。
vm_adduser: 加入新使用者。
vm_delalias: 删除别名。
vm_deluser: 删除使用者。
vm_passwd: 改变使用者密码。
wddx_add_vars: 将 WDDX 封包连续化。
wddx_deserialize: 将 WDDX 封包解连续化。
wddx_packet_end: 结束的 WDDX 封包。
wddx_packet_start: 开始新的 WDDX 封包。
wddx_serialize_value: 将单一值连续化。
wddx_serialize_vars: 将多值连续化。
xml_error_string: 取得 XML 错误字串。
xml_get_current_byte_index: 取得目前剖析为第几个位元组。
xml_get_current_column_number: 获知目前剖析的第几栏位。
xml_get_current_line_number: 取得目前剖析的行号。
xml_get_error_code: 取得 XML 错误码。
xml_parse: 剖析 XML 文件。
xml_parser_create: 初始 XML 剖析器。
xml_parser_free: 释放剖析占用的记忆体。
xml_parser_get_option: 取得剖析使用的选项。
xml_parser_set_option: 设定剖析使用的选项。
xml_set_character_data_handler: 建立字元资料标头。
xml_set_default_handler: 建立内定标头。
xml_set_element_handler: 设定元素的标头。
xml_set_external_entity_ref_handler: 设定外部实体参引的标头。
xml_set_notation_decl_handler: 设定记法宣告的标头。
xml_set_object: 使 XML 剖析器用物件。
xml_set_processing_instruction_handler: 建立处理指令标头。
xml_set_unparsed_entity_decl_handler: 设定未剖析实体宣告的标头。
yp_errno: 取得先前 YP 操作的错误码。
yp_err_string: 取得先前 YP 操作的错误字串。
yp_first: 传回 map 上第一笔符合的资料。
yp_get_default_domain: 取得机器的 Domain。
yp_master: 取得 NIS 的 Master。
yp_match: 取得指定资料。
yp_next: 指定 map 的下笔资料。
yp_order: 传回 map 的序数。

PHP 函式库及函式 :Session 函式库
本函式库共有 11 个函式
session_start: 初始 session。
session_destroy: 结束 session。
session_name: 存取目前 session 名称。
session_module_name: 存取目前 session 模组。
session_save_path: 存取目前 session 路径。
session_id: 存取目前 session 代号。
session_register: 注册新的变数。
session_unregister: 删除已注册变数。
session_is_registered: 检查变数是否注册。
session_decode: Session 资料解码。
session_encode: Session 资料编码

ODBC 资料库连结函式库
本函式库共有 25 个函式
开放资料连结 (Open Database Connectivity, ODBC) 是连结资料库的共通介面。ODBC 是由微软主导的资料库连结标准,实作环境也以微软的系统最成熟。在 UNIX 系统中,通常要使用其它厂商所提供的 ODBC 介面,有些 UNIX 厂商会自己提供 ODBC 介面 (如 SUN 有为 Solaris 提供 ODBC)。
ODBC 和资料库的查询采用 SQL 语言,这和大部份的资料库查询方式一样,这使得系统可以很容易和各种资料库沟通。当然,透过 ODBC 介面,后端的资料库不一定要 DBMS 这种大型资料库系统,亦可以是资料表 (如 Microsoft Access)、或者是试算表 (如 Microsoft Excel)。
odbc_autocommit: 开关自动更动功能。
odbc_binmode: 设定二进位资料处理方式。
odbc_close: 关闭 ODBC 连结。
odbc_close_all: 关闭所有 ODBC 连结。
odbc_commit: 更动 ODBC 资料库。
odbc_connect: 连结至 ODBC 资料库。
odbc_cursor: 取得游标名。
odbc_do: 执行 SQL 指令。
odbc_exec: 执行 SQL 指令。
odbc_execute: 执行预置 SQL 指令。
odbc_fetch_into: 取得传回的指定列。
odbc_fetch_row: 取得传回一列。
odbc_field_name: 取得栏位名称。
odbc_field_type: 取得栏位资料形态。
odbc_field_len: 取得栏位资料长度。
odbc_free_result: 释出传回资料的记忆体。
odbc_longreadlen: 设定传回栏的最大值。
odbc_num_fields: 取得栏位数目。
odbc_pconnect: 长期连结至 ODBC 资料库。
odbc_prepare: 预置 SQL 指令。
odbc_num_rows: 取得传回列数目。
odbc_result: 取得传回资料。
odbc_result_all: 传回 HTML 表格资料。
odbc_rollback: 撤消当前交易。
odbc_setoption: 调整 ODBC 设定

PHP基本语法 看懂的PHP就入门了

数据库连接

<?
$hostname="localhost";    //数据库地址可以用IP
$username="username";         //用户名称
$userpassword="14589abc"; //用户密码
$database="e-boy";       //数据库名称
$c_id=mysql_connect($hostname,$username,$userpassword);
mysql_select_db($database,$c_id);
/////////////////////////////////////////////////////////////  数据库连  
?>

系例数据段显示方法一
<?
$showdata=mysql_query("select * from pw_smiles",$c_id);
while ($row=mysql_fetch_array($showdata))
{
  echo $row["字段名"];
  //......//
}

?>

系例数据段显示方法二

$result=mysql_db_query($database,"select * from book");

while ($row=mysql_fetch_array($result))
{
  echo $row[book_name]."<br>";
  //......其它数据显示....//
}

单数条记录数据显示方法
<?
require("conn.php");
$c_db=mysql_select_db($dbase,$c_id);
$s_book=mysql_query("select * from book",$c_id);
$row=mysql_fetch_row($s_book);
echo $row[2];
?>

显示记录当中的几条记录

<?

$s_db=mysql_db_query($dbase,"select * from book order by book_id desc");
$record_total=mysql_num_rows($s_db);                      ///记录的总数
$book=mysql_fetch_assoc($s_db);                          
//while($book=mysql_fetch_assoc($s_db)) ////
for($i=1;$i<=5;$i++)
{
   echo $book["book_name"]."<br>";
   $book=mysql_fetch_assoc($s_db);
}
?>

/////////////////////////////////////////////////////////////////////

判断一个变量是否存在的方法:

<?
if(isset($name)) echo $name;
?>

/////////////////////////////////////////////////////////////////////

自动转向代码
<?php
   header("Location:http://biz.260v.com/biz");
?>

//////////////////////////////////////////////////////////////////////

sql语句

查询
select * form 表单 where 条件 order by 字段 desc/asc;
增加
insert into 表单 values ('字段0','字段1','字段2', ...... ,'字段n');
更新
update book set book_name='$book_name',book_age='$book_age',book_address='$book_address',book_content='$book_content' where book_id=$book_id
删除表单
delete from 表单 where 条件;
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10

//////////////////////////////////////////////////////////////////////

分页显示代码

2、原理

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?

现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……

这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。

$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
// 获取当前页数
if( isset($_GET['page']) ){
$page = intval( $_GET['page'] );
}
else{
$page = 1;
}
// 每页数量
$PageSize = 10;
// 获取总数据量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
// 记算总共有多少页
if( $amount ){
if( $amount < $page_size ){ $page_count = 1; } //如果总数据量小于$PageSize,那么只有一页
if( $amount % $page_size ){//取总数据量除以每页数的余数
$page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
}else{
$page_count = $amount / $page_size;//如果没有余数,则页数等于总数据量除以每页数的结果
}
}
else{
$page_count = 0;
}

// 翻页链接
$page_string = ';
if( $page == 1 ){
$page_string .= '第一页|上一页|';
}
else{
$page_string .= '第一页|上一页|';
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= '下一页|尾页';
}
else{
$page_string .= '下一页|尾页';
}
// 获取数据,以二维数组格式返回结果
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);

while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}

基本输出 echo

<?php
echo ("Hello world!");
?>
=====================================================
调用包含文件 require("****.php") include("****.php")

区别
require("****.php");    //require 被调用的文件的内容成为调用文件的一部分.
include("****.php");   //include  php解释过程中,才读入相关的部分.

=====================================================

常量

数值常量
如: 7854   02333  //八进制  0x1232 //十六进制

字符常量

如: 'a'  'b'  'c'

字符串常量
如:  "I am chinese!"

常量的定义
<?
  define("copyright","Copyright ? 2000,netleader.126.com");
  echo copyright
?>

=====================================================

变量

变量的类型:
string //字符串
integer //整形
double  //为浮点数
array  //数组
object  //对像变量

变量的声明
$names
只有在给赋值的时候才知道变的类型

动态变量
$ch=words;
$$ch=china;
echo "$ch";

=====================================================

PHPr的运算符
+ - * / %(取余)  ++ 累加   -- 递减

.  可以将字符串连接起来如

$char1="I am a Chinese";
acho $char1."Are you shur!";

逻辑运算符

<  >  <=   >=  ==   !=  && //而且(and)  AND  //而且(and) || // 或者(or)  OR 或者(or)  Xor  异或  ! // 不(Not)