HTML&&PHP
HTML
HTML概况
- 专业定义——百度节选
- HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
- 超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。
- HTML不是⼀种编程语⾔,⽽是⼀种 标记语⾔
- 超⽂本指的是超链接,标记指的是标签,是⼀种⽤来制作⽹⻚的语⾔,这种语⾔由⼀个个的标签组成
- ⽤这种语⾔制作的⽂件保存的是⼀个⽂本⽂件,⽂件的扩展名为 .html 或者 .htm
- html⽂档也叫 Web⻚⾯ ,其实就是⼀个⽹⻚,html⽂件⽤ 编辑器打开 显示的 是⽂本 ,可以⽤⽂本的⽅式 编辑它
- 如果⽤ 浏览器打开 ,浏览器会按照标签描述内容将⽂件 渲染成⽹⻚ ,显示的⽹⻚可以从⼀个⽹⻚链接跳转到另外⼀个⽹⻚
- 不抽象的理解【坏笑】
- 简单来说,就是把原本的文字通过加按钮,图片之类的功能性组件的操作变成一个网页的标记语言(这里区分css:简单来说,HTML决定网页每一个地方摆什么功能的组件,而css决定这些组件的皮肤)
- html所有的操作都是通过标签实现的,嗯嗯对的【思考】
HTML基本语法
一、核心结构
HTML 文档遵循「根 - 头 - 体」三层结构,<!DOCTYPE> 为文档类型声明(非标签),作用是告知浏览器采用的 HTML 解析标准,避免进入「怪异模式(Quirks Mode)(这个我也不太清楚,应该就是避免出错)
emm——
其实我一开始是想着直接在visual study code里面写代码的来着,就是感觉自己实践的时候会理解更透彻【思考思考】
然后我就试着写了一个
咋说呢
emm打开之后就是个这

