php网站设计窍门,PHP网站设计思路

本文是对《PHP and MySQL Web Development》 第5版27章中项目的总结。

1.分析所需功能

列出主要功能模块:登录、注册、忘记密码、重设密码、登出、书签浏览、书签增加、书签删除、书签推荐

确定模块之间的先后转移关系:

eb3a9e7a50c39de9eb66bb8838a9d143.png

2.分解所需模块

将模块的逻辑和内容分开:

内容写在function_form.php中

逻辑写在function.php中

设置专门文件用于:

连接数据库

输入数据检验

用户身份验证

浏览器输出

该项目所有文件可以分为以下几类:

1.数据定义文件:bookmarks.sql

用于建立所需数据库和数据表。

2.数据库连接文件:db_fns.php

用于连接数据库。保存着数据库用户的用户名和密码。

3.输入数据检验文件:user_auth_fns.php

用于检验输入数据。检验POST变量的值是否为空,email输入是否合法。

4.用户身份验证文件:user_auth_fns.php

用于验证用户是否能够注册、登录、修改密码、重设密码,以及用户是否已经登录。

由多个相应功能的函数组成,函数接收参数,连接数据库进行查询,返回查询结果或抛出异常。

5.书签操作文件:url_fns.php

用于对书签url进行查询、增加、删除与推荐。功能实现方法与上一类相似。

6.浏览器输出文件:output_fns.php

用于显示所有种类的浏览器输出:

网页名称、页内标题、各种表单、页内URL、网站信息、用户菜单、页尾。

每个函数实现一个种类部位的浏览器输出,函数根据需要可以接收参数,在HTML中插入php显示,也可以通过php输出HTML元素。

7.包含常被引用文件集的文件:bookmark_fns.php

8.9.表单文件及对应的逻辑处理文件

表单文件

login.php

change_passwd_form.php

register_form.php

forgot_form.php

add_bm_form.php

逻辑处理文件

member.php

change_passwd.php

register_new.php

forgot_passwd.php

add_bms.php

其它逻辑处理文件:

delete_bms.php、recommend.php

logout.php

表单文件的特点:

1.包含对bookmark_fns.php中output_fns.php文件中函数的引用(即一些浏览器输出函数)

2.对于登录后才能填写的表单,包含会话开始函数session_start()和检验用户是否已注册会话函数check_valid_user()。

逻辑处理文件的特点: 处理表单提交的数据

1.包含对bookmark_fns.php中output_fns.php文件中函数的引用(即一些浏览器输出函数)

2.包含会话开始函数session_start()。

3.接收POST变量的信息。

4.对表单是否填满、输入是否合法进行判断。

5.继而调用用户身份验证函数,如果验证通过,则显示相关信息。

6.捕捉所有抛出的异常,合理的显示在浏览器上。

3.主要模块关键思路

1.数据库连接模块:

连接数据库,返回mysqli对象。

function db_connect() {

$db = new mysqli('localhost', 'username', 'password', 'database');

if (!$db) {

throw new Exception("Could not connect to database server");

}else {

return $db;

}

}

2.输入数据检验模块:

//检验每个变量都有一个值

function filled_out($form_vars) {

foreach ($form_vars as $key => $value) {

if ((!isset($key)) || ($value == '')) {

return false;

}

}

return true;

}

//检验email

function valid_email($address) {

if(preg_match('/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/', $address)) {

return true;

} else {

return false;

}

}

3.用户身份验证模块:

先连接数据库,然后执行查询语句(最好使用参数化查询方法),根据查询结果返回相应的值。

function login($username, $password) {

$conn = db_connect();

$results = $conn -> query("select * from user where username = '".$username."' and passwd = sha1('".$password."')");

if (!$results) {

throw new Exception('Could not log you in.');

}

if ($results -> num_rows > 0) {

return true;

} else {

throw new Exception('Could not log you in.');

}

}

4.登入登出模块:

//登入成功,设置session

$_SESSION['valid_user'] = $username;

//登出,先保存用户名,再注销,通过判断用户名是否存在给出不同提示

$old_user = $_SESSION['valid_user'];

unset($_SESSION['valid_user']);

$result_dest = session_destroy();

if (!empty($old_user)) {

if ($result_dest) {

echo 'Logged out.

';

}else {

echo 'Could not log you out.

';

}

}else {

echo 'You are not logged in ,so have not been logged out.

';

}

5.url推荐模块的sql语句:

如果两个用户收藏了相同的URL,那么可能他们有相似的爱好,就可以把其中一个用户收藏的其它URL推荐给另一个用户。

bookmark数据表一共有两列,bm_URL和username。

$query = "select bm_URL

from bookmark

where username in

(select distinct(b2.username)

from bookmark b1, bookmark b2

where b1.bm_URL = b2.bm_URL

and b1.username != b2.username

and b1.username = '".$valid_user."')

and bm_URL not in

(select bm_URL

from bookmark

where b1.username = '".$valid_user."')

group by bm_URL

having count(bm_URL)>".$popularity;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值