基本架构
从这一章开始,将涉及到和我们新版车协网站紧密相关的具体内容。本章将分别介绍论坛和首页部分的架构。
先说论坛部分,现在车协论坛大体架构如下图:
可见,整个论坛的前台和后台是完全分离的:前台只负责接收用户请求,向后台发送请求,从后台获取具体数据内容,将数据填写到网页
中,返回给用户;前台不能也不应该直接访问数据库。而后台只应该负责和数据库的交互操作,比如查询,插入,删除,更新数据库的具体
内容等等;后台不能也不应该管前台是什么平台,而是一视同仁的对请求返回对应的xml文件,而不管前台是怎么解析渲染。
前台后台互相分工,各司其职,这就是我们现在论坛的整体架构。
下面将以查看贴子内容和注册两者为例更为细致介绍一下我们论坛的架构。具体的详细后台接口说明请参见
后台和接口一节。
- 查看贴子内容
- 用户访问查看帖子的网页,例如 http://www.chexie.net/bbs/content/?bid=4&tid=18105&p=1 ;
- 服务器找到 /bbs/content/index.php ,将其交给php解释器;php解释器进行全文扫描,开始处理所有的php部分;
- index.php调用lib文件夹下的mainfunc.php文件中的mainfunc函数,向后台请求当前用户的个人信息。
- 后台接收到查看用户信息请求,在数据库查询当前用户的个人信息;然后将得到的结果比如用户名,未读消息数,等等,封装
成xml格式返回给前台;
- 前台解析后台返回的xml文件,得到当前用户的用户名,权限,未读消息数等等的内容。
- 前台再使用mainfunc函数,向后台请求bid=4且tid=18015的第一页的帖子内容;同样后台接收到请求,在数据库中进行查询,
并将结果封装成xml返回;前台解析得到返回数据的一个数组,每个数组元素就是一楼的详细信息;
- index.php开始循环数组,开始渲染每一层楼;
- 渲染每一层楼时,对于该楼的作者,继续再向后台发送请求查看用户信息;后台再响应请求,返回对应作者的信息比如头像啊
发帖数啊IP地址啊之类的内容。
- 渲染每层楼时,还要向后台发送获取楼中楼的请求;接到后台的返回内容后渲染出每一层楼中楼结果;
- 根据当前用户是否登录,以及登录后是否有权限等,得到能否查看到具体IP地址;能否回复/删帖等内容;
- 前台经过php解释器处理完后,将得到一个html文件,返回给用户浏览器。
- 注册
- 用户访问注册页面 http://www.chexie.net/bbs/register/
- php解释器开始解释 register 文件夹下的index.php;
- 渲染出注册页面,返回给用户进行填写注册信息;
- 用户进行填写注册信息;
- 在用户填写用户名的时候,会即时通过ajax向后台发送请求,询问该用户名是否被注册;并即时反馈到页面上,
提醒用户ID已经被注册;
- 当用户点击上传头像时,将调用对应的函数处理用户的上传图片请求;上传图片后即时把图片添加到头像列表中;
- 用户点击注册按钮,通过ajax向action.php发送注册请求;
- action.php接收到这个请求,检测验证码是否正确或两次密码是否相同;如果验证码错误,返回错误代码-44,前台收到-44的
返回代码,警告框提示用户验证码错误;
- 验证都正确时,调用lib文件夹下的mainfunc.php中的mainfunc函数向后台发出注册请求;
- 后台接收到请求后进行处理,判断用户名是否存在,是否含有不合法字符;判断注册码是否有效;判断其他各种注册信息是否合法;不合法则给前台返回一条错误信息;否则生成token,然后执行数据库插入操作,在用户列表中新添加一项内容。
- 前台接收到后台返回的信息;如果是发生错误,直接警告框提示给用户;如果未出现错误成功注册了,那么设置cookie值
(username和token),然后跳转到论坛选择讨论区页。至此注册成功。
下面是车协首页的架构;首页和bbs是完全独立的,其架构也完全不同。
我们可以看到,首页并没有明确的前台和后台之分;获取文件是直接访问数据库,而修改数据库则是向/assets/api/main.php发送ajax请求进行处理。
下面将以查看添加通知公告为例更为详细介绍一下首页的流程。
- 查看与添加公告栏
- 用户访问首页;php处理index.php,返回给浏览器;
- 浏览器发现有一个iframe,继续向服务器请求index/main.php的内容,欲加载到iframe里面;
- php处理main.php;直接mysql_connect连接数据库,执行数据库语句查询,得到公告栏的信息,并插入到正文中;
- 服务器返回已经包含main.php给浏览器,用户就可以查看到公告栏;
- 对于有权限的ID,将给出“添加公告”的选项;点击按钮进入添加公告栏的模态框;
- 用户输入信息后,点击确定;浏览器通过ajax请求向/assets/api/main.php发送添加公告栏请求;
- main.php接收到添加公告栏的请求,检查用户权限;检查传来的公告栏标题和地址等是否有效;无效则返回错误信息,若确认有效后连接数据库执行插入操作,然后返回给浏览器成功信息。
- 浏览器接收到后台返回的信息;如果成功则刷新页面,否则则提示用户具体错误在哪。
以上就是论坛和首页的架构,以及对应的具体例子;两者完全独立,架构分开,执行不同的操作。
>>点此进入下一章:数据库<<回到文档首页