有点复杂,给我整不会了(终于理解了我奶奶操作手机的无助感了也是)【哭了】【哭了】
鉴于本人太菜了,我决定实践的东西先放放【哭了】【哭了】而且就是说随后不是要学呢嘛,过一阵子再说
那我们就直接学习一下理论知识吧(其实一开始我是打算了解一下就结束的,但是架不住我们实验室好多人都学这个学的可深了,(不要问我咋知道,其实我悄悄看了他们的博客链接哈哈哈【坏笑】)卷死了【哭了】【哭了】,蒜鸟蒜鸟,我决定还是再学一学
【嘿哈】
不要问我为啥写代码里,以为本人比较懒~@^~^@~,不想再退出来写文本了,直接就写了注释算了
【累die】【累die】
二、标签代码
1.核心知识点
<!-- 1. DOCTYPE声明就是告诉服务器是html标签,让服务器用html规则解析代码,避免混乱) -->
<!DOCTYPE html>
<!-- 2. 根元素:lang所有内容都要放到里面,lang是这个界面的语言选择,""里面放语言,这里是简体中文(zh-CN=简体中文,en=英文)-->
<html lang="zh-CN">
<!-- 3.前后呼应的head,里面写给浏览器制定的核心规则-->
<head>
<!-- 字符编码:一般都是UTF-8,用这个编码中文,英文,符号都能正常显示,不会出现乱码 -->
<meta charset="UTF-8">
<!-- 适配我们的屏幕,写了这个的话网页大小就和我们的设备有关了,比如说同一个网页的手机和电脑打开之后它的大小是不一样的-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 菜单栏的标签的标题-->
<title>"菜单栏标题"</title>
<!-- 这里放的css脚本,脚本管的这个菜单栏标题的样式 -->
</head><!--这里和前面的head对应,规则结束了哈-->
<!-- 4. 网页前台,给别人展示你的网页的时候里面的各种组件都放到这里,我们主要也是写这里呢-->
<body>
<!-- 你的网页的所有内容 -->
</body>
</html><!--一般结束就是这个-->
2.通用(文本/链接/图片/容器)
<body><!--也是成对出现,别漏了-->
<!-- 1. 标题标签:h1-h6,语义从最重要到最次要,字体由大到小,由粗到细-->
<!-- 规范:一个页面仅一个h1(主标题),剩下的标题可以和写文档一样嵌套,就像写文档的时候一样-->
<h1>一级标题(页面主标题)</h1>
<h2>二级标题(章节标题)</h2>
<h6>六级标题(最小标题)</h6>
<!-- 2. 段落标签:p,只能包行内元素(和其他内容同行显示)或者文本,不能包块级元素(比如说标题),p会自动给你把块级元素拆分,p与p之间可以自动换行,而且重复的空白行会自动合并-->
<!--区分<br>:br就是单纯换行,没有段落之间的空白-->
<p>文本段落</p>
<p>文本段落(系统已经自动换行)</p>
<!-- 3. 超链接:a,行内元素-->
<!--href:必须有,填跳转地址(绝对路径:完整网址;相对路径:本地文件;锚点)-->
<!--href="#":跳转至页面顶部,href="javascript:void(0)":无跳转-->
<!--target="_blank":新标签页打开target="_blank" :新窗口打开时,需加 rel="noopener noreferrer" (防止安全漏洞,如原页面被新页面劫持)-->
<!--href="文件地址" download="文件名" 这个是写完之后插入了一个下载链接,点了之后触发下载文件,但是不跳转-->
<a href="https://www.baidu.com" target="_blank" title="点击跳转到百度">百度链接(新窗口打开)</a>
<a href="#footer" title="跳转到页脚">锚点链接(跳转到页面内id为footer的元素)</a>
<!-- 4. 图片标签:img,这里把图片的地址给到src,加载图片的时候就能通过这个路径加载出对应的图片,、当图片加载不出来的时候,就会显示ait里面的文本 -->
<!-- src:绝对/相对路径,必写-->
<!-- width/height:设置一下大小 -->
<img src="./images/photo.jpg" alt="风景图片" width="300" height="200" title="鼠标悬浮提示">
<!-- 5. 布局标签:div(块级)、span(行内),没有啥样式,装东西用的容器可以说是,里面放啥再写 -->
<!-- div:块级元素,独占一行,可嵌套任意元素,用于大区域划分 -->
<div style="background: #f5f5f5; padding: 10px;">
<!-- span:行内元素,与其他元素同行显示,放同一行的另外的小文本用的 -->
<span style="color: red;">红色文本</span> 和普通文本在同一行
</div>
<!-- 6. 列表标签:ul(无序列表)、ol(有序列表)、li(列表项) -->
<!-- ul:无序列表,默认圆点标记,用于无顺序的内容(如导航、商品列表) -->
<!--无序列表不能单独使用,必须嵌套在ul/ol里面才可以,ul可以嵌套ul-->
<ul>
<li>无序列表项1</li>
<li>无序列表项2</li>
</ul>
<!-- ol:有序列表,默认数字标记,用于有顺序的内容(如步骤、排名) -->
<ol type="1" start="2">
<!-- type:1(数字)、a(小写字母)、A(大写字母)、i(罗马数字)这个是类型,写了之后系统会默认按照你写的类型去列表;start:起始值,根据你写的start值和之前的类型开始列表 -->
<li>有序列表项2(start=2)</li>
<li>有序列表项3</li>
</ol>
<!-- 7. 表格标签:table(表格)、tr(行)、th(表头单元格)、td(普通单元格) -->
<!-- thead/tbody/tfoot:可选,语义化划分表格区域,便于样式控制 -->
<table border="1" cellpadding="5" cellspacing="0">
<!-- border:边框宽度;cellpadding:单元格内边距;cellspacing:单元格间距 -->
<!--这里大概就是一行里面插表头,一行里面插表头,一行里面插单元格,就是相当于嵌套了一下-->
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>20</td>
</tr>
</tbody>
</table>
<!-- 8. 按钮标签:button,可点击的交互按钮,type默认submit(表单内)/button(普通) -->
<button type="button" onclick="alert('点击了按钮')">普通按钮</button>
</body>
</html>
这个是一个大概的效果

