服务器 4
复习:
基于单表的CRUD操作:
$cid = $_REQUEST['cid'];
$conn = mysqli_connect();
$sql = "DDL/DML/DQL";
$result = mysqli_query($conn, $sql);
//DML: false / true
//DQL: false / 结果集描述对象
$row = mysqli_fetch_row($result)
$row = mysqli_fetch_assoc($result)
$list = mysqli_fetch_all($result, MYSQLI_ASSOC)
练习:
(1)编写SQL:jd.sql,数据库名jd,表名udisk(uid, pic, uname, price, addedTime ),添加四条测试记录 <5min
(2)编写PHP:udisk_add.php,接收客户端提交的pic, uname, price,添加到数据库 提示: PHP函数time()返回系统时间
(3)编写HTML:udisk_add.html,提供一个表单,实现U盘添加
(4)编写PHP:udisk_select.php,在DIV列表中显示出所有的U盘
(5)编写PHP:udisk_delete.php,接收客户端提交的uid,实现记录删除
(6)修改PHP:udisk_select.php,每个U盘右上角添加删除标记,点击后提交给udisk_delete.php,实现删除
今日目标:
(1)HTTP协议详解 —— 重点
1.补充:PHP常用函数
require('x.php') 在当前位置包含指定文件中的内容
2.HTTP协议
超文本传输协议,用于规定客户端浏览器和Web服务器传输数据的格式。HTTP/1.1 - RFC2616
HTTP协议规定两种消息的格式:
(1)请求消息(request):客户端发给服务器的消息
(2)响应消息(response):服务器发给客户端的消息
午间练习:翻译请求消息/响应消息中不认识的单词!!
面试题:常见的HTTP请求方法有哪些?各表示客户端的何种意图? GET/POST/PUT/DELETE/HEAD/CONNECT/TRACE/OPTIONS |
GET请求和POST请求的比较 |
||
|
GET |
POST |
如何发起 |
浏览器中输入URL回车、超链接跳转、JS跳转、SRC/HREF属性请求、GET方式提交表单、AJAX-GET |
POST方式提交表单、AJAX-POST |
请求数据的位置 |
追加在URI后,作为查询字符串,以?开头 |
放在请求主体中 |
请求数据的类型 |
只能是文本字符 |
可以是任意类型,如包含图片、视频等 |
能否用于上传文件 |
否 |
能 |
请求数据长度限制 |
有,浏览器/服务器对请求URI长度有限制(如1KB、4KB等) |
请求主体没有长度限制! |
请求数据需编码? |
需要!一个UTF-8汉字编码为9个字节 |
需要!一个UTF-8汉字编码为9个字节 |
表达的语义 |
表客户端想获取 |
表客户端想传递 |
实现了国际化的网页: internationalization I18N
今日重点:
(1)请求消息中的请求方法——八种
(2)响应消息中的响应状态码——五类
(3)请求消息主体的内容类型 和 响应消息主体的内容类型 区别
3.如何精准的描述一段数据的内容类型
不要使用后缀名!!—— 太杂乱、不可靠
.html、.xhtml、.htm
.jpg、.jpeg
.mp3、.mpeg3
....
可以借鉴MIME中定义的文件类型名称:
text/html
text/css
application/javascript
...
MIME: (Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 |
4.如何修改响应消息的头部
(1)修改Web服务器的配置文件
比较复杂,有些情况下无法修改,如新浪云服务器
(2)若响应文件是HTML,则可以声明<meta http-equiv="响应头部">
仅适用于HTML文件,且只是“等价物”,并非真正的响应头部
(3)使用动态语言代码来控制响应消息头部
如PHP: //设置一个响应消息头部
header('Cache-Control: no-cache');
header('Content-Type: image/png');
5.面试题:根据HTTP协议的知识进行网站访问优化 有哪些方案?
(1)域名解析
尽可能减少域名解析次数——减少跨站外部资源的引用
(2)创建连接
努力减少连接创建次数——启用持久连接避免重复连接
(3)发送请求
尽力减少请求次数——合理设置缓存、资源合并
(4)等待响应
提高服务器端运行速度——提高数据运算及查询速度
(5)接收响应
尽可能减小响应数据长度——启用压缩
课下练习:
(1)百度:如何用PHP接收客户端上传的文件。
(2)实现完整的“用户管理系统”
主要功能:
(1)新用户注册
(2)用户登录
(3)浏览所有用户
(4)用户删除
实现步骤:
(1)编写SQL:jd.sql,表jd_user( uid, uname, upwd, headPic, regTime, loginCount )
(2)编写PHP:user_add.php,接收客户端提交的uname, upwd, headPic,把新用户信息添加到数据库,新用户的注册时间就是服务器当前系统时间,登录次数默认为0
(3)编写HTML: user_add.html,提供注册表单,辅助用户提交注册信息,提交给服务器端PHP页面实现用户注册
(4)编写PHP:user_login.php,接收客户端提交的uname和upwd,验证用户名和密码是否正确,若正确,则修改登录次数实现+1,向客户端返回“登录成功”;否则向客户端返回“用户名或密码错误”
SELECT * FROM jd_user WHERE uname='?' AND upwd='?'
UPDATE jd_user SET loginCount=loginCount+1 WHERE uid=?
(5)编写HTML:user_login.html, 提供登录表单,辅助用户提交登录信息,提交给服务器端PHP页面实现用户登录
(6)编写PHP:user_select.php,在TABLE中列出所有的用户信息
(7)编写PHP:user_delete.php,接收客户端提交的uid,从数据库中删除指定的用户
(8)修改PHP:user_select.php,在TABLE中添加“操作”列,为每个用户添加一个“删除”按钮,点击后实现用户删除