一、前后端认知
-
前端
==把后端给的数据展示在页面上(列表页面)
==把前端的数据传递给后端,让后端存储起来(注册) -
后端
==当前端需要数据时,后端从数据库里拿到数据给前端
==把前段传递的数据存储到数据库里 -
数据库
==专门让“后端”进行数据的增删改查
例如:用户在前端注册账号
-
前端
==通过在页面上绑定事件的方式获取用户填写的注册信息
==当用户点击注册的时候把信息传递给后端 -
后端
==接收前端传递过来的注册信息
==把信息存储在数据库里面
==把存储成功或者失败的结果发送给前端 -
前端
==接收后端发回来的反馈信息
==把反馈信息告诉用于注册成功还是失败
整个流程:前端—>后端—>数据库—>后端—>前端
注意:前端不能直接操作数据库,前端要想操作数据库,要把信息告诉给后端,由后端来操作数据库,再将操作结果返回给前端。
二、了解服务器
1、什么是服务器
通俗讲服务器就是网络另一端的一台电脑,它运行了特殊的软件和特殊的环境。
2、服务器的作用
当电脑上运行了服务器环境,这台电脑上就会有一个文件夹对外开放了,这个文件夹叫做服务器空间,其他用户可以通过网络找到这台电脑,并能访问服务器空间里的文件(只读权限)。
3、服务器环境
后端代码需要在服务器环境下运行,浏览器不支持后端代码的运行
- 服务器
== apache —>php
==tomcat —>java
==… - 后端语言
==PHP
==java
==… - 数据库
==mysql
==mongodb
==…
4、服务器集成环境
== WAMP:windows+apache+mysql+php
== MAMP:Mac OS + apache+mysql+php
== LAMP:Linux + apache+mysql+php
5、phpStudy
phpStydy是WAMP集成环境的一种,适合window系统
-
软件对外开放的文件夹(服务器空间)
安装目录里面的WWW文件夹就是apache服务器对外开放的文件夹 -
如何访问服务器文件
== 通过域名找到这台电脑
– 因为服务器安装在我们自己的电脑上
– 我们只要根据ip地址找到我们自己的电脑
– localhost域名和127.0.0.1 ip表示的就是自己电脑本机
– 只要在浏览器输入 localhost或者127.0.0.1
– 就是访问自己电脑上的服务器
– 在加上端口号,就是访问自己电脑上的服务器软件(服务器空间)
– 如果你没有修改端口号,就是80,就可以不写端口号,浏览器会自动添加
– 如果你修改了端口号,比如改成了8090,你就要写localhost:8090或者127.0.0.1:8090
– 访问的就是你的这个软件对外访问的文件夹
– 这个文件夹如果没有修改过就是www目录
– 如果修改过,就是你修改的那个目录
三、了解php
1、php代码书写
- php是后端语言,需要在apache服务器上运行
- 将php文件放到WWW目录里,在浏览器上输入域名或者IP查看
- 每一个php文件,都要写php标签里,以<?php开头,?>结尾,所有php代码写在这个标签里面
- php文件不允许用中文命名
- php结尾必须加分号,如果不添加会报错
2、php的输出语法
-
因为php是一个后端语言,和前端语言不一样
== 前端的输出语句console.log或者alert,就直接反应在浏览器上了
== 后端的语法是谁找后端要的就给谁
== 当浏览器找php要的时候,那么php的输出语法就把输出内容给浏览器
== 当js找php要的时候,那么php的输出语法就把输出内容给js -
php里面的三种常用的输出语法:
echo 输出的内容;
print_r(输出的内容);
var_dump(输出的内容); -
三种输出语法的详细区别:
echo
== 关键字,不需要()
== 只能输出基本数据类型,复杂数据类型会报错
== 遇到布尔值,true会输出1,false会输出空字符串print_r
== 可以输出所有数据类型
== 遇到布尔值,true会输出1,false会输出空字符串var_dump
== 可以输出所有数据类型
== 遇到布尔值会正常输出,true输出true,false输出false
== 并且会带有数据类型和数据的信息
3、php变量
- 在php中,定义变量没有关键字,以$开头就表示一个变量
- 例如 n u m = 100 ; 变 量 名 就 叫 做 num=100; 变量名就叫做 num=100;变量名就叫做num,$不是定义变量的关键字,是变量的一部分。
4、php中字符串的定义
- 在js中字符串的定义,单引号和双引号这两种方式没有区别
- php中字符串的定义也是单引号和双引号两种方式,但有区别
==单引号表示普通的字符串,叫做纯字符串
==双引号是特殊的字符串(拼接字符串),可以在字符串里解析变量;如果以$开头,我们就认为这个后续的单词为变量。 - php中字符串的拼接
==js中使用运算符+进行拼接
==在php中,+只能做数学运算,.用来做字符串的拼接,语法:字符串1.字符串2
==例如:‘hellow’.‘world’
5、php中的数组数据类型
-
索引型数组
==相当于js中的数组
==语法:$arr=array(数据1,数据2…)
==按照索引的下标有序排列
==获取数组中的元素:数组名称[对应的索引值]
==如何获取数组的长度?API:sizeof 和 count -
关联型数组
==相当于js中的对象
==语法:$arr=array(key1=>value1,key2=>value2…)
==注意:不论是key或者value,只要是字符串类型都需要引号包裹,如果没有引号,会被当做变量来使用
==获取关联型数组中的值:数组名称[‘key’]
6、php中乱码问题
- 问题来源:
==html文件中,charset=utf-8,告诉了浏览器解析的方式
==php文件只进行了输出,没有告诉浏览器用什么字符集来解析文本 - 解决方式:
==header(‘content-type:text/html;charset=utf-8;’);
==告诉浏览器使用utf-8字符集解析文本
7、在php文件中导入其他的php文件
- 关键字语法: include “你要导入的文件路径”;
- API语法:require(“你要导入的文件路径”);
四、php中JSON格式转化
1、为什么要进行JSON格式的转化
- JSON格式可以在多种语言之间传递数据,所有语言转换成JSON格式都是一样的
2、php中JSON格式转换的方法
- 把php数据转换成JSON数据
==语法:json_encode(要转换的php格式的数据)
==返回值:转换好的json格式的数据 - 把JSON格式的数据转换成php格式的数据
==语法:json_decode(要转换的json格式的数据)
==返回值:转换好的php格式的数据
五、数据库操作
1、了解数据库
- 整个数据库就是一个存储数据的“大仓库”
- 在整个大仓库中有一个一个的“小仓库”,我们叫做database
- 每个小仓库中还有若干的“表格”
- 每个表都会有字段,相当于表头
- 每个表都会有行,相当于表体
- 整个表结构就类似于excel表格
2、数据库操作
- 建立和数据库的连接
- 创建一个小仓库
- 创建一个表格
- 添加字段
- 添加数据
六、php语言操作数据库
1、php操作数据库的两种语法
- mysql语法—>php5
- mysqli语法—>php7
2、php操作数据库的步骤
1.建立和数据库的连接
- mysqli_connect(‘ip地址’,‘数据库用户名’,‘数据库密码’,‘要操作哪一个数据库’)
==本机ip地址:127.0.0.1或者localhost
==原始的数据库用户名:root
==原始的数据库密码:root
==返回值:返回一个通行秘钥,在后期操作数据库时用
2.操作数据库
- mysqli_query(第一步返回的通行秘钥,‘要执行的sql语句’)
==数据的增删改查都用这个方法,只不过执行的sql语句不同
==返回值就是一个执行结果
==一般查找的的返回结果需要解析
3.解析结果
- mysqli_fetch_assoc(要解析的查询结果)
==不是所有的结果都需要解析
==只有查询的结果需要解析,因为查询的结果看不懂
==如果是增删改结果不需要解析
==返回值:一个解析好的结果,是一个关联型数组
==注意:这个方法只能解析一条数据 - mysqli_fetch_all(要解析的查询结果,使用哪种方法解析)
==解析全部结果
==解析方法:MYSQLI_ASSOC
==返回值:是一个二维数组,里面有所有的数据
4.断开连接
- mysqli_close(通行秘钥)
- 数据库连接成功之后,一定要记得在最后关闭数据库连接,否则你的服务器会非常脆弱
七、常用的sql语句
1、什么是sql语句
- 专门用来操作数据库的语句,语法规范
- mysql数据库只能依靠sql语句来操作
- 分为增删改查的sql语句
2、操作数据库的时候,写入对应的操作语句
- 语法:mysqli_query(连接信息,sql语句)
3、解析结果
- 增加的sql语句,返回结果是:true表示增加成功,false表示增加失败
- 删除的sql语句,返回结果是:true表示删除成功,false表示删除失败
- 修改的sql语句,返回结果是:true表示修改成功,false表示修改失败
- 查询的sql语句,返回结果:
==一个需要解析的查询信息
==查询失败返回false
4、sql语句的语法
- 语法规范:
==sql语句的关键字大写
==表名和字段名尽可能使用反引号包裹 - 语法规则:
==文本内容必须使用引号包裹,表示是一个字符串
5、插入的的sql语句
使用INSERT关键字
语法1:插入一行的所有数据
INSERT INTO `表名` VALUES (数据1,数据2....)
+ 按照数据库里面字段的顺序插入
+ id可以不写具体的,直接写null,会自动增长
+ 例如 INSERT INTO `userinfo` VALUES (null,"张三","123456");
语法2:插入一行的部分数据
INSERT INTO `表名` (字段1,字段2...) VALUES (数据1,数据2...)
+ 可以按照书写字段来添加
+ 只能添加某些字段的内容,剩下的后面在修改
语法3:插入多行数据
INSERT INTO `表名` VALUES (null,数据1,数据2...),(null,数据1,数据2...)
+ 多行数据之间用逗号隔开
当返回结果是false时,表示sql语句有错误
6、删除的sql语句
- 使用DELETE关键字
语法:
DELETE FROM `表名` WHERE 条件
要从哪个表删除满足条件的数据
注意:必须写条件,否则会删除整张表的数据
例如:删除userinfo表密码是123456的数据行的sql语句
$sql="DELETE FROM `userinfo` WHERE `password`='123456'";
7、修改的sql语句
- 使用UPDATE关键字
语法:
UPDATE `表名` SET `字段`=值 WHERE 条件
UODATR `表名` SET `字段1`=值1,`字段2`=值2 WHERE 条件
例如:
修改userinfo表,把用户名是小明的人密码设置成666666
$sql="UPDATE `userinfo` SET `password`='666666' WHERE `username`='小明'";
8、查询的sql语句
- 使用SELECT关键字
语法:
1.查询表里所有的数据
SELECT * FROM `表名`
2.根据条件查询数据
SELECT * FROM `表名` WHERE 条件
3.根据两个条件查询数据,这两个条件都满足
SELECT * FROM `表名` WHERE 条件1 AND 条件2
4.根据两个条件查询数据,两个条件至少满足一个
SELECT * FROM `表名` WHERE 条件1 OR 条件2
5.查询数据库里指定字段包含某一个关键字的数据
SELECT * FROM `表名` WHERE `字段` LIKE `%关键字%`
6.查询数据按照ID降序排列
SELECT * FROM `表名` order by `id` desc
7.从$start开始查询$count条数据
SELECT * FROM `表名` limit $start,$count
八、登录注册
1、需求:该php文件可以实现注册功能
有用户名和密码,就可以把用户名和密码插入数据库
先查询数据是否有该用户
如果没有,则进行插入操作,在页面输出一个{“code”:1}表示注册成功
如果有,则不进行插入操作,在页面输出一个{“code”:0}表示注册失败
$username="小明";
$password="666666";
$link=mysqli_connect('127.0.0.1','root','root','user');
$sql="SELECT * FROM `userinfo` WHERE `username`='$username'";
$res=mysqli_query($link,$sql);
$arr=mysqli_fetch_assoc($res);
if($arr){
print_r('{"code":0}');
}else{
$sql1="INSERT INTO `userinfo` VALUES (null,'$username','$password')";
$res1=mysqli_query($link,$sql1);
if($res1){
print_r('{"code":1}');
}else{
print_r('{"code":0}');
}
}
2、 需求:
给定用户名和密码
查询数据库里是否用一条数据是这个用户名和密码
如果有就是登陆成功,在页面输出一个{“code”:1}表示登陆成功
如果没有就是登陆失败,在页面输出一个{“code”:0}表示登陆失败
$username="小明";
$password="666666";
$link=mysqli_connect('127.0.0.1','root','root','user');
$sql="SELECT * FROM `userinfo` WHERE `username`='$username' AND `passward`='$password'";
$res=mysqli_query($link,$sql);
$arr=mysqli_fetch_assoc($res);
if($arr){
print_r('{"code":1}');
}else{
print_r('{"code":0}');
}
九、php设置cookie
所有后端语言设置cookie的原理都是操作响应头;
因为后端设置cookie形式是间接操作为了前端区分我们通常称之为种cookie;
1、设置cookie
- php中setcookie方法可以设置cookie
- 语法:setcookie(key,value,time)
- key:这条cookie的键名
- value:这条cookie的值
- time:cookie的过期事件,如果不写默认是会话时效
==time()+15 表示15秒以后过期
==time()+60 表示60秒以后过期
<?php
setcookie('a',100);
setcookie('b',200,time()+60*60);
?>
2、后端获取cookie
$_COOKIE[‘username’]