- ,location.href='http://www.xxx.com/';
- ,location.replace('http://www.xxx.com/');
phpstudy 运用在后端
------ 服务器: 提供服务的机器 ------
通过域名访问 给电脑配服务器
静态页面就是数据不变
数据变化: 动态网页
服务器作了什么:
1. 接受用户请求
2. 根据用户请求执行相应业务处理
3. 将处理返回
Ajax:
发送请求
响应结果
http: 服务端的通讯协议
https: 更安全
bs 浏览器服务器
cs 客户端服务器
端口 3306 数据库
80 wed 服务
DNS:
1. 接收用户输入的域名
2. 查询域名所对应的 ip 地址
3. 返回 ip
DNS 翻译
hosts 文件 相当于 DNS
C:\Windows\System32\drivers\etc
PHP 是什么?
超文本预处理
端口:
计算机本身是一个封闭的环境, 就像是一个大楼, 如果需要有数据通信往来, 必须有门, 这个门在术语中就叫端口, 每一个端口都有一个编号, 每台计算机只有 65536 个端口(0-65535)
- <?PHP
- // echo 是 PHP 中的一个特殊的 "指令",
- // 不一定需要像函数那样通过 `()` 去使用
- // 注意: echo 后面紧跟着一个空格
- echo 'hello php';
- echo 'hello', 'world';
- // => `helloworld`
- <?PHP
- // print 与 echo 唯一区别就是只能有一个参数
- print 'hello php';
- // print 'hello', 'world';
- // => Parse error: syntax error ...
- <?PHP
- // var_dump 是一个函数, 必须跟上 () 调用
- // 可以将数据以及数据的类型打印为特定格式
- var_dump('hello php');
- // => 'string(9)"hello php"
数据类型:
- string(字符串) **
- integer(整型)-- 只能存整数
- float(浮点型)-- 可以存带小数位的数字
- - boolean(布尔型)
- - array(数组) **
- - object(对象)
- - NULL(空)
判断数据类型:
- is_string(): 判断当前变量是否是字符串类型
- is_bool(): 判断当前变量是否是布尔类型
- is_int(): 判断当前变量是否是整形类型
- is_float(): 判断当前变量是否是浮点类型
- is_array(): 判断当前变量是否是数组类型
- is_object(): 判断当前变量是否是对象类型
pre 格式化 后里面写空格就有空格
$globals 改变全局变量作用域
- $GLOBALS - 引用全局作用域中可用的全部变量
- $_SERVER - 获取服务端相关信息
- $_REQUEST - 获取提交参数
- $_POST - 获取 POST 提交参数
- $_GET - 获取 GET 提交参数
- $_FILES - 获取上传文件
- $_ENV - 操作环境变量
- $_COOKIE - 操作 Cookie
- $_SESSION - 操作 Session
; 开启扩展路径 ext,ext 是 PHP 程序的插件目录, 修改成绝对路径
- extension_dir = "G:/phpstudy/php/php-7.1.14/ext"
- // + 只能是算术运算符, 系统会自动的将 + 两边的变量转换为数组,
- // 如果可以转换, 就进行转换, 否则返回这个数据类型的默认值
- //int>0 object> null bool>false float:0.0
- // 在 PHP 中字符串连接符使用.
- // 算术运算符: + - * , % + --
- // 赋值运算符:= += -= *= /=
- // 逻辑运算符:! && ||
- // 比较运算符:>>= <<= == === !=
- // 三元运算符: a>b ? "":""
get: 一般用来获取数据, 参数会在 url 地址栏拼接
post: 一般用来发送数据到服务器
----------accept=".jpg,.png" 文件类型 -----------------------
- <form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post" enctype="multipart/form-data">
- 文件上传: <input type="file" name="myfile" id=""accept=".jpg,.png">
- <input type="submit">
- </form>
- ----------------------------------------------------------
trim()去除前后的空格
-------------------------- 上传 --------------------------------------
- <!-- 1. 在 php 中, 上传文件的请求方式必须是 post -->
- <!-- 2. 在上传的时候必须在表单设置 enctype 属性
- application/x-www-form-urlencoded: 将参数编码为键值对的格式, 这是标准的编码格式(UTF-8 GBK GB2312), 它用来处理字符串, 它是默认的编码格式
- multipart/form-data: 它是专门用来处理特殊数据的, 如文件
- -->
- ---------------------------------------------------------------------
- Array
- (
- [myfile] => Array
- (
[name] => 跨域攻击. PNG: 源文件的名称
[type] => image/PNG: 源文件的类型
[tmp_name] => C:\Windows\phpE412.tmp: 这是文件在服务器的临时路径
[error] => 0: 错误信息, 0 代表没有错误
[size] => 256436: 文件的大小
- )
- )
- */
- //(1)strpos(源字符串, 搜索字符串): 可以获取指定字符串在源字符串中第一次出现的索引值, 索引从 0 开始
- //(2)strrchr(源字符串, 指定搜索的字符)
- -
- <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
- 文件选择:<input type="file" name="myfile"><br>
- <input type="submit">
- </form>
GET 方式提交数据的特点:
get 方式在 url 后面拼接参数, 只能以文本的形式传递数据
传递的数据量小, 4KB 左右(不同浏览器会有差异)
安全性低, 会将数据显示在地址栏
速度快, 通常用于对安全性要求不高的请求
特点
1-post 方式 安全性比较高
2 - 传递数据量大, 请求对数据长度没有要求
3 - 请求不会被缓存, 也不会保留在浏览器历史记录中
用于: 密码等安全性要求比较高的场合, 提交的数据量比较大: 发布文章, 上传文件.
POST 方式提交数据上限默认为 8M(可以在 PHP 的配置文件 post_max_size 选项中修改)
<!-- $_SERVER["PHP_SELF"] 表示当前处理页面的名字 -->
implode: 字符串分割
- // 使用 move_uploaded_file 函数来实现文件的移动, 否则文件在程序结束后会被自动的删除
- //move_uploaded_file(源文件的全路径, 目标文件的全路径)
出现乱码解决代码: header('content-type:text/html;charset=utf8');
- <?PHP
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- // 表单提交请求
- }
超全局变量: 无法访问函数中的变量; $GLOBALS
时间区
- PHP-INI>date.timezone = PRC|Asia/shanghai|Asia/chongqin
- -------------------------------------------------------------------
1.PHP 标记
<?PHP
1. 写在这个结构内的代码才会以 PHP 语法解析
2. 写在这个结构外的代码会原样返回
?>
2. 输出内容的方式
echo: 输出一个或者多个字符串
print 或者 print(): 输出一个字符串值
print_r(): 可以输出复杂数据类型, 如数组, 以键值对的形式输出
var_dump(): 可以输出复杂数据类型, 如数组, 以键值对的形式输出, 还可以输出数据的长度
3. 字符串
'': 不能解析变量, 会将变量当成普通字符串处理 \\ \'
"": 能解析变量 \" \t \n \r \$
4. 数组:
创建方式:
- $arr = array()
- $arr = []
- $arr[] = value; // 如果数组不存在则可以自动的创建一个数组, 并将当前值添加到数组中, 如果存在则添加数据到数组
数组的类型:
索引数组: 不人为设置 key $arr = array(1,2,3,4);
关联数组: 人为设置 key 和 value $arr = array("name"=>"jack")
混合数组:$arr= array(1,2,3,"name"=>"jack",4)
二维数组: 数据的值本身又是一个数组
- $arr = array(
- array(
- "name"=>"jack",
- "age"=>20
- ),
- array()
- );
数组遍历: for | foreach
- for($i =0;$i<count(数组);$i++){
- }
- foreach(需要遍历的数组对象 as $key => $value){
- }
- foreach(需要遍历的数组对象 as $value){
- }
5. 变量作用域: 函数内部默认不能使用函数外部所声明的成员, 如果想使用, 则:
1. 使用 global 关键字
2. 使用超全局变量 $GLOBALS
6. 常量的定义和使用:
define(名称, 值, false)
全大写
7. 载入其它文件: 文件包含
include: 如果载入失败, 不会报错, 后续代码会继续执行, 它可以重复载入
include_once: 如果载入失败, 不会报错, 后续代码会继续执行, 它不会重复载入, 只会真正的载入一次
require: 如果载入失败, 会报错, 后续代码不会继续执行, 它可以重复载入
require_once: 如果载入失败, 会报错, 后续代码不会继续执行, 它不可以重复载入
8. 常用 API
文件操作:
file_get_contents: 可以读取文件内容并返回
file_put_contents(文件路径, 写入的内容, FILE_APPEND): 可以将指定的字符串内容写入到文件, 其中第三个参数 FILE_APPEND 可以实现文件内容的追加
9.HTML 混编
1. 在<?PHP 在这个结构内部只能写符合 PHP 语法的代码 ?>
2. 在 <?PHP ?> 结构的代码会原样输出
3. 混编实现方式
- 1.<?PHP echo '<p></p>' ?>
- 2.
- <?PHP if(){ ?>
- <p></p>
- <PHP }?>
- ----------------------------------------------------------
- PHP.INI
上传音乐 upload_max_filesize = 500M 更改
<audio > 标签, 作用: 播放音乐
src: 添加音频文件路径
controls 出现控制播放的控制面板,
autoplay 自动播放
请求行
请求头
空行
请求体
记住: 使用 session 一定要加上 session_start()
- // 一小时过期
- setcookie("uName","admin",time()+ 3600)
- // 永久性 COOKIE
- setcookie("password","123",PHP_INT_MAX);
- //setcookie("username","jack",PHP_INT_MAX,"/day5/down");
----------- 增加删除和修改是返回受影响的行数 --------------
查询语句的语法: select *| 字段列表 from 表列表 where 条件
* 代表当前表的所有字段
数据库操作:
select from 表名 where 条件 ---- 查询
insert into 表名 values 条件 ---- 新增
update 表名 set 条件 ---- 修改
delete from 表名 where 条件 ---- 删除
-- 查询 mytalbe 中的所有数据
SELECT * FROM mydase
-- 查询 mytalbe 中的所有数据
SELECT * FROM mydase
-- 查询 ID not>! and>&& or>||
- SELECT id,NAME FROM mydase
- SELECT * FROM mydase where id =4
- SELECT * FROM mydase where age<20
- SELECT * from mydase where age>=20 AND gender =1
-- 增加
- insert into mydase values (null,'lili',13,2010-12-1,0,17615848307)
- INSERT INTO mydase(age,gender) VALUE (40,1)
-- 修改语句
- UPDATE mydase SET age = age +10 WHERE id = 2
- update mydase set age = age +20 where id = 5
-- 删除语句
- delete from mydase where id = 6
- delete from mydase where id in (4,5)
select count --- 数数总计
select min --- 最小值
select max --- 最大值
select avg --- 平均值
判断用户是否提交
- if($_SERVER["REQUEST_METHOD"]==="POST"){
- login();
- }
步骤分析:
1, 判断请求是否是 POST $_SERVER['REQUEST_METHOD']=='POST'
2, 校验表单数据是否为空或者不存, 如果不存在就将该表单的 name 存入数组中
3, 点击提交判断没有输入值就显示警告
步骤分析: list.PHP
1, 读取文件获取 JSON 字符串
2, 将 JSON 字符串转换成 PHP 数组
3, 遍历数组将数据渲染到页面上
步骤分析:
1, 将选中的文件存储为永久文件
2, 读取 music.JSON 中的数据
(1)将数据转换成数据数组 JSON.decode
(2)获取表单输入的值存放至数据数组中
3, 将数据数组转换成字符串 JSON.encode 写入 music.JSON 中
4, 添加成功后页面跳转至 list.PHP
链接库:
- header('content-type:text/html;charset=utf-8');
- mysqli_set_charset($conn,"utf8");
- // 连接成功, 那么就可以创建 sql 语句, 执行相关操作
- // 1. 新增数据: 在执行新增语句的时候, mysqli_query 的返回值: 如果成功则返回 true, 否则返回 false
- // 2. 修改操作:
- // 3. 删除操作
1. 创建连接 -- 建立连接
$conn = mysqli_connect(主机或 IP 地址, 用户名, 密码, 数据库名称);
如果连接成功, 就返回一个连接对象(资源), 如果连接失败, 返回 false
2. 设置编码: 主要是解决浏览器出现乱码的问题
1. 服务器端的编码和 PHP 的编码不一致: mysqli_set_charset($conn,"utf8") | mysqli_query($conn,"set names utf-8")
2.PHP 的编码和浏览器端的编码不一致: header("Content-Type:text/html;charset=utf-8")
3. 创建 sql 语句
1. 新增: 数值如果是字符串类型, 一定要使用引号包含. 如果数据没有使用引号包含, 有可能会有错
"insert into temp value('张三')"
2. 删除和修改一定需要考虑是否有条件
4. 执行 sql 语句
1. 增加删除和修改: 如果成功则返回 true, 否则返回 false
2. 查询:
查询失败: false
查询成功但是没有数据行: mysqli_num_rows(资源对象 -- 引用)
查询成功也有数据行: 读取数据
3. 使用 mysqli_query($conn,$sql)
5. 接收返回值
增加删除和修改: true/false
查询有结果集同时有数据
mysqli_fetch_array(查询结果集): 每次读取一行数据, 生成数组, 里面包含两种形式的数据(索引数组, 关联数组)
mysqli_fetch_assoc: 每次读取一行数据, 生成数组, 里面只包含关联数组
mysqli_fetch_row: 每次读取一行数据, 生成数组, 里面只包含索引数组
循环读取:
- while($row = mysqli_fetch_assoc(结果集)){
- $arr[] = $row;
- }
6. 释放资源: 及时的关闭连接对象, 释放资源: 什么时候释放: 当与 MySQL 相关的操作执行完毕之后就立刻释放
- mysqli_close($conn);
- <?PHP
- header("Content-Type:text/html;charset=utf-8");
- $coon = mysqli_connect("localhost","root","root","mydase");
- mysqli_set_charset($coon,"utf8");
- if(!$coon){
- //echo '连接失败';
- die("连接失败");
- }else{
- echo "连接成功";
- }
- ?>
获取计算机相隔现在时间
$time1=strtotime();
现在时间
$time2 = time(); // 合并单元格 //colspan 横向合并 跨列 //rowspan 纵向合并 跨行 200 OK
请求已成功, 请求所希望的响应头或数据体将随此响应返回. 出现此状态码是表示正常状态.
403
请求被拒绝
404 服务器没有这个页面
extension_dir 开启 配置文件
mysqli 开启 配置文件
========================================================== // 连接库 $conn=mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME); // 设置 sql 语句 $sql="SELECT p.id,p.title,p.feature,p.created,p.content,p.views,p.likes,c.`name`,u.`nickname`, (SELECT COUNT(id) FROM comments WHERE comments.post_id=p.`id`) AS commentCount FROM posts p LEFT JOIN categories c ON c.`id`=p.`category_id` LEFT JOIN users u ON u.`id`=p.`user_id` WHERE p.`category_id`={$categoryId} LIMIT 20"; // 执行 sql 语句 $result=mysqli_query($conn,$sql);// 结果集 header("Content-Type:text/html;charset=utf-8"); // 拿到数据 $postarr=[]; while($row=mysqli_fetch_assoc($result)){ $postarr[]=$row; } header("Content-Type:application/json;charset=utf-8");
echo json_encode($response); 从数据库获取内容并转换成 JSON 格式的内容
PHP
来源: http://www.bubuko.com/infodetail-2874246.html