社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 3757阅读
  • 9回复

[讨论](转)十天学会PHP

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
第一天 zw/AZLS  
以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。 ZSC*{dD$E  
:!%VSem  
至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。 HZyA\FS  
oN7SmP_  
下面简单介绍一下PHP的语法。 Z}J5sifr  
513,k$7  
1、嵌入方法: 4Z"}W!A  
m@td[^O-  
类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。 =RQF::[h  
52w@.]  
2、引用文件: a5 D|#9  
G,u=ngZ]  
引用文件的方法有两种:require 及 include。 R6+)&:Ab{R  
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 q&3 ;e4  
HN7CcE+l  
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 +[7~:e}DZ  
:GXF=Df  
3、注释方法: D|:'|7l W  
r;#"j%z  
<?php !6!)H8rX  
echo "这是第一种例子。 " ; // 本例是 C++ 语法的注释 6Y9N= \`  
/* 本例采用多行的 #,%bW[L<N  
注释方式 */ x< A-Ws{^V  
echo "这是第二种例子。 " ; $%y q[$^  
=&}@GsXdo  
echo "这是第三种例子。 " ; # 本例使用 UNIX Shell 语法注释 ^4dE8Ve"@  
?> s^h@b!'7  
xE/?ncTK^  
4、变量类型: "rv~I_zl  
aZOn01v;!&  
$mystring = "我是字符串" ; Pq;OShU_  
$NewLine = "换行了 " ; SH%NYjj  
$int1 = 38 ; 2}hJe+#v  
$float1 = 1.732 ; fF@w:;u  
$float2 = 1.4E+2 ; NJUKH1lIhR  
$MyArray1 = array( "子" , "丑" , "寅" , "卯" ); `Ij@;=(  
^q:-ZgM>  
这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。 b}[S+G-9W  
3Z!%td5n  
5、运算符号: !GcBNQ1p+7  
_olQ;{ U:  
数学运算: 符号 意义 y>I2}P  
+ 加法运算 tW\yt~q,  
- 减法运算 "r9Rr_, >  
* 乘法运算 w'S,{GW  
/ 除法运算 >>U>'}@Q  
% 取余数 LOh2eZ"n  
++ 累加 Q Be6\oq  
-- 递减 380`>"D  
@) Qgy}*5  
字符串运算: I'/3_AX  
K d&/9<{>  
运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的& FY1iY/\Cn  
<? E }L Hp  
`|dyT6V0I_  
$a = "PHP 4" ; L)e" qC_-  
$b = "功能强大" ; ZT0\V ]!B  
echo $a.$b; HI.*xkBXl&  
?> 66yw[,Y  
这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的<%=变量%>,PHP中也可以<?=变量? >。 -ss= c#  
US g"wJY  
逻辑运算: acd[rjeT  
A;oHji#*  
符号 意义 uo9#(6  
< 小于 Q]ersA8 V>  
> 大于 |Y9>kXMl  
<= 小于或等于 i'IT,jz !  
>= 大于或等于 hZ&KE78?  
== 等于 Pfd1[~,  
!= 不等于 FuhmLm'p  
&& 而且 (And) broLC5hbQU  
and 而且 (And) rB>ge]$.  
|| 或者 (Or) >!963>DR  
or 或者 (Or) n;g'?z=hy  
xor 异或 (Xor) As:O|!F  
! 不 (Not) *dl hRa  
Fr9/TI  
今天就说到这里,明天说一下流程控制。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2006-09-03
学习目的:掌握php的流程控制 s8h*nZ)v  
d0El2Ct8  
1、if..else 循环有三种结构 7'0Vb !(  
kiTC)S=])  
第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: Ji4p6$ .j-  
>F/^y O  
if (expr) { statement } YQMWhC,8hy  
^Q/*on;A,/  
其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 [+ud7l  
$8tk|uh  
范例:本例省略大括号。 (s};MdXIz  
,AP&N'  
<?php qZ1'uln=C-  
if ($state==1)echo "哈哈" ; )6"}M;v  
?> K-RmB4WI  
Et=Pr+Q{c  
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。 JZ5k3#@e  
N\{"&e  
范例:本例的执行部分有三行,不可省略大括号。 W06aj ~7Z  
?cU,%<r  
<?php |]\zlH"w  
if ($state==1) { fY<#KM6X  
echo "哈哈 ; AwM`[`ReE  
echo "<br>" ; `7 "="T~ *  
} 5pQpzn =  
?> `fv5U%  
fzsy<Vl",  
GVY7`k"km  
第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下 Q,U0xGGz  
D An2Pqf  
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 \"lz,bT  
<?php I G1];vX  
if ($state==1) { %rwvY`\  
echo "哈哈" ; uwe#& V-  
echo "<br>"; H:fKv7XL  
} I}C2;[aB  
else{ v$ ti=uk$  
echo "呵呵"; F*72g)hVh  
echo "<br>"; ztp|FUi  
} >0^<<=m  
?> EX,>V,.UV  
EPm~@8@"j?  
: auR0FE  
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。 '$ei3  
j.E=WLKV*  
直接看下面的例子 (7 I|lf e  
xSY"Ru  
<?php m:@y_:X0  
if ( $a > $b ) { 8Qvs\TY  
echo "a 比 b 大" ; 'a#lBzu\b  
} elseif ( $a == $b ) { 5`h$^l/  
echo "a 等于 b" ; p2vN=[g9)  
} else { J%"BCbxW~B  
echo "a 比 b 小" ; h"FI]jK|}  
} $1f2'_`8~  
?> lQ 8hY$  
g'.OzD  
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。 ;1k& }v&  
rA~f68h|  
2、 for 循环就单纯只有一种,没有变化,它的语法如下 Z?)g'n  
BJ|l  
for (expr1; expr2; expr3) { statement } fU>l:BzJ K  
6bm7^e(  
其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 nFnM9 pdMK  
;;0'BdsL`  
下例是用 for 循环写的的例子。 |UTajEL  
{npm9w<;  
<?php :=Olp;+_  
for ( $i = 1 ; $i <= 10 ; $i ++) { 2` o @L  
echo "这是第".$i."次循环<br>" ; B+W7zv  
} oE ' P  
?> xf,[F8 2y  
3h7RQ:lUi  
3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。 adLL7  
z33UER"  
语法如下 nCQtn%j't  
=%<=Bn  
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; } :[0 R F^2}  
l5 9a3=q  
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 F0$w9p  
M(X _I`\E  
<?php Fp\;j\pfw  
switch ( date ( "D" )) { )qy?x7   
case "Mon" : VN`.*B|9[  
echo "今天星期一" ; 2KLMFI.F  
break; ibkB>n{(  
case "Tue" : U,g8:M xHK  
echo "今天星期二" ; EI_-5TtRD  
break; mnm ZO}   
case "Wed" : A`7(i'i5]  
echo "今天星期三" ; )eZK/>L&  
break; ocGrB)7eD  
case "Thu" : dl4n -*h  
echo "今天星期四" ; DU^.5f  
break; u*C*O4f>OC  
case "Fri" : M7=,J;@  
echo "今天星期五" ; u8-6s+ O  
break; N/tcW  
default: gFR}WBl/  
echo "今天放假" ; )r e<NE&M  
break; f,G*e367:  
} [qc1 V%g  
?> ~F"S]  
X4%uY  
这里需要注意的是break;别遗漏了,default,省略是可以的。 ]?6wU-a  
3](hMk,}  
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。 /.]u%;%r[  
 2%@tnk|@  
今天就说到这里,明天开始说数据库的使用。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 2 发表于: 2006-09-03
学习目的:学会构建数据库 =u2 z3$  
Fb{N>*l.  
在ASP中,如果是ACCESS数据库你可以直接打开ACCESS来编辑MDB文件,如果是SQL SERVER你可以打开企业管理器来编辑SQL SERVER数据库,但是在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。 $1.-m{Bd  
HVa9b;  
下面说一下它的使用。 Yq ]sPE92  
进入了phpmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。 1jKpLTSs  
lOm01&^"E  
然后在左边下拉菜单中选择那个已经创建的数据库。在下面的 H_&to3b(  
MG?,,8sO  
在数据库 shop 中创建一个新表 : m)A:w.o  
名字 : ;@Zuet  
字段数 : <$s6?6P  
5]&sXs  
中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。 }O\IF}X  
然后就可以开始建立表了。 i:s=  
第一栏是字段的名字;第二栏选择字段类型: _r:Fmn_%-  
我们常用的是以下几个: ad}8~6}_&  
1)VARCHAR,文本类型 48:xvTE?N  
2)INT,整数类型 )U~|QdZ  
3)FLOAT,浮点数类型 %9cT#9!7  
4)DATE,日期型 SH)-(+72d  
5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。 wUaWF$~y  
#Th)^Is  
建立了表以后,可以在左边看到你建立的表,点击以后,你可以: 8?Rp2n*o  
1)按右边的结构:查看修改表结构 y8YsS4E^Q  
2)按右边的浏览:查看表中的数据 "^&H9.z,v  
3)按右边的SQL:运行SQL语句 _d 6'f8[&  
4)按右边的插入:插入一行记录 (\ab%M   
5)按右边的清空:删除表中所有记录 U p@^C"  
6)按右边的删除:删除表 k]p|kutQCy  
jSjC43lh  
还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL SERVER也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的PHPMYADMIN上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句即可。 0/v]YK.  
t?"(Zb  
今天就说到这里,明天继续说数据库操作。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 3 发表于: 2006-09-03
学习目的:学会连接数据库 NgTB4I 8P  
)Fx]LeI;  
PHP简直就是一个函数库,丰富的函数使PHP的某些地方相当简单。建议大家down一本PHP的函数手册,总用的到。 @T^FOTW  
T\9[PX<  
我这里就简单说一下连接MYSQL数据库。 tK;xW  
SZH`-xb!+5  
1、mysql_connect DgT]Nty@b  
5Npxs&Ea  
打开 MySQL 服务器连接。 a,w|r#x]  
语法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整数 ;`oK5  
fg LY{  
本函数建立与 MySQL 服务器的连接。其中所有的参数都可省略。当使用本函数却不加任何参数时,参数 hostname 的默认值为 localhost、参数 username 的默认值为 PHP 执行行程的拥有者、参数 password 则为空字符串 (即没有密码)。而参数 hostname 后面可以加冒号与端口号,代表使用哪个端口与 MySQL 连接。当然在使用数据库时,早点使用 mysql_close() 将连接关掉可以节省资源。 T +vo)9w  
x'g4DYl  
2、 mysql_select_db -J3~j kf  
*H!BThft4  
选择一个数据库。 %*Ex2we&  
语法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整数 wQG?)aaM  
,ayEZ#4.m  
本函数选择 MySQL 服务器中的数据库以供之后的资料查询作业 (query) 处理。成功返回 true,失败则返回 false。 !=eNr<:V.  
$wAR cS  
最简单的例子就是: Ba[,9l[  
$conn=mysql_connect ("127.0.0.1", "", ""); iyn9[>j e  
mysql_select_db("shop"); Xf4~e(O  
连接机MY SQL数据库,打开SHOP数据库。在实际应用中应当加强点错误判断。 =803rNe  
# >k|^*\  
今天就说到这里,明天再说一下数据库的读取。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 4 发表于: 2006-09-03
学习目的:学会读取数据 Ry >y  
eN<L)a:J_  
先看两个函数: HQ@g6  
1、mysql_query l/={aF7+  
送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数 D^4nT,&8  
Oa/zE H  
本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。 VgVDTWs7  
Qa,=  
2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类 G%sq;XT61  
E !ndXz 59  
本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。 7?yS>(VmT  
9)7$UQY  
看一个简单的例子: AJ%E.+@=r  
<? YVc cO~!8  
$exec="select * from user"; !~|-CF0z=  
$result=mysql_query($exec); TR3U<:  
while($rs=mysql_fetch_object($result)) a U\|ZCH\]  
{ & jqylX  
echo "username:".$rs->username."<br>"; 0Agse)  
} {_N9<i{T  
?> HaVhdv3L  
当然,表user中有一个username的字段,这就类似asp中的 jMn,N9Mf  
<% Hk*1Wrs*  
exec="select * from user" e' M&Eh  
set rs=server.createobject("adodb.recordset") Imv#7{ndq  
rs.open exec,conn,1,1 N" L&Z4Z  
do while not rs.eof 4`i8m  
response.write "username:"&rs("username")&"<br>" )I&.6l!#  
rs.movenext ~)f^y!PMQ  
loop ./ {79  
%> Kn:Ml4[;  
当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。 n1PptR  
*|S6iSn9R!  
小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 5 发表于: 2006-09-03
学习目的:学会添加删除修改数据 Wa|V~PL+T  
jae9!W i  
mysql_query($exec); ]P3m=/w  
单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 14 & KE3`  
MoFM'a9  
添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")"; (|BY<Ac3  
Ip'tB4Mq  
删除:$exec="delete from tablename where..."; ]i#p2?BR  
bq ED5;d'#  
修改:$exec="update tablename set item1='".$_POST['item1']."' where ..."; nx'c=gp  
KZjh<sjX|  
说到这里就要说一下表单和php变量传递,如果表单中的一个 <input name="item1" type="text" id="item1"> ~bZ =]i  
表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1'] 0 cycnOd  
gQr+ ~O  
是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者'来包围字符型字段。 -~{Z*1`,  
我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。 O#U maNj/  
."+lij=56  
今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 6 发表于: 2006-09-03
学习目的:学会SESSION的使用 1*8;)#%&  
<}J !_$A  
SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION; hty'L61\z  
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。 w!"L\QT  
C{bxPILw  
下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。 &DMC\R*j  
登陆表单是这样:login.php FY'0?CT$  
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> Q~]oN  
<tr> ARu_S B  
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg"> s-IE}I?;  
<tr class="tdbg"> ts~VO`  
<td colspan="2"><div align="center">Administrators Login</div></td> {\(G^B*\  
</tr>  _BP%@o  
<tr class="tdbg"> ^f,4=-  
<td><div align="center">Username</div></td> #tR:W?!  
<td><div align="center"> 8Q Try%  
<input name="username" type="text" id="username"> ~3:VM_  
</div></td> ;NA5G:eQ  
</tr> `9r{z;UQ  
<tr class="tdbg"> nNCR5&,q  
<td><div align="center">Password</div></td> <'4Wne.z!  
<td><div align="center"> D;!sH?J@+  
<input name="password" type="password" id="password"> `Xos]L'w  
</div></td> dq '2y  
</tr> c6[m'cy  
<tr class="tdbg"> >B{qPrmI  
<td colspan="2"><div align="center"> 0ZjT.Ep  
<input type="submit" name="Submit" value="Submit"> Leb Kzqe  
<input type="reset" name="Submit2" value="Clear"> ATkd#k%S  
</div></td> $L^%*DkM  
</tr> 5$ =[x!x  
</table></td></form> tKt}]KHV  
</tr> ]00s o`  
</table> 9&* 7+!  
L"'=[O~  
处理文件是这样 Tm`@5  
<? :Vxt2@p{  
require_once('conn.php'); xq;>||B  
session_start(); >2s6Y  
$username=$_POST['username']; :=B.)]F.)  
$password=$_POST['password']; E.*hY+kGZ  
$exec="select * from admin where username='".$username."'"; vt5w(}v(  
if($result=mysql_query($exec)) wG)e8,#  
{ KF'fg R  
if($rs=mysql_fetch_object($result)) qefp3&ls  
{ DoczQc-U+  
if($rs->password==$password) :z8/iD y  
{ zh2<!MH  
$_SESSION['adminname']=$username; f$>_>E  
header("location:index.php"); \uTlwS  
} {LiJ=Ebt  
else \NNA"  
{ eA1g}ipm  
echo "<script>alert('Password Check Error!');location.href='login.php';</script>"; ~+'f[!^  
} \Hp!NbnF$  
} _9=87u0  
else `e ZDG  
{ ~a_hOKU5  
echo "<script>alert('Username Check Error!');location.href='login.php';</script>"; 1T#-1n%[k(  
} bR7tmJ[)Z  
} cgG*7E  
else .h <=C&Yg  
{ U1:m=!S;x  
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>"; WuE]pm]c  
} &n | <NF  
|y7TYjg6  
?> M<Bo<,!ua  
n*9QSyJN]  
conn.php是这样: +}m`$B}mJ  
<? <9&GOaJ  
$conn=mysql_connect ("127.0.0.1", "", ""); h1q 3}-  
mysql_select_db("shop"); #v(As) 4^  
?> DTC IVLV  
{qHQ_ _Bl  
由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.asp YQD `4ND  
<? cy@oAoBq  
session_start(); )$p36dWl  
if($_SESSION['adminname']==') 3_@I E2dA  
{ Ly(iq  
echo "<script>alert('Please Login First');location.href='login.php';</script>"; (^~a1@f,J  
} K_+M?ap_  
?> fP<== DK  
}N9PV/a  
呵呵,今天说到这里,明天说一下怎么弄一个分页。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 7 发表于: 2006-09-03
学习目的:做一个分页显示 cl`kd)"v  
(;g/wb:  
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num !QdX+y<re  
t~qSiHw  
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 5 xr2  
S'RRe84 C  
$execc="select count(*) from tablename "; Pjq9BK9p  
$resultc=mysql_query($execc); *As"U99(  
$rsc=mysql_fetch_array($resultc); yx#!2Z0hw  
$num=$rsc[0]; }{:Jj/d p  
.Od@i$E>&  
这样可以得到记录总数 E<LH-_$  
ceil($num/10))如果一页10记录的话,这个就是总的页数 V?t*c [  
&u9,|n]O9  
所以可以这么写 WMKxGZg"  
if(empty($_GET['page'])) A]iT uu5p  
{ kK6t|Yn&  
$page=0; elM<S3  
} UHV"<9tk  
else \gT({XU?  
{ q !}~c  
$page=$_GET['page']; vZQraY nJ  
if($page<0)$page=0; '~yxu$aK  
if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1 !*DY dqQ/  
} w:I!{iX  
_$A?  
这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10"; iPCn-DoIS  
//一页是10记录的 'xuxMav6m  
w?_'sP{pd  
最后我们需要做的就是几个连接: Bs3&y Eq(  
<a href="xxx.php?page=0">FirstPage</a> on hLhrZ  
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> mb_6f:Qh3  
<a href="xxx.php?page=<?=($page+1)?>">NextPage</a> PQi(Oc  
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a> V,Bol(wY  
a-#$T)mmfj  
这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 8 发表于: 2006-09-03
学习目的:注意事项 4<<eqxI$|  
Cw!tB1D  
因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。 "KCG']DF  
I=Y_EjZ D  
1、注意不要漏了分号 7<:o4\q?m  
2、注意不要漏了变量前的$ |U'`Sc  
3、使用SESSION的时候注意不要遗漏session_start(); xA;)02   
wk?i\vm  
如果发生错误的时候,可以采用以下方法: ',Z]w;D!G  
1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句 Z @DDuVr  
2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name 5l,Lp'k  
3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句 wKcuIc$  
4、注意缩进,排除括号不区配的错误 |BtFT  
jc32s}/H  
在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。 +u |SX/C  
lP4s"8E`h  
好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 9 发表于: 2006-09-03
学习目的:学会用PHP上传文件和发邮件 D{6BX-Dw.  
5ld?N2<8/  
上传文件表单必须加上 enctype="multipart/form-data" wU/fGg*M2  
和 <input type="file" name="file"> p")"t`k7  
下面看一下代码: UZ-pN_!Z:  
KAVkYL0  
$f=&$HTTP_POST_FILES['file']; ~4#D G^5  
$dest_dir='uploads';//设定上传目录 M`iE'x  
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复 [\0>@j}Z  
$r=move_uploaded_file($f['tmp_name'],$dest); -:!Wds  
chmod($dest, 0755);//设定上传的文件的属性 TQ~a5q  
00-2u~D&  
上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键 Om;` "5  
W}k/>V_  
至于发邮件就更加简单,可以使用mail()函数 hVz]' ,  
00>knCe6  
mail("收件人地址","主题","正文","From:发件人 Reply-to:发件人的地址"); aU.!+e%_  
EpT^r8I  
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。 8B "^}y\0  
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。 &\ad.O/Q  
U.Z5;E0:  
十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码:
验证问题:
10+5=?,请输入中文答案:十五