PHP
登录注册
登录
1、拿到用户输入的用户名和密码
2、发送给后台
后台:
1、拿到数据到数据库里面进行比对
2、比对的结果 返回给前端
服务器
就是一台电脑 只不过是一台超级电脑 只要运行了 一些特定的程序以后就可以是一台服务器
里面存放了 很多文件夹
0-255个文件夹
每一个文件夹里面 又有 0- 255 个文件夹
256 * 256
网站 www.baidu.com => http://www.baidu.com:443
网址 三个部分组成
1、协议 http(默认端口80) https(默认端口443) file
2、域名 (IP地址)
3、端口
数据库
数据库里面 由很多的 库组成
库是由一张张表组成
格式要求
var num = 100
# $ 声明变量 $变量名
# 每一句 php 代码后面都必须加 ;
输出
echo $num;
#解决中文乱码的问题
header(“content-type:text/html;charset=utf-8;”);
循环
// for($i = 0 ; $i < 3 ; $i++){
// echo $i;
// }
// $i = 0;
// while($i < 3){
// $i++;
// echo $i;
// }
数组
$arr = array(1,2,3); # 索引型数组
# $arr = array("name" => "Jack","age" => 18); # 关联型数组 类似 JS 里面的 {}
# 拿里面的数据 可以通过 [] 获取 不能使用 .
# $num = 10;
# echo 只能输出基本数据类型
# echo $arr;
# print_r($arr); 输出索引
# var_dump($arr); 输出索引和每一项的数据类型
// echo true;
// print_r(true);
# echo 和 print_r 输出true 在页面显示的是1 false 什么也不显示
# var_dump 可以输出布尔值
# var_dump($arr["name"]);
for($i = 0 ; $i < 3 ;$i++){
var_dump('这是我的第 ' .$i. ' 个');
}
# "" 可以解析变量 '' 不能解析变量
# . 在 PHP 里面 是拼接的作用
cookie
php 里面设置 cookie PHP 给我们提供了一个方法 叫做 setcookie
# setcookie('a',100,time() + 10);
修改 cookie 就是再设置一下 把原来的 覆盖了
setcookie('age','90');
cookie 都没有删除的说法 只能设置过期时间
setcookie('age','suibian',time() - 1);
/*
cookie 是浏览器提供给我们存储数据的地方
前端可以操作 cookie 但是后端也能操作 cookie
根据域名来存取 cookie
格式 字符串
`key=value; key=value; `
cookie 默认是一个 会话级别 页面一关闭就没有了 所以可以手动设置 cookie 的过期时间
expires 设置 cookie 的 过期时间
*/
// expires 设置 cookie 的过期时间要以服务器的时间为准
// 我们设置的时候 把自己电脑上获取的时间 往前推算 8个 小时
HTTP
前后端的交流
- 前端给后端发送一条消息
- 后端给前端回一条消息
- 建立连接
- 发送一个消息 (请求 request)
- 服务端回一个消息 ( 响应 response)
- 关闭连接
建立连接的三次握手
-
客户端
自己能够正常发
自己能够正常收
服务端可以正常收
服务端可以正常发- 服务端
自己能够正常发
自己能够正常收
客户端可以正常收
客户端可以正常发
- 客户端给服务端发送一条消息
客户端知道自己能够正常发
服务端知道自己可以正常收
服务端知道客户端可以正常发 - 服务端要给客户端回一条消息
客户端知道自己能够正常发
服务端知道自己可以正常收
服务端知道客户端可以正常发
服务端知道自己可以正常发
客户端知道自己能够正常收
客户端知道服务端可以正常收
客户端知道服务端可以正常发 - 客户端继续给服务端发消息
客户端知道自己能够正常发
服务端知道自己可以正常收
服务端知道客户端可以正常发
服务端知道自己可以正常发
客户端知道自己能够正常收
客户端知道服务端可以正常收
客户端知道服务端可以正常发
服务端知道客户端可以正常收
- 服务端
-
发送一个消息 (请求 request)
- 每一个请求里面包含一个
请求报文
就是对这次请求的一个详细描述 请求报文
里面包含请求行
请求头
请求空行
请求体
- 请求行
GET /login.php?username=11&password=111 HTTP/1.1
GET
请求方式/login.php
请求的 URL (路径标识符)HTTP/1.1
请求协议版本号
- 请求头
Host
主机域名User-Agent
客户端版本Accept
以什么格式解析文件Referer
从哪个地方来Accept-Encoding
数据格式cookie
- 请求空行
在请求头和请求体之间留一个空行 - 请求体
GET 方式提交数据 没有请求体
拼接到浏览器地址栏然后一起发送过去
POST 提交的数据都在请求体里面
- 请求行
- 每一个请求里面包含一个
-
服务端回一个消息 (响应 response)
每一个响应都有一个响应报文
响应报文
里面包含状态行
响应头
响应体
HTTP/1.1 200 OK
- 100 - 599
- 100 - 199 继续连接
- 200 - 299 响应成功
- 300 - 399 重定向成功
- 400 - 499 一切客户端错误
- 500 - 599 一切服务端错误
- 100 - 599
- 响应头
- Date 服务器时间
- Server 服务器版本
- Content-Length 响应体的长度
- Content-Type
- 响应体
-
关闭连接(四次挥手)
- 客户端给服务端发送一条消息 ‘我要准备关闭连接了’
- 服务端给客户端回一条消息 ‘好的 我已经准备好关闭连接’
- 服务端给客户端回一条消息 ‘当我在接收到消息的时候 我已经关闭连接并且不会在回你消息’
- 客户端给服务端发送一条消息 ‘我已经关闭连接 并且不会再给你发送消息了’
-
常见的请求方式
- GET
- POST
- PUT 增加 修改
- DELETE 删除
- PATCH 修改 局部
- CONNECT HTTP 保留的一种请求方式
- OPTIONS
- HEAD 没有任何响应 只是为了拿到头部信息
-
GET 和 POST 的一个区别
- GET
- 相对不安全
- 会被浏览器缓存
- 提交的数据长度有限制
- 数据格式 只支持 ASCII 编码
- POST
- 相对安全
- 不会被浏览器缓存
- POST 请求对数据长度理论上没有限制 但是可以被服务端限制
- 对于数据格式没有要求
- GET
sessionStorage、localStorage和cookie的区别
共同点:都是保存在浏览器端、且同源的
区别:
1、cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下
2、存储大小限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大
3、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭
4、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的
AJAX
ajax
async javascript and xml
请求 和后端的交流手段
1、创建一个 ajax 对象 js 给我们提供了一个内置构造函数
+ XMLHttpRequest
+ ActiveXObject('Microsoft.XMLHttp') IE8以下
2、 // 2、告诉这个对象 你的请求方式 和 请求地址
xhr.open(请求方式,请求地址,待定)
第三个参数 默认是 true 代表异步
改成 false 同步
1、创建一个 ajax 对象
const xhr = new XMLHttpRequest()
// 2、告诉这个对象 你的请求方式 和 请求地址
xhr.open('GET','./login.php')
// 3、把这个请求发送出去
xhr.send()
// 4、需要接受返回的数据
// ajax 的状态码
// xhr.readyState = 4 的时候 表示响应内容已经全部解析完毕 我们可以拿来使用了
// http 状态码
// status
// 需要知道请求是否发送成功 并且是否能够拿到数据
// onreadyStateChange 当 ajax 状态码 发生改变的时候会触发的事件
// responseText 是后端响应回来的内容
h5以后 ajax 对象提供了一个方法 xhr.onload
// 就是 当 ajax 的 状态码为 4 的时候 并且 http 状态码是 2开头的时候 触发的函数
携带参数的 get 请求
// get 请求 携带参数 应该吧参数 拼接到地址后面 ?key=value&key=value&key=value
const xhr = new XMLHttpRequest()
xhr.open(‘GET’, ./login.php?uname=${username}&pwd=${password}
)
Jsonp
同源策略
协议
域名
端口
只要有一个不一样 都不能访问 ( 跨域 )
浏览器规定的
你(客户端)不能随便访问 别人家的东西
promise
用于解决回调地狱,让异步看起来像同步