R0ot's Blog

分享代码,记录生活

0%

PHP的学习2.0

前面经过一周的PHP学习,这是第二周

简单表单

语法

1
2
3
4
5
<form action="提交表单的地址" method="提交表单的方式">  //GET POST REQUEST
<input type="text" name="提交数据的名称"> //type属性中的text表示上传类型是文本
<input type="text" name="提交数据的名称">
<input type="submit" value="提交"> //type属性中的submit表示这是一个提交按钮
</form>

可以用超全局变量$_POST[],$_GET[],$_REQUEST获取提交的表单数据

文件上传表单

1
2
3
4
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="提交">

和简单表单类似,将type属性改成file表示上传的是一个文件.
enctype表示提交表单要使用哪种内容类型,文件用enctype="multipart/form-data".
方式一般使用post类型。
上传的文件保存在超全局变量$_FILES
如在upload_file.php中使用print_r($_FILES),可以打印查看文件的信息

date格式化日期

date("format")
format可以是 d(天),m(月),Y(年),中间可以插入其他字符
例如 echo date(Y/m/d) 结果2023/3/18

包含文件

include '文件名';
require '文件名';
include_once '文件名';
require_once '文件名';
区别找不到文件时require生成致命错误,include产生一个警告,继续执行。
一个文件包含两次相同的文件会报错,加上_once就只会扫描一次,不会报错

文件

  1. 打开文件
    $file=fopen("文件名","打开模式");
    几种模式

  2. 关闭文件
    fcloes($file); //流程,打开文件,执行一些代码,关闭文件

  3. 检测文件末尾(EOF)
    feof($file);
    在循环遍历未知长度的数据时,feof() 函数很有用。

  4. 逐行读取文件
    fgets($file);
    在调用该函数之后,文件指针会移动到下一行.

  5. 逐字符读取文件
    fgetc($file)
    在调用该函数之后,文件指针会移动到下一个字符。

完整演示一遍操作文件

1
2
3
4
5
6
7
8
<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!"); //打开文件只读
while (!feof($file)) //判断是否到EOF
{
echo fgetc($file); //逐字符遍历数组,也可以fgets逐行
}
fclose($file); //关闭文件
?>

cookie常用于识别用户,是服务器留在用户计算机上的小文件,计算机请求页面时,计算机会发送cookie。

  1. 创建cookie
    <?php setcookie(name,value,expire,path,domain); ?>
    //必须位于标签之前
    例如setcookie("user", "miao", time()+3600) //名user,值miao,3600秒后过期
    也可以$a=time()+60*60*24*30; setcookie("user", "miao", $a)
    //60秒60分24小时*30天
  2. 取回cookie的值
    可以用超全局变量$_COOKIE[]取回cookie
    1
    2
    3
    4
    <?php
    echo $_COOKIE["user"]; // 输出user的cookie 值
    print_r($_COOKIE); // 查看所有 cookie
    ?>
  3. 删除cookie
    time()改成过去的时间
    例如setcookie("user", "miao", time()-360);
  4. 检测是否设置了cookie
    使用isset($_COOKIE[])
  5. 编码方式
    在发送cookie时,cookie的值会自动进行URL编码,在取回时进行自动解码。为防止URL编码,请使用setrawcookie()取而代之

Session

session变量是用于储存用户会话信息(用户数据),更改用户会话信息的设置。工作机制:为每个访客创建一个唯一的id(UID),并基于这个UID来存储变量。UID存储在cookie中,或者通过URL进行传导

  1. 启动会话
    session_start() ///函数必须位于标签之前
  2. 储存session变量
    使用$_SESSION[]超级变量,并进行赋值
    例如
    可以将用户的浏览量设置成
    $_SESSION['views'],每次访问后使$_SESSION['views']+=1
    或是给用户添加admin权限等
    如果用户成功登陆的话,储存一个登陆成功的凭证的session $_SESSION[admin]=ture
  3. 销毁Session
    如果希望删除某些session数据,可以使用unset()session_destroy()函数
    unset() 函数用于释放指定的session变量:例如 $_SESSION['views']
    session_destroy() 函数彻底销毁重置session
  4. 检测是否设置了session
    使用isset($_SESSION[])

序列化与反序列化

JSON定义 :一种轻量级的数据交换语言,以文本字符串为基础

  1. {} 双括号表示对象
  2. [] 中括号表示数组
  3. “” 双引号内是属性或值
  4. : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
  5. ,逗号用来分隔属性或者对象
  6. 例如{"a":16,"b":18,"c":20}

PHP JSON

  1. json_encode($value,参数) // 对变量(对象也可以)进行json编码
    JSON_UNESCAPED_UNICODE 参数选项,如果我们不希望中文被编码,可以添加该参数。

  2. json_decode(json字符串) 对json格式字符解码,转化成php变量

serialize
serialize()序列化是将变量(或者对象)转换为可保存或传输的字符串的过程
unserialize
unserialize()反序列化就是在适当的时候把这个字符串再转化成原来的变量使用