3.列表(有序/无序)
核心逻辑:<table>为容器,内部按「行-单元格」分层,<thead>(写表头的)/<tbody>(写主体的)/<tfoot(写页脚或者汇总的)>实现
<body>
<!-- form表单:包裹所有表单元素,核心属性action/method -->
<!-- action:表单提交的目标地址(后端接口,如/api/submit),为空则提交到当前页面 -->
<!-- method:提交方式,可选GET/POST-->
<!-- enctype:提交文件时必须设为multipart/form-data(默认application/x-www-form-urlencoded)(这里就是说我也不太清楚,先这样了这个应该是那种默认的格式)-->
<form action="/api/submit" method="POST" enctype="multipart/form-data">
<!-- label:关联表单元素,点击label文字可对应input -->
<!-- for属性值 = input的id值,实现关联 -->
<label for="username">用户名:</label>
<!-- input type="text":单行文本输入框 -->
<input type="text" id="username" name="username" placeholder="请输入用户名" required maxlength="20">
<br><br>
<label for="pwd">密码:</label>
<!-- input type="password":密码输入框,内容隐藏为圆点/星号 -->
<input type="password" id="pwd" name="password" placeholder="请输入密码" required minlength="6">
<br><br>
<!-- input type="radio":单选框,同一组需设置相同name属性 -->
<label for="male">男</label>
<input type="radio" id="male" name="gender" value="male" checked>
<label for="female">女</label>
<input type="radio" id="female" name="gender" value="female">
<br><br>
<!-- input type="checkbox":复选框,同一组name可相同(值为数组) -->
<label for="hobby1">游泳</label>
<input type="checkbox" id="hobby1" name="hobby" value="swim">
<label for="hobby2">跑步</label>
<input type="checkbox" id="hobby2" name="hobby" value="run" checked>
<br><br>
<!-- input type="file":文件上传,accept限制文件类型 -->
<label for="file">上传文件:</label>
<input type="file" id="file" name="file" accept=".jpg,.png">
<br><br>
<!-- input type="submit":提交按钮,点击自动提交表单 -->
<input type="submit" value="提交表单">
<!-- button type="submit":等价于submit输入框,可嵌套内容(如图标+文字) -->
<button type="submit">提交(按钮标签)</button>
<!-- 重置按钮:清空表单所有输入内容 -->
<button type="reset">重置</button>
<!-- 普通按钮:无提交/重置行为,需配合JS使用 -->
<button type="button" onclick="alert('普通按钮')">普通按钮</button>
</form>
</body>
</html>
这个是效果

4.语义化
让开发者看到标签就可以知道内容
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>语义化标签综合示例</title>
<style>
/* 简单样式,区分语义化标签区域 */
header, nav, main, section, footer {
border: 1px solid #ccc;
margin: 10px;
padding: 10px;
}
</style>
</head>
<body>
<!-- header:头部区域,页面/章节的页眉(如网站logo、导航、标题) -->
<!-- 可嵌套在页面顶部,也可嵌套在section内(章节头部) -->
<header>
<h1>网站名称</h1>
<p>网站副标题/简介</p>
</header>
<!-- nav:导航区域,包含页面的主导航链接(如首页、关于我们、联系我们) -->
<!-- 一个页面可多个nav(如主导航、侧边导航),但仅一个主导航 -->
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于我们</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
</nav>
<!-- main:页面核心内容区域,一个页面仅一个main(不可嵌套) -->
<!-- 包含页面的主要内容,排除header、footer、nav等重复内容 -->
<main>
<!-- section:章节/区块,用于划分有独立主题的内容(如文章章节、产品模块) -->
<!-- 每个section建议有标题(h2-h6),区分不同主题 -->
<section>
<h2>新闻资讯</h2>
<article>
<h3>新闻标题1</h3>
<p>新闻正文内容...</p>
</article>
<article>
<h3>新闻标题2</h3>
<p>新闻正文内容...</p>
</article>
</section>
<section>
<h2>产品展示</h2>
<div>产品1</div>
<div>产品2</div>
</section>
</main>
<!-- footer:页脚区域,页面/章节的底部(如版权、联系方式、备案信息) -->
<!-- 可嵌套在页面底部,也可嵌套在section内(章节底部) -->
<footer>
<p>版权所有 © 2025 某某公司</p>
<p>备案号:粤ICP备xxxx号</p>
</footer>
</body>
</html>
emm效果

