- 阅读权限
- 60
- 精华
- 9
- 最后登录
- 2011-4-7
- 积分
- 3971
- 帖子
- 1647
- 威望
- 210
- 金币
- 249 个
- 体力
- 1534
- 激情
- 203
- 注册时间
- 2004-9-10
 
- UID
- 119154
- 积分
- 3971
- 帖子
- 1647
- 威望
- 210
- 在线时间
- 3 小时
- 注册时间
- 2004-9-10
|
发表于 2006-6-12 08:51:56
|显示全部楼层
第三天 怎么构造程序结构?
今天是第三天,我们真正的开始介入PHP的研究!
这里我们从DZ的登录程序入手./logging.php,对应的是./templates/default/login.htm
从login.htm模板我们可以看见:
1.隐身登录:(下拉菜单)
2.界面风格:(下拉菜单)
3.Cookie 有效期:(单选按钮)
4.用户名:(输入框)
5.密码:(密码输入框)
6.安全提问:(下拉菜单)
7.回答:(输入框)
这些组件把用户的信息传输给程序logging.php,然程序判断后做出反应:接收登录还是拒绝
昨天研究过表单域和表单的都应该明白,模板通过
- <form method="post" name="login" action="logging.php?action=login">
- ……
- 表单域中的表单组件
- ……
- </form>
复制代码
action命令把表单的值(每个表单都有name,它就是储存数据的变量)传输给PHP程序
action="logging.php?action=login"中的"?"是携带参数符号、还有"&"也是携带参数符号,这个表单域携带的参数命令是action=login,那么到了PHP你就有一个$action变量
我们的目的不是再去了解模板,而是之后的动作,初步对CGI传送数据有个了解后我们进入主题!
你在logging.php很容易找到这样的格式:
- if($action == 'logout') {
- ………………程序语句
- } elseif($action == 'login') {
- ……程序语句
- }
复制代码
这是什么呢?我们知道按了提交按钮那么表单域向PHP程序传送了$action变量它的值是"login",当我们点“退出”$action变量它的值是"logout",程序的一开始就是判断你有没有点退出,这段程序的解释是:
如果用户做的是退出动作,那么这样处理,如果用户填写了登录资料,那么这样处理
if流程给我们一个固定的判断框架
if(判断依据){ //如果判断依据成立 返回值 TRUE 也就是真
执行下列动作
}elseif(判断依据2){ //如果判断依据2成立 返回值 TRUE 也就是真
执行下列动作
}else{ //如果上面的几个判断依据都不成立 返回值 FALSE 也就是假
执行下列动作
}
通过这样一个框架,我们把每个流程用是或否的逻辑把他定义出来,然后每个不同的结果做相应不同的代码操作!
希望你看到这里不会糊涂!
我们在分解一下:
- if($action == 'logout') { //用户点了退出
- clearcookies(); //使用清除缓存函数清除用户的缓存信息
- $groupid = 7; //设定用户组为 7 (7应该是游客用户组)
- $discuz_uid = 0; //会员编号为0 (0也是游客的会员编号)
- $discuz_user = $discuz_pw = ''; //用户名和用户密码为空
- $styleid = $_DCACHE['settings']['styleid']; //风格为默认风格
- showmessage('logout_succeed', dreferer()); //用DZ的自定义函数showmessage向用户发出退出论坛提示信息
复制代码
ok!你很容易了解了当用户点击“退出”后程序执行了那些代码操作。这里我想说说showmessage函数,这是DZ自定义的一个函数,让程序处理完动作后告诉用户我都做了些什么?
'logout_succeed'的意思是什么?你要对应的去找./templates/default/messages.lang.php
呵呵 很容易吧只要这样定义一下 马上就可以做提示了,后面的 dreferer()当然是跳转到那个页面,我们也可以不用函数直接跳转某个链接!
另外几个要注意的PHP每个语句的结束都是用";"分号作为结尾,之所以很多插件添加后出来空白页面,有部分都是没有加结束符!
在条件语句中使用的不是"="而是"==",这称为比较运算符以后我们还会介绍!
- } elseif($action == 'login') { //如果填写会员资料并提交
- ……………………执行程序语句
- if(!submitcheck('loginsubmit', 1, $seccodecheck)) { //如果FORMHASH未验证通过,不是按提交按钮提交数据
- ……………………执行程序语句
- } else { ///如果FORMHASH验证通过,是按提交按钮提交数据
- ……………………检查密码是不是与对应的会员名一致,安全提问是不是回答正确!
- ……………………showmessage('login_succeed', dreferer()); //提示登录成功
- }
- }
复制代码
我们通过这段代码可以完整的了解PHP的程序结构,如何通过程序判断做一个登录后不同结果的代码处理!
除此之外,还有很多程序流程,一般你只要掌握if流程就可以写基本的程序,随着你能力增长,你会用更多的流程完善你的程序的简捷性
好了今天的介绍应该你能看懂 有空的时候多看看
PHP中文手册(CHM)
[ 本帖最后由 泡哥 于 2006-6-15 13:48 编辑 ] |
|