» 您尚未 登录   注册 | 社区服务 | 帮助 | 社区 | 无图版


常州五颜六色网络技术有限公司 -> 网站建设 -> PHP/MySQL三日通-第三天(一)
 XML   RSS 2.0   WAP 

--> 本页主题: PHP/MySQL三日通-第三天(一) 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
阿七




该用户目前不在线
级别: 未验证会员
精华: 0
发帖: 909
威望: 0 点
金钱: 2161 RMB
贡献值: 0 点
在线时间:512(小时)
注册时间:2006-03-29
最后登录:2008-08-07
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

PHP/MySQL三日通-第三天(一)

一、基本函数 ~;l@|7wGz  
&e E=<x  
  欢迎来到本教程的第三课,也是最后一课。如果您已经学过第一课和第二课,那么您已经掌握了MySQL和PHP的安装及编程的基本知识。下面我们要介绍PHP的一些其他函数,这些函数可能会对您有用,使您的开发过程更加简单。首先我们来看看头文件。 [pbo4e,4O  
O_ `VV*  
  大家应该知道头文件的一些基本概念吧?头文件是一个外部文件,它的内容被包含到主程序中。方法也十分简单:在程序文件中引用头文件名,这个头文件就会包含进来了。在PHP中使用头文件,会涉及两个函数:include()和require()。这两个函数差别很小,却很重要,所以我们要认真研究一下。require()函数工作方式与XSSI相类似;不管在程序的哪个部分使用了这个函数,只有程序一开始运行,头文件的内容就被作为程序本身的一部分来处理。因此,如果您在一个条件判定语句中使用了require()函数,那么即使这个条件即使不为真,头文件也会被包含进来。 ojcA<60 '  
dP 3CG8w5  
  而include()函数只是在执行到这一条语句时才会把头文件内容包含进来。如果程序没运行到这里,那PHP是不会管它的。这就意味着,您在条件判定部分使用include时,它会完全按照您希望的那样工作。 01wX`"I  
B Wk/DVue  
  还有,如果您用了require()函数,而您指定的头文件并不存在,那么程序将会停止运行并产生错误。如果您用了include(),程序会产生一个警告信息,但是会继续运行。您可以亲自试一下,运行下面的程序,然后把include()换成require(),再比较两个程序运行的结果。 tXNm$Cq.|  
_Gn2o2T  
$#@60;html$#@62; =bfJ^]R  
@$ne{2J3  
$#@60;body$#@62; L-ET<'u  
GWZ }7ake  
J%u=Ucdh  
|]jb& M  
$#@60;?php JZ)RGSG i  
|n2qVR,  
include("emptyfile.inc"); 7?#J~.d5  
#eoome2Q  
echo "Hello World"; T$>WE= Y  
h}[-'>{  
?$#@62; N-G1h?e4  
nEJq_  
s3z$e+A8  
U>YAdrx2a  
$#@60;/body$#@62; &-;4.op  
N(; 1o.~  
$#@60;/html$#@62; HJ9Kz^TnC  
Z-^LKe  
$mu^G t  
  我喜欢把头文件的后缀名起成.inc,这样就可以把头文件和一般的程序区分开来。如果您也这么做,那么请您修改Web服务器软件的配置文件,使它能够把.inc文件也当作PHP文件来处理。否则,黑客们也许会猜到您的头文件名,然后用浏览器把头文件内容以纯文本格式显示出来。此时如果您的头文件中有些机密信息(如数据库口令等)那就糟糕了。 < o*-)Tq8GHE  
w^Sz#_2  
  那么,您用头文件来做什么呢?很简单!把对所有程序都通用的那些内容放到头文件里。象HTML文件头啦,脚注啦,数据库连接代码啦,还有您自己定义的一些函数什么的。把下面的文字拷贝到一个文件中,保存为header.inc。 {:Orn%Q  
!=pn77`g >  
  $#@60;?php ynq}76 H0k  
,kiv>{  
$db = mysql_connect("localhost", "root"); IoxgjUa  
q8FTi^=Kb  
mysql_select_db("mydb",$db); T5R-B=YWu  
|LRedD7n  
?$#@62; u8'Zl8 g  
02f~En}>6  
$#@60;html$#@62; ]_Vx{oT7  
t#V!8EpBg  
$#@60;head$#@62; /sUYU (3  
S ^"y4- 2  
$#@60;title$#@62; ?ME6+Z\  
35A|BD) q  
$#@60;?php echo $title ?$#@62; zkt+7,vI  
$ZUdT  
$#@60;/title$#@62;  '<jyw   
sr r :!5  
$#@60;/head$#@62; \MsTB|Z  
<5-[{Q/2z  
$#@60;body$#@62; <C_jF  
i/65v  
$#@60;center$#@62;$#@60;h2$#@62;$#@60;?php echo $title ?$#@62;$#@60;/h2$#@62;$#@60;/center$#@62; t =(!\:[D  
61,; Uc\T  
]jtK I4  
qaqBOHI6G  
  然后再创建另外一个文件,名字是footer.txt,该文件可以包含一些程序结束时用到的一些文字和标记。 F<ZYh  
ls?~+\Jb  
  现在,我们再来创建一个文件,这个文件里面是真正的PHP程序代码。试一下下面的代码,当然,您要确认MySQL数据库服务器正在运行。 0QB iC]9  
d:_t-ZZo  
  $#@60;?php _- [''(E  
bH-ub2@qO  
$title = "Hello World"; Yab%/z2:  
'@cANGg7[  
include("header.inc"); 8|b3j^u  
teOe#*  
$result = mysql_query("SELECT * FROM employees",$db); jG6]A"pr  
@D)al^]x6  
echo "$#@60;table border=1$#@62;\n"; hv)x=e<  
~< P 0]ju  
5uGqX"  
echo "$#@60;tr$#@62;$#@60;td$#@62;名字$#@60;/td$#@62;$#@60;td$#@62;职位$#@60;/tr$#@62;\n"; ~fBtQGdX  
=Ee&da^MB  
while ($myrow = mysql_fetch_row($result)) { /Y*WBTV'  
h&|[eZt?F  
printf("$#@60;tr$#@62;$#@60;td$#@62;%s %s$#@60;/td$#@62;$#@60;td$#@62;%s$#@60;/tr$#@62;\n", $myrow[1], $myrow[2], $myrow[3]); "C?#SO B  
T\:4qETQF]  
} x9NEFtqjm  
Z kgV_<M|  
echo "$#@60;/table$#@62;\n"; E^Y#&skXp3  
{qDSPo  
include("footer.inc"); i}b${n o  
f'8kish  
?$#@62; fTzvmC:g7  
9*$t!r{B@  
  看到发生了什么事了吗?头文件里的内容被合并到程序中,PHP把所有的代码都执行了一遍。注意在包含header.inc头文件之前$title是如何定义的。在header.inc中的代码可以访问到它的值。这样,网页的标题就被改掉了。现在,您可以在任何程序中使用header.inc头文件了,您所要做的不过是在每个主程序中为$title变量取一个合适的值。 TbA}BFT`  
r}Ohkr  
  头文件、HTML、条件判定语句,还有循环语句,这些东西加在一些,您就可以用最简练的代码,写出功能各异的各种复杂程序来。在与函数同时使用时,头文件更能发挥它的效力,我们后面就会看到。 %/EVUN9=  
U T>s 5C  
  接下去,我们会介绍精彩的部分:数据校验。 "vA}FV%tRq  
ai}m OyJs  
二、 数据校验 X$%'  
?m![Pg%  
  想象一下这样的情形:我们把数据库都设计妥当了,现在请用户输入信息来写到数据库中去。假设您有一个字段是要求数字类型的信息,比如价格;而某个可爱的用户,却在这一栏里输入了文字信息,使得您的应用程序的执行过程出现了故障。对您在SQL语句中提供的文字类型的数据,MySQL数据库拒不接受,并向您提出了“严正抗议”。 >82@Q^O  
"BD~xP(  
  怎么办呢?您要用数据校验来防止以上状况发生。 AUeu1(  
7}1~%:6  
  简单地讲,数据校验是指我们对数据(通常是用户经由HTML表格传过来的)进行检查,看看它是否遵从一定的规则。规则可以是多种多样的,比如某一数据元素不能为空,或者要求某一数据项的内容必须满足一定的要求(例如前面的例子中要求必须是数字而不是文字,或者要求电子邮件地址中一定要包含一个“@”字等等)。 2*rH?dz8E  
PiYY6i0  
  数据校验既可以在服务器一端作,也可以在客户端来作。PHP是用来作服务器一端的数据校验的,而JavaScript/" target="_blank">JavaScript或其他客户端脚本编程语言则能够提供客户端的数据校验功能。本文说的是PHP,所以我们在这里着重介绍服务器端的校验。如果您想找一些现成的、在客户端运行的数据较验程序,那您可以去网猴程序库看看。 z25lZI" X`  
0WT{,/>  
  暂时把数据库放在一边不谈,我们先来说说PHP的数据校验方法。如果您愿意(或者说,您想记录我们要校验的那些数据的话),您可以在前面所建的员工数据库的里加入其他字段,很简单,用MySQL的ALTER 语句就行了。 #btLa\HJ  
0?sRDYaX;c  
  有好几个PHP功能都可以用来作数据校验的工作,有些很简单,有些则复杂一些。其中strlen()是比较简单的一个函数,它能够告诉我们一个变量的长度。  rL/H2[d  
Mc#*wEo)8  
  更复杂一点儿的是ereg(),这个函数可以处理完整的常规表达式来进行复杂的校验。我不想就常规表达式讲得太深,因为许多书都是专门写这个问题的。不过我会在下一页中给出一些简单的例子。 )i q-yjO6  
W8Q|$ZJ88F  
  我们先从一个简单的例子开始吧。下面这个程序要检查一个变量是否存在。

[楼 主] | Posted: 2006-04-04 14:09 顶端
阿七




该用户目前不在线
级别: 未验证会员
精华: 0
发帖: 909
威望: 0 点
金钱: 2161 RMB
贡献值: 0 点
在线时间:512(小时)
注册时间:2006-03-29
最后登录:2008-08-07
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



$#@60;html$#@62; I+Jm>XN  
%ThyOl@O  
$#@60;body$#@62; IGS1|  
ZeUvyIG  
$#@60;?php 4Y,R-+f  
1^ _U;O:I  
if ($submit) { k=4N(i/s  
a\IP12F?  
if (!$first || !$last) { u)3 $~ m~  
!_+8A/  
@ U kr  
$error = "对不起,您必须填写所有的栏目!"; F6o_b4l  
} else { %7#-%{  
QU%I43  
// 处理表格输入内容 BBH0OiV=  
$={:r/R`i  
echo "谢谢!"; e%4:) IV!;  
vo\fUT@k  
} NZP.0coY  
} 56e r`=ms  
4(Ov1a>  
if (!$submit || $error) { Q:|l`*.R  
oY1';&BO9  
echo $error; 4l!@=qwn  
5Xl /L  
?$#@62; fLSXPvm  
R+nMy=I%8  
$#@60;P$#@62; hq:&wN 7Q  
by'DQ 00  
$#@60;form method="post" action="$#@60;?php echo $PHP_SELF ?$#@62;"$#@62; ;w6>"O$a  
s f OHl  
[/ !;_b\X  
第一栏: $#@60;input type="text" name="名" value="$#@60;?php echo $first ?$#@62;"$#@62;$#@60;br$#@62; 6`0m ta Q  
H;U)b{  
3m>+-})d  
第二栏: $#@60;input type="text" name="姓" value="$#@60;?php echo $last ?$#@62;"$#@62;$#@60;br$#@62; Mmo6MZ^  
K,6b3kk  
$#@60;input type="Submit" name="submit" value="输入信息"$#@62; wO:Sg=,  
_(d.!qGz  
$#@60;/form$#@62;  6\u!E~zy  
*\wp?s>-t  
$#@60;?php oT{@_U{*J  
)mJf|W!Z#  
BnCKSg7V  
} // if结束 zF@o2<cD@  
:d0Y%vl  
?$#@62; hY*0aZ|(  
i\4hR?  
mAeuw7Ni  
CvPioi  
$#@60;/body$#@62; :qR=>n=  
`/"nTB  
$#@60;/html$#@62; iJv48#'ii  
jSOS}!=  
D?~8za`5  
  这段程序中关键的地方是嵌套的条件判定语句。第一层检查用户是否按了发送数据的按钮。如果是,程序接着检查$first和$last两个变量是否都存在。那个 || 符号表示“或”,而 ! 符号表示“非”。那一句程序用一般语言描述就是“如果$first不存在或者$last不存在,那么就把 $error变量置成下面的值。” O<j PGU  
