想要完成完整的 Web 网站,还需要学习什么?
-
1.搭建 WEB 服务器(提供网站服务的机器)
-
2.HTTP(浏览器与服务端的通讯协议)
-
3.服务端开发(动态网页技术)
-
4.数据库操作(服务端存储数据方式)
-
5.AJAX(浏览器与服务端的数据交互方式)
1.服务器
1.1 什么是服务器
一台安装特定软件的公共计算机,用于提供特定的服务。
安装了apache就是web服务器,安装了mysql就是数据库服务器
1.2 搭建web服务器
安装web服务器软件(执行几个命令行)
1.3 网络基础概念
1.3.1 ip地址
- 网络设备在某一个具体网络当中的地址,
这个地址由网关来分配 - 单个网络情况(一个设备一个ip)
通过(设备所连接的)网关分配的地址找到我们的设备 - 多个网络情况(一个设备多个ip)
用什么ip,A设备可以访问到这个设备?必须通过相同网关分配的
地址才能访问的到。(也就是说A设备和多Ip设备连接的网关相同)
在移动web开发调试时需要用到
1.3.2 域名
ip的别名,方便记忆
1.3.3 DNS
- DNS 寻址:通过宽带运营商提供的服务器解析一个域名背后对应的 IP的过程。
- DNS 服务器:帮你完成 DNS 寻址过程的 服务器。
1.3.4 端口
端口:外部和计算机进行数据往来的通道。
计算机本身是一个封闭的环境,就像是一个大楼,如果需要有数据通信往来,必须有门,这个门在术语中就叫端 口,每一个端口都有一个编号,每台计算机只有 65536 个端口(0-65535)。 >>一般我们把“占门”的过程叫做监听
1.3.5 URL
网络当中某一个网页的完整访问地址
https://zce.me:80/schools/students?id=18&name=zce#photo
https–>protocol协议
zec.me->主机名
80->端口
zce.me:80->host,主机
/schools/students->path路径
id=18&name=zce->search查找的参数
#photo ->hash
1.4 请求响应流程
(想象一下自己百度查资料的过程)
- 用户打开浏览器
- 地址栏输入我们需要访问的网站网址(URL)
- 浏览器通过 DNS 服务器获取即将访问的网站 IP 地址
- 浏览器发起一个对这个 IP 的请求
- 服务端接收到这个请求,进行相应的处理
- 服务端将处理完的结果返回给客户端浏览器
- 浏览器将服务端返回的结果呈现到界面上
1.5 配置Apache
- 1.监听端口
- 2.网站根目录
网站根目录就是存放我们网站文件的最顶层目录,通常 URL 中域名后面的第一个斜线对应(映射)的就是网 站根目录。 - 3.默认文档
- 4.虚拟主机
如果想要在一台机器上部署多个站点,就必须通过配置
虚拟主机的方式解决。
1.6 静态网站与动态网站
动态网站:每次请求时服务端动态生成HTML返回给用户的网站。
此时web服务器要做的是:
1.根据请求的url对应的文件类型判断是否为静态文件
2.如果请求的是一个静态文件的话
2.1 直接读取这个文件的内容
2.2 将文件内容返回给客户端
3.如果请求的不是一个静态文件的话
3.1 读取这个文件中的代码
3.2 执行这段代码(交给其他程序执行)
3.3 将执行结果得到的字符串返回给客户端
1.6.1 Apache与PHP
可以理解为:Aapche是一家没有太多能力的公司,只能处理一些简单的业务(静态网站),但是心很大想做更多的事(动态网站),所以就想到了外包,所有额外的业务都需要外包给其他程序,而PHP就是理解为一个专门能够处理php业务的外包公司
2.HTTP
超文本传输协议,计算机与计算机之间沟通的一种协议
2.1 报文
2.1.1请求报文
- 请求行:请求方式 /路径 HTTP版本
GET /demo.php HTTP/1.1 - 请求头:
Host:请求的主机
User-Agent:什么客户端帮发送的这次请求。
通过UA可以判断出客户端时手机端还是pc端
Cookie:客户端本地的小票信息
… - 请求体
- 为什么要将请求报文分成这三个部分
因为要按照约定客户端和服务端才能进行沟通
2.1.2 响应报文
- 状态行 :HTTP协议版本 状态码 状态描述
HTTP/1.1 200 OK
常见状态码:
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用。 403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。 - 响应头
服务端想要告诉客户端的一些额外信息
Content-Type:响应体的内容类型
Content-Length:响应的内容大小
… - 响应体
本次请求服务端想要返回给客户端的数据正文,一般都是HTML
3.PHP
任何一门编程语言主要是学习语法和API
3.1 php标记
3.2 语法
重点注意的问题
- 变量
- 双引号字符串和单引号字符串的差异
- 指令式的语法
- foreach
- 函数作用域问题
- 字符串拼接
3.3 特性
-
1.变量作用域
默认函数内不能访问函数所在作用域的成员,如果需要访问全局变量,可以通过 global 关键字声明 -
2.超全局变量
在一个脚本的全部作用域中都可用
G L O B A L S , GLOBALS, GLOBALS,_SERVER… -
3.常量
定义常量:define(‘SYSTEM_NAME’, ‘阿里百秀’);
使用常量:echo SYSTEM_NAME;
ps:在js里的常量
const a=123;
模板字符串
var str=·
${a}
`
str
结果为
“123” -
4.载入其他文件
require,require_once:被载入的文件如果不存在会影响继续运行
inclue,include_once
如果加了once,多次调用不会重复执行被载入的文件 -
5.常用api
api:提供某种特定能力的事物,特点是有输入有输出
字符串,数组,时间,文件操作
4.form表单
4.1 基本使用
必要属性:action,表单提交地址。method,表单以什么方式提交
提交方式:get,set
4.2 表单元素处理
- 1.文本框文本域这一类的元素,直接用元素的name属性作为键,
用户填写的信息作为值,发送到服务端 - 2.单选按钮
提交选中项的value - 3.复选按钮
设置value的checkbox选中提交的value,而没有设置valuede提交的value是on
如果需要同时提交多个选中项,可以在那么属性后面跟上[] - 4.选择框
4.3 文件上传
type 属性为 file 的 input 元素可以通过表单提交文件(上传文件),服务端 PHP 可以通过 $_FILES 获取上 传的文件信息。
array(1) {
["avatar"]=>
array(5) {
["name"]=>
string(17) "demo.jpg"
["type"]=>
string(10) "image/jpeg"
["tmp_name"]=>
string(27) "C:\Windows\Temp\php786C.tmp"
["error"]=>
int(0)
["size"]=>
int(29501)
}
}
name,type,tmp_name,error,size
4.4 JSON
表示有结构的数据 的数据手段
- 1.JSON反序列化
json_decode($json,true/false),如果希望以关联数组的方式而非对象的方式操作数据,
可以将 json_decode 的第二个参数设置为 true
5.HTTP会话
5.1 Cookie
// 设置 cookie
setcookie(“TestCookie”, “hello”, time() + 1 * 60 * 60); /* 1 小时过期 */
// 获取 cookie
echo $_COOKIE[“TestCookie”];
5.2 Session
由于 Cookie 是服务端下发给客户端由客户端本地保存的。
换而言之客户端可以在本地对其随意操作,包括删除和 修改。
如果客户端随意伪造一个 Cookie 的话,对于服务端是无法辨别的,就会造成服务端被蒙蔽,构成安全隐 患。于是乎就有了另外一种基于 Cookie 基础之上的手段:Session:
Session 区别于 Cookie 一个很大的地方就是:Session 数据存在了服务端,而 Cookie 存在了客户端本地,存在服 务端最大的优势就是,不是用户想怎么改就怎么改了。 Session 这种机制会更加适合于存放一些属于用户而又不能让用户修改的数据