php网站设计窍门,PHP网站设计思路
本文是对《PHP and MySQL Web Development》 第5版27章中项目的总结。
1.分析所需功能
列出主要功能模块:登录、注册、忘记密码、重设密码、登出、书签浏览、书签增加、书签删除、书签推荐
确定模块之间的先后转移关系:
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;
php网站设计窍门,PHP网站设计思路相关推荐
- 设计素材导航网站,宝藏都在里面!
老板呦呦哟找你要设计稿了,可还是一点灵感思路都没有.用惯了设计素材导航网站也许能让 你不慌不忙的完成任务. 一流设计导航|16map 平常工作学习中用的上的设计师级别的设计素材导航网站. 包含设计素材 ...
- 优秀网站设计:打造有吸引力的网站(原书第3版)
<优秀网站设计:打造有吸引力的网站(原书第3版)> 基本信息 原书名:Web Style Guide, 3rd Edition 作者: (美)Patrick J. Lynch Sarah ...
- 设计类网站的“联系我们”页面设计盘点
诚然,能点到"联系我们"页面的多为有需求或有合作意向的用户,那么"联系我们"页面设计就要做到简洁.方便.下面小编就带领大家围观一下设计类网站的页面设计,来看看他 ...
- 17个设计灵感创意网站
在艺术设计中,创意更是尤为重要,它在某种程度上控制着设计的灵魂,犹如一道闪光,一下子照亮.打通了设计师的思路.比格张收集了许多令人瞠目的和漂亮的网站,一定会给予你很多设计灵感.这些网站都是精心设计的, ...
- 旅游网站的主页代码_一个在优化的网站主页内容应该如何设计?
现在搜索引擎上面的网站只要是互联网行业的网站都是做了优化的只能说是效果好与不好,只要是注重做优化的网站都会非常重视网站主页的设计,那么一个在优化的网站主页内容应该如何设计呢?接下来我们就来了解一下: ...
- 网站推广怎样实现网站设计吸引用户注意完成网站推广指标?
一般情况下想要实现网站推广必然要有吸引用户注意的关键点,如果用户在浏览网站期间没有足够吸引注意的点,用户则会转向其他同类型网站进行访问,导致网站在无形当中流失潜在用户群体,也就是说站长是无法完成网站推 ...
- 网站自动登录功能的设计[转]
网站的自动登录一直都是有利于提高用户体验的功能,如果设计不好,也非常容易泄漏用户的账户信息. 比较常见的功能实现方案是将用户的登录信息保存在浏览器的Cookie中.看到一些设计有缺陷的网站会将用户的用 ...
- Httpster –世界各地最潮的网页设计案例聚合网站
Httpster 这个网站聚合了世界各地最新最潮的网页设计案例,展示了创意的设计,精心的策划,优秀的排版.这些作品都按月份和类别进行了很好划分,你可以方便的找到自己感兴趣的网站案例. 立即去看看 您可 ...
- html5手机电商网页设计代码_Html5网站制作,干货!20个视觉体验和内容俱佳的优秀网页设计...
如何创建一个网页?"Html5网站制作"和"灵感干货!20个视觉.体验和内容俱佳的优秀网页设计"有什么关系和内在关联?在图片方面,有三个具体方案:图片地图.Cs ...
最新文章
- WEBSHELL跳板REDUH使用说明
- 厦大AI研究院今日揭牌成立:数学系校友陈纯院士领衔
- eclipse运行android项目出现The connection to adb is down, and a severe error has occured.的问题
- linux 路由表 的一些相关资料
- windows下maven的使用
- html5 canvas简易时钟
- 【优化算法】果蝇算法(FOA)【含Matlab源码 1568期】
- 华为 eNSP 模拟器安装教程(内含下载地址)
- MySQL恢复数据库(mysql命令)
- ensp vlan 划分
- MongoDB数据库练习题
- LR11破解License
- kubernetes 非安全部署
- 计算机专业技能考核方案,计算机专业技能课教学目标考核方案.doc
- MATLAB 图像处理 将图层随机组合合成图片
- 计算机T层,层螺旋计算机断层摄影术及T磁共振成像对-国家心血管病中心.PDF
- 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计
- 使用 Cipher CipherInputStream CipherOutputStream 实现对文件的加解密
- JZOJ__Day 10:【普及模拟】【USACO】贝茜的晨练计划
- 大数据技术原理与应用之【云数据库】习题
热门文章
- 2017年第21届中国(郑州)中博建博会 会刊(参展商名录)
- jedis:commons-pool-evictor-thread线程不能自动关闭?
- 基于希尔伯特变换的光反馈自混合干涉位移实时跟踪测量系统的瞬时相位计算matlab仿真
- 爱快 Docker NodeRed Tcp服务器远程连接试验
- (六)Alian 的 Spring Cloud Config 配置中心(服务端)
- 首次实战安卓App《第一行代码》欧酷天气遇到的一些问题总结
- 迈拓水表接线及修改modbus地址
- android remoteview 缓存,关于RemoteView的一点愚见(实现桌面小部件)
- X2-xml基础知识二[xml]
- 带服务器的门禁怎么维修,常见故障门禁锁维修方法是什么