9'DtaTmGW  
  接下来,我们再进一步,检查一段文字的长度。这对用户口令的检查是很有必要的,因为您不想让某些懒惰的用户输入只有一、两个字的口令,可能会要求他们输入六位长的口令。 R#n%cXc|  
)i>[M"7  
  我们已经讲到strlen()这个函数了。它只是简单地返回一个数字,该数字等于被测变量中所包含的字符个数。这里,我修改一下上面的程序,检查一下$first与$last的长度。 =H %-.m'f2  
1[E#vdbT  
  $#@60;html$#@62; aup6?'G;  
DY{cQb  
$#@60;body$#@62; /<&h@$NHH4  
x|0:P sE  
$#@60;?php .fzu"XAPu  
{kLGWbo|Q  
if ($submit) { 8L5!T6+D&  
mPPk )qy  
if (strlen($first) $#@60; 6 || strlen($last) $#@60; 6) { joa5|t!D9  
?/M_~e.P  
#FYAV%pi  
$error = "对不起,您必须填写所有栏目!"; fd8!KO  
t` 8!AhOgc  
} else { bm}6{28R  
D H ^T x  
u/Fj'*M  
// 处理表格输入内容 k$Rnj`*^  
K{cbn1\,H  
,>LRa  
echo "谢谢!"; MS<SAD>w  
u>.y:>  
} ~V)?>)T  
% *z-PT22  
} zz_[S{v! #  
wH"kk4^  
kGN||h  
if (!$submit || $error) { U3#dT2U  
~!+ _[uJ  
echo $error; 7;LO2<|1  
v })Q  
?$#@62; GlR~%q-jiQ  
59B&2861  
$#@60;P$#@62; Xt,X_o2m|]  
MonS hIz  
$#@60;form method="post" action="$#@60;?php echo $PHP_SELF ?$#@62;"$#@62; V!|e#}1 /  
X QbNH~  
mog9jw  
第一栏: $#@60;input type="text" name="名" value="$#@60;?php echo $first ?$#@62;"$#@62;$#@60;br$#@62; /N^~U&7  
`1p 8C%  
eZF'Ck y  
第二栏: $#@60;input type="text" name="姓" value="$#@60;?php echo $last ?$#@62;"$#@62;$#@60;br$#@62; P#G.lft"O  
B} *V%}:)  
$#@60;input type="Submit" name="submit" value="输入信息"$#@62; @R:#"  
l+ T, 2sd  
$#@60;/form$#@62; ^Gz{6@TY5  
: d'65KMi  
$#@60;?php ,5-Zb3\  
d$1 #<-yP  
%"7WXOv&z  
} // if结束 qw:9zYG}qW  
L :U4N*  
?$#@62; e)pTC97^L  
%{ ~>n"  
\ sf!  
$#@60;/body$#@62; ^!@*P,'I  
c2b6B.4  
$#@60;/html$#@62; w yD%x(  
>_#)3K1y8  
{a4xF2  
  您可以执行一下这段程序,输入六个字或少于六个字的内容。这种校验很简单,但很有效。

[1 楼] | Posted: 2006-04-04 14:09 顶端

常州五颜六色网络技术有限公司 -> 网站建设



Copyright © 2005-2009 5y6s Inc. 苏ICP备05001866号 Powered by PHPWind 5.0.1
Total 0.013786(s) query 5, Gzip enabled
会员言论不代表本站立场 本站法律顾问:北京汇泽律师事务所 韩律师
QQ:点击这里给我发消息 /点击这里给我发消息 /点击这里给我发消息