咋说呢,先这样哇,我好也不是特别会随后反正是要学,就这吧【乖巧】【无辜】
反正现在这个情况就是能看懂我感觉就可以咧【嘻嘻】
PHP
emm对,这个是后来写完那个html之后顺手整理了一下之前学的PHP,就这样,学的也没有多深,就看了一个大概吧【捂脸笑】,本来是想着搞到那个靶场里面的,但是我感觉学的还是不太系统,感觉就是脑子有点乱,所以就又整理了一下(其实是因为快考核了害怕被提问想不起来哈哈哈)【狗头保命】----Orz----
基础语法
<?php
// 1. 单行注释
# 单行注释(另一种写法,较少用)
/*
2. 多行注释
*/
// 3. 输出语句
echo "Hello PHP!"; // 可以输出多个值,用逗号分隔
print "Hello Web!"; // 只能输出一个值,返回1(不咋用)
// 4. 代码结束符:?> (如果文件全是PHP代码,建议省略,避免意外输出空格)
变量与数据类型
<?php
// 1. 变量声明:以 $ 开头,后面跟字母、数字、下划线(不能以数字开头)
$username = "admin"; // 字符串变量
$age = 20; // 整数变量
$score = 95.5; // 浮点数变量
$is_student = true; // 布尔变量(true/false php不区分大小写)
// 2. 变量命名规范:区分大小写($name 和 $Name 是两个不同变量)
$name = "张三";
$Name = "李四";
echo $name; // 输出 张三
// 3. 数据类型检测(Web开发中常用,比如验证表单提交数据类型)
var_dump($username); // 显示类型和值
echo gettype($age); //仅显示类型
// 4. 类型转换:显式转换(主动转换)和隐式转换(PHP自动转换)
$num_str = "123";
$num = (int)$num_str; // 显式转换:字符串转整数
var_dump($num); // 输出 int(123)
$a = 10;
$b = "5abc";
$c = $a + $b; // 隐式转换:PHP自动将$b转为整数5(只取开头数字)
var_dump($c); // 输出 int(15)
// 5. 特殊数据类型:NULL(表示变量无值)
$empty_var = null;
var_dump($empty_var); // 输出 NULL
unset($empty_var); // 销毁变量,变量不存在
?>
数据类型分类:
- 标量类型(单一值):string(字符串)、int(整数)、float(浮点数)、bool(布尔值);
- 复合类型(多值):array(数组)、object(对象);
- 特殊类型:NULL(无值)、resource(资源,如数据库连接、文件句柄)
看看就好那个资源和对象那个不咋出现一般,这里emm我给忘了是啥了【尴尬】
NULL 特性:
变量赋值为 null、被 unset() 销毁的变量,还有就是那种空的变量类型均为 NULL,有啥用呢,判断变量是否初始化(就是看看变量有没有被赋值,没有就是输出类型是null)
运算符
其实和c语言差不了多少,就直接说我不太会的【坏笑】
<?php
//字符串运算符(拼接字符串)
$first_name = "张";
$last_name = "三";
echo $first_name . $last_name; // 拼接:张三(如拼接URL、HTML代码)
$full_name = $first_name . $last_name;
$full_name .= " - 学生"; // 拼接赋值:张三 - 学生
//三元运算符
$nickname = $username ?? "游客"; // 空合并运算符:如果$username存在且非null,取$username,否则取"游客"
$status = $is_adult ? "成年" : "未成年"; // 三元运算符:条件为true取第一个值,否则取第二个
echo $status; // 输出 成年
?>
循环
条件和c语言一样写一写if else就行,就不写笔记了【狗头保命】
人在实验室,压力好大QAQ,求放过--Orz-----Orz-----Orz---【忐忑】
<?php
// 循环语句,参考c语言
// 1. for
echo "<ul>";//要写这个啊,有点眼熟,这个是html里面的无序列表【惊】,就是写这个是要告诉浏览器这个东西,不写的话格式就不太对捏会出错的
for ($i = 1; $i <= 5; $i++) { //参考c语言
echo "<li>第" . $i . "条数据</li>"; // 输出1-5
echo "</ul>";
// 2. while和c语言一样的,参考C语言(不就输出换了换不写了——懒die)
// 3. foreach(数组关联)
$users = ["张三", "李四", "王五"]; // 索引数组
foreach ($users as $user) {//as就是把前面变量的值赋值给后面
echo "用户名:" . $user; // 输出三个用户名
}
$user_info = ["name" => "张三", "age" => 20, "gender" => "男"]; // 关联数组
foreach ($user_info as $key => $value) {
echo $key . ":" . $value; // 输出 name:张三、age:20、gender:男,然后循环下一个
}
?>
代码复用
就是写了一个代码,然后把这个代码的内容搞到你自己定义的函数里面,然后就能通过用这个你自己写的函数实现代码的重复利用,其实就是按理来说还有,但是我是小白就先到这里叭
参数和变量:我觉得就是不用那个代码的时候是变量,用了这个代码的时候就是参数(个人理解)
<?php
// 1. 自定义函数(最基础的函数形式)
/**
* 计算两个数的和(函数注释:说明功能、参数、返回值,团队协作必备)
* @param int $a 第一个整数
* @param int $b 第二个整数
* @return int 两个数的和
*/
function add($a, $b) {
return $a + $b; // 返回值:函数执行结果,通过return返回给调用者
}
echo add(10, 20); // 调用函数,输出30
// 2. 带默认参数的函数(参数可省略,使用默认值)
function greet($name = "游客") {
echo "你好," . $name . "!";
}
greet("张三"); // 输出 你好,张三!
greet(); // 省略参数,使用默认值,输出 你好,游客!
// 3. 引用传递参数(默认是值传递,引用传递会修改原变量)
function increment(&$num) { // 参数前加&,表示引用传递
$num++;
}
$x = 5;
increment($x);
echo $x; // 输出6
/*参数传递:
值传递(默认):函数内部修改参数值,不会影响原变量(如 add(10,20) 中,10 和 20 是值传递,函数内部修改a和b,外部变量不变);
引用传递:参数前加 &,函数内部修改参数值,会同步修改原变量(如 increment(&$x),适合需要修改原变量的场景)*/
数组
<?php
// 1. 一般数组(嗯和c语言差不多就这样)
$fruits = ["苹果", "香蕉", "橙子"]; // PHP5.4+简洁写法
// $fruits = array("苹果", "香蕉", "橙子"); // 兼容旧版本写法
echo $fruits[0];
$fruits[3] = "葡萄";
unset($fruits[1]); // 删除元素:删除索引1的"香蕉",数组索引不会自动重新排序
// 2. 关联数组(自定义键名,适合存储键值对数据,Web开发最常用)
$user = [
"id" => 1,
"username" => "admin",
"password" => "123456", // 实际开发中密码需加密(如md5、bcrypt)
"age" => 20
];
echo $user["username"]; // 访问元素:通过键名,输出 admin
$user["email"] = "admin@example.com"; // 新增元素
unset($user["password"]); // 删除元素
// 3. 多维数组,有点难先放放
// 4. 常用数组函数(Web开发高频使用)
// (1)数组长度:count()
echo count($fruits); // 输出3(删除元素后,数组长度为3)
// (2)添加元素:array_push()(尾部添加)、array_unshift()(头部添加)
array_push($fruits, "芒果"); // $fruits变为["苹果","橙子","葡萄","芒果"]
array_unshift($fruits, "草莓"); // $fruits变为["草莓","苹果","橙子","葡萄","芒果"]
// (3)数组拼接:array_merge()
$arr1 = [1,2,3];
$arr2 = [4,5,6];
$arr3 = array_merge($arr1, $arr2); // 输出[1,2,3,4,5,6]
// (4)数组搜索:in_array()(判断值是否存在)、array_search()(查找值返回下标)
var_dump(in_array("苹果", $fruits)); // 输出true
echo array_search("橙子", $fruits); // 输出2(键名)
// (5)数组过滤:array_filter()(保留满足条件的元素)
$numbers = [1,2,3,4,5,6];
$even_numbers = array_filter($numbers, function($num) {
return $num % 2 == 0; /*保留偶数,用 return 语句返回函数执行结果,return 后面的代码不会执行(函数终止),一个函数只能有一个返回值(如需返回多个值,可返回数组),豆包官方回答哈,我其实觉得就是写一下*/
});
var_dump($even_numbers); // 输出[2,4,6]
?>
字符串处理
<?php
// 1. 字符串定义(三种方式)
$str1 = "双引号字符串"; // 双引号:支持变量解析和转义字符(如\n换行)
$str2 = '单引号字符串'; // 单引号:不支持变量解析和转义(仅\'和\\转义)
$str3 = <<<EOD
heredoc字符串(适合大段文本,如HTML代码)
支持变量解析:$str1
EOD; // 结束符必须顶格,不能有空格
echo $str3;
// 2. 字符串拼接(. 运算符)
$name = "张三";
$intro = "我是" . $name . ",今年20岁";
echo $intro; // 输出 我是张三,今年20岁
// 3. 核心字符串函数(Web开发高频使用)
// (1)字符串长度:strlen()(统计字节数,UTF-8中文占3字节)
$chinese_str = "你好PHP";
echo strlen($chinese_str); // 输出 3*2 + 3 = 9(2个中文+3个英文,UTF-8编码)
// 统计字符数(中文算1个):mb_strlen()(需开启mbstring扩展,Web开发必备)
echo mb_strlen($chinese_str, "UTF-8"); // 输出5
// (2)字符串查找:strpos()(查找子串首次出现的位置,返回整数,未找到返回false)
$str = "Hello PHP Web Development";
$pos = strpos($str, "PHP");
if ($pos !== false) { // 必须用!==,因为位置可能是0(false和0在==下相等)
echo "子串位置:" . $pos; // 输出6(从0开始计数)
}
// (3)字符串截取:substr()(按字节截取)、mb_substr()(按字符截取,支持中文)
echo substr($str, 0, 5); // 从0位置截取5个字节,输出Hello
echo mb_substr($chinese_str, 0, 2, "UTF-8"); // 从0位置截取2个字符,输出你好
// (4)字符串替换:str_replace()(替换子串)
$new_str = str_replace("PHP", "Python", $str);
echo $new_str; // 输出 Hello Python Web Development
// (5)字符串大小写转换:strtolower()(转小写)、strtoupper()(转大写)
echo strtolower($str); // 输出 hello php web development
echo strtoupper($str); // 输出 HELLO PHP WEB DEVELOPMENT
// (6)字符串去除空格:trim()(去除首尾空格/换行符)、ltrim()(左)、rtrim()(右)
$space_str = " 有空格的字符串 \n";
echo trim($space_str); // 输出 有空格的字符串(Web开发中常用于处理表单提交数据)
// (7)字符串分割:explode()(按分隔符分割为数组)
$url = "https://www.example.com/user/123";
$url_parts = explode("/", $url);
var_dump($url_parts); // 输出数组:["https:", "", "www.example.com", "user", "123"]
// (8)字符串转义:addslashes()(转义单引号、双引号等,防SQL注入)、htmlspecialchars()(转义HTML标签,防XSS)
$unsafe_str = "' OR 1=1 --";
$safe_sql_str = addslashes($unsafe_str); // 转义后:\' OR 1=1 --(防SQL注入)
$unsafe_html = "<script>alert('XSS')</script>";
$safe_html = htmlspecialchars($unsafe_html); // 转义后:<script>alert('XSS')</script>(防XSS)
?>
文件操作
<?php
// 一、文件路径(Web开发中必须用绝对路径,避免相对路径出错)
$file_path = __DIR__ . "/test.txt"; // __DIR__ 是当前PHP文件所在目录的绝对路径(推荐用)
// $file_path = "/var/www/html/test.txt"; // 服务器绝对路径(也可用)
// 二、文件写入
// 1. file_put_contents()(简单写入,自动打开/关闭文件,Web开发最常用)
$content = "Hello File!\n" . date("Y-m-d H:i:s"); // 写入内容+当前时间
file_put_contents($file_path, $content); // 覆盖写入(默认)
file_put_contents($file_path, $content, FILE_APPEND); // 追加写入(第二个参数FILE_APPEND)
// 2. fopen() + fwrite() + fclose()(手动操作,适合复杂写入)
$file = fopen($file_path, "a"); // 打开文件:模式a(追加写入,文件不存在则创建)
if ($file) { // 判断文件是否成功打开
fwrite($file, "手动写入的内容\n"); // 写入内容
fclose($file); // 必须关闭文件,释放资源(否则会占用服务器资源)
}
// 三、文件读取
// 1. file_get_contents()(简单读取,自动打开/关闭文件,Web开发最常用)
$read_content = file_get_contents($file_path);
echo $read_content; // 输出文件所有内容
// 2. fopen() + fread() + fclose()(手动读取)
$file = fopen($file_path, "r"); // 打开文件:模式r(只读)
if ($file) {
$size = filesize($file_path); // 获取文件大小(字节)
$read_content2 = fread($file, $size); // 读取指定大小的内容
fclose($file);
echo $read_content2;
}
// 3. 按行读取(适合大文件,避免一次性读取占用过多内存)
$file = fopen($file_path, "r");
if ($file) {
while (!feof($file)) { // feof():判断是否到达文件末尾
$line = fgets($file); // 读取一行内容
echo $line . "<br>";
}
fclose($file);
}
// 四、文件删除和属性
// 1. 删除文件:unlink()(永久删除,谨慎使用)
if (file_exists($file_path)) { // file_exists():判断文件是否存在
unlink($file_path);
echo "文件已删除";
}
// 2. 获取文件属性
$file_info = [
"是否存在" => file_exists($file_path) ? "是" : "否",
"是否可读" => is_readable($file_path) ? "是" : "否",
"是否可写" => is_writable($file_path) ? "是" : "否",
"文件大小" => filesize($file_path) . "字节",
"修改时间" => date("Y-m-d H:i:s", filemtime($file_path)) // filemtime():文件最后修改时间
];
var_dump($file_info);
// 五、目录操作
$dir_path = __DIR__ . "/test_dir";
if (!is_dir($dir_path)) { // is_dir():判断是否是目录
mkdir($dir_path, 0755, true); // 创建目录:0755是权限,true表示递归创建多级目录
}
rmdir($dir_path); // 删除目录(仅删除空目录)
?>
超全局变量
<?php
// 一、$_GET:接收URL参数(GET请求,数据暴露在URL中)
// 示例URL:http://example.com/test.php?id=1&name=张三
echo "ID:" . $_GET["id"]; // 输出1(接收URL中的id参数)
echo "姓名:" . $_GET["name"]; // 输出张三(接收URL中的name参数)
// 安全处理:接收前判断参数是否存在,避免报错
$id = isset($_GET["id"]) ? (int)$_GET["id"] : 0; // 转为整数,避免注入
// 二、$_POST:接收表单提交数据(POST请求,数据在请求体中,不暴露)
// 表单示例:<form method="post" action="test.php">
// <input name="username" type="text">
// <input name="password" type="password">
// <button type="submit">提交</button>
// </form>
$username = isset($_POST["username"]) ? trim($_POST["username"]) : "";
$password = isset($_POST["password"]) ? trim($_POST["password"]) : "";
echo "用户名:" . $username; // 输出表单提交的用户名
echo "密码:" . $password; // 输出表单提交的密码(实际开发中需加密存储)
// 三、$_COOKIE:存储客户端浏览器的Cookie数据(长期保存)
// 设置Cookie:setcookie(名称, 值, 过期时间, 路径, 域名, 安全标志)
setcookie("user_token", "abc123", time() + 3600, "/"); // 过期时间:1小时后
echo "Cookie值:" . $_COOKIE["user_token"]; // 读取Cookie(需刷新页面后生效)
// 删除Cookie:设置过期时间为过去的时间
setcookie("user_token", "", time() - 3600, "/");
// 四、$_SESSION:存储服务器端的会话数据(用户登录状态常用)
session_start(); // 必须先启动会话(整个脚本开头)
$_SESSION["username"] = "admin"; // 设置Session(存储在服务器,客户端仅存session_id)
echo "Session用户名:" . $_SESSION["username"]; // 读取Session
unset($_SESSION["username"]); // 删除单个Session变量
session_destroy(); // 销毁整个会话(需刷新页面后生效)
// 五、$_FILES:接收文件上传数据(Web开发核心)
// 表单示例:<form method="post" action="test.php" enctype="multipart/form-data">
// <input name="avatar" type="file">
// <button type="submit">上传</button>
// </form>
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["avatar"])) {
$file = $_FILES["avatar"];
// $_FILES["avatar"] 结构:name(文件名)、type(文件类型)、tmp_name(临时文件路径)、error(错误码)、size(文件大小)
if ($file["error"] == UPLOAD_ERR_OK) { // 错误码0表示上传成功
$upload_dir = __DIR__ . "/uploads/";
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0755, true);
}
$target_path = $upload_dir . basename($file["name"]); // 目标保存路径
move_uploaded_file($file["tmp_name"], $target_path); // 移动临时文件到目标路径
echo "文件上传成功:" . $target_path;
}
}
// 六、$_SERVER:获取服务器和请求相关信息(Web开发高频使用)
$server_info = [
"请求方法" => $_SERVER["REQUEST_METHOD"], // GET/POST
"客户端IP" => $_SERVER["REMOTE_ADDR"], // 客户端IP地址
"服务器IP" => $_SERVER["SERVER_ADDR"], // 服务器IP地址
"当前URL" => $_SERVER["REQUEST_URI"], // 当前请求URL路径
"用户代理" => $_SERVER["HTTP_USER_AGENT"], // 浏览器信息
"脚本文件路径" => $_SERVER["SCRIPT_FILENAME"] // 当前PHP文件绝对路径
];
var_dump($server_info);
?>
超全局变量术语
$_GET:- 用途:接收 GET 请求的参数(URL 中
?后面的键值对); - 特点:数据暴露在 URL 中,长度有限(约 2KB),适合传递非敏感数据(如分页参数、查询关键词);
- 安全:接收时需验证数据类型(如 ID 转为整数),避免 SQL 注入。
- 用途:接收 GET 请求的参数(URL 中
$_POST:- 用途:接收 POST 请求的参数(表单提交、AJAX 请求);
- 特点:数据在请求体中,不暴露,长度无限制,适合传递敏感数据(如用户名、密码);
- 安全:接收时需过滤特殊字符(防 XSS、SQL 注入)。
$_COOKIE:- 用途:存储客户端浏览器的少量数据(如用户登录状态、记住密码);
- 特点:数据存储在客户端(可修改),大小限制(约 4KB),需设置过期时间(
time()时间戳); - 安全:敏感数据(如用户 Token)需加密存储,设置
secure标志(仅 HTTPS 传输)和httponly标志(禁止 JS 访问,防 XSS 窃取)。
$_SESSION:- 用途:存储服务器端的会话数据(用户登录状态、临时数据);
- 特点:数据存储在服务器(安全),客户端仅存储
session_id(通过 Cookie 或 URL 传递),会话过期后自动销毁; - 关键:必须用
session_start()启动会话(脚本开头,且之前不能有输出),销毁会话需session_destroy()+ 清除 Cookie。
$_FILES:- 用途:接收文件上传数据(表单需设置
enctype="multipart/form-data"); - 核心字段:
name(原始文件名)、tmp_name(服务器临时文件路径,必须移动到指定目录,否则脚本结束后删除)、error(错误码,0 = 成功)、size(文件大小); - 安全:验证文件类型(MIME 类型 + 扩展名)、文件大小(限制上传大小)、移动临时文件时用
move_uploaded_file()(防止路径穿越)。
- 用途:接收文件上传数据(表单需设置
$_SERVER:- 用途:获取服务器配置和 HTTP 请求信息;
- 常用字段:
REQUEST_METHOD(请求方法)、REMOTE_ADDR(客户端 IP)、HTTP_USER_AGENT(浏览器信息,用于判断设备)、REQUEST_URI(当前 URL 路径)
emm就先学到这里吧,我觉着应该是够用了,反正就是能看懂代码就行【狗头保命】
今天也是摆烂的一天(真的不想再深究了,浅浅学一下后面再说)【狗头保命】
更多推荐

所有评论(0)