[后端代码审计] PHP 基础学习
文章目录
- 前言
- 1. 基础语法
- 1 .1 注释
- 1 .2 分隔符
- 2. 变量与常量
- 2 .1 变量
- 2 . 1 .1 变量定义
- 2 . 1 .2 变量释放
- 2 .2 常量
- 2 . 2 .1 常量定义
- 2 . 2 .2 预定义常量
- 3. 运算符
- 3. 1 算数运算符
- 3 .2 字符串运算符
- 3 .3 赋值运算符
- 3 .4 比较运算符
- 3 .5 逻辑运算符
- 3 .6 其他运算符
- 4. 流程控制
- 4 .1 顺序执行
- 4 .2 分支执行
- 4 . 2 .1 if条件控制执行
- 4 . 2 .2 switch语句
- 4 .3 循环执行
- 4 . 3 .1 while语句
- 4 . 3 .2 do while 语句
- 4 . 3 .3 for 循环语句
- 4 .4 特殊执行
前言
PHP(Hypertext Preprocessor)是一种开源的脚本语言,主要用于Web开发,特别是服务器端编程。是学习网络安全需要掌握的一门语言。
PHP常用于开发内容管理系统(CMS)、电子商务网站、论坛系统等,而且与JavaScript、jQuery和其他前端技术结合得非常好,能够构建完整的Web应用程序。
1. 基础语法
php特点:
- 在php文件中,可以与html和JS混写。
- 使用
<?php ?>将php语句括起来。 - php模式之外的内容会被作为字符输出到浏览器。
<?phpphpinfo();
?>
<h1>111</h1>
<script>console.log("111")</script>
1 .1 注释
// 单行注释
/*
多行注释1
多行注释2
*/
1 .2 分隔符
分割符使用;,表示一句话结束。
2. 变量与常量
2 .1 变量
变量是用于临时存储值的容器,可以通过变量名访问到变量值。
PHP脚本语言是一种弱数据类型语言,常量或变量的数据类型由程序的上下文决定,给予一个变量赋予什么样的值,就是什么数据类型。
2 . 1 .1 变量定义
变量命名:变量名严格区分大小写,变量名由字母、数字、下划线组成,并且不能以数字开头。
$a
$A
$_a
变量赋值:直接赋值。
$username = "dai";
echo $username;
2 . 1 .2 变量释放
使用unset()方法释放变量。
$username = "dai";
echo $username;
//释放
unset($username);
echo $username;
2 .2 常量
常量一旦被定义,就不能被更改或取消定义,作用域为全局。
2 . 2 .1 常量定义
常量的命名与变量相似,常量标识符总是大写的,变量一般是$开头。
define("USERNMAE","Dai");
echo USERNAME;
2 . 2 .2 预定义常量
已经定义好,可以直接使用的常量。
| 常量名 | 值说明 |
|---|---|
| __ FILE __ | 当前的文件名,完整的路径 |
| __ LINE __ | 当前行号 |
| __ FUNCTION __ | 当前函数名 |
| __ CLASS __ | 当前类名 |
| __ METHOD __ | 当前对象的方法名 |
| PHP_OS | 操作系统类型 |
| PHP_VERSION | PHP版本 |
| DIRECTORY_SEPARATOR | 目录的分隔符 |
3. 运算符
3. 1 算数运算符
| 用法 | 名称 | 说明 |
|---|---|---|
| -$a | 取反 | 取$a的相反数 |
| $a + $b | 加 | 求和 |
| $a - $b | 减 | 求差 |
| $a * $ b | 乘 | 求积 |
| $a / $b | 除 | 求商 |
| $a % $b | 取余 | 取余 |
| ++ $a | 先加 | 先加一再取值 |
| – $a | 先减 | 先减一再取值 |
| $a ++ | 后加 | 先取值再加一 |
| $a – | 后减 | 先取值再减一 |
3 .2 字符串运算符
字符串运算符主要用于字符串拼接。使用.作为连接运算符。
<?php
$name = "dai";
$str = "Hello,".$name;
var_dump($str);
?>
3 .3 赋值运算符
将右边表达式的值赋值给左边变量。
| 赋值运算符 |
|---|
| = |
| += |
| -= |
| *= |
| /= |
| %= |
| .= |
3 .4 比较运算符
对操作数进行比较,返回布尔值。
| 用法 | 说明 |
|---|---|
| $a == $b | 等于 |
| $a === $b | 全等 |
| $a != $b | 不等 |
| $a <> $b | 不等 |
| $a !== $b | 不全等 |
| $a < $b | 小于 |
| $a > $b | 大于 |
| $a <= $b | 小于等于 |
| $a >= $b | 大于等于 |
在PHP中,使用echo输出布尔值,true页面打印1,false页面不输出。如果想要输出可以使用var_dump()。
3 .5 逻辑运算符
| 用法 | 说明 |
|---|---|
| $a and b < b r > b<br> b<br>a && $b | 与运算 |
| $a or b < b r > b<br> b<br>a || $b | 或运算 |
| $a xor $b | 异或运算 |
| !$a | 非运算 |
3 .6 其他运算符
<?php
$a = 10;
$b = 20;
// 赋值判断运算符
$max = $a > $b ? $a : $b;
// 反引号``,自动适配系统命令
$cmd = "whoami";
echo "<pre>".`$cmd`;
// @ 屏蔽表达式可能发生的错误
echo @username;
?>
4. 流程控制
4 .1 顺序执行
自上而下地执行,PHP语句的默认执行过程。
echo 1;
echo 2;
echo 3;
4 .2 分支执行
分支执行可以根据表达式的值是否为TRUE来选择执行代码,主要通过 if 和 switch 来执行。
4 . 2 .1 if条件控制执行
<?php
if(判断语句1){执行语句1;
}elseif(判断语句2){执行语句2;
}else{最后执行语句;
}
?>
4 . 2 .2 switch语句
<?phpswitch(变量){case 值1:执行语句1;break;case 值2:执行语句2;break;case 值3:执行语句3;break;default:}
?>
4 .3 循环执行
重复执行某些操作。
4 . 3 .1 while语句
<?phpwhile(条件){循环执行语句;}
?>
4 . 3 .2 do while 语句
与while语句不同的是检查时间的不同。
<?phpdo{循环执行条件;}while(条件)
?>
4 . 3 .3 for 循环语句
<?phpfor(计数器;判断条件;自增或自减){循环执行条件;}
?>
4 .4 特殊执行
exit,用于退出整个PHP脚本。
<?phpecho 1;exit;echo 2;
?>
相关文章:
[后端代码审计] PHP 基础学习
文章目录 前言1. 基础语法1 .1 注释1 .2 分隔符 2. 变量与常量2 .1 变量2 . 1 .1 变量定义2 . 1 .2 变量释放 2 .2 常量2 . 2 .1 常量定义2 . 2 .2 预定义常量 3. 运算符3. 1 算数运算符3 .2 字符串运算符3 .3 赋值运算符3 .4 比较运算符3 .5 逻辑运算符3 .6 其他运算符 4. 流程…...
【OpenCV C++20 学习笔记】直方图计算-split, calcHist, normalize
直方图计算-split, calcHist, normalize 广义直方图示例目标分离通道计算直方图绘制计算结果归一化绘制 最终结果 广义直方图 直方图的横坐标除了可以是图片中的强度值,也可以是任何其他我们想要观察的特征。例如,下面的图片矩阵中包含了0-255的强度值&…...
js入门经典学习小结
简介 js是解释型语言,虽然名字有java,但和java,c等编译型语言不同,它是解释型的,类似perl,py 历史 90年代最早js 1.0版本是网景navigator2引入的 然后欧洲计算机制造商协会(ECMA)…...
nps内网穿透之——腾讯云服务器和linux虚拟机
准备 1、客户端:准备一个内网的linux内网主机,或是一个虚拟机。 2、服务端:准备一个云服务器(阿里、腾讯、华为都行)。 安装方式: 1、自己到Github官网下载安装包上传。 下载地址:https://…...
大数据知识点
VMWare 设置网段 虚拟机设置 JDK部署 云平台 创建VPC 找到阿里云控制台里的VPC,点击专有网络 安全组 搁置…有需要再使用,因为每月要花200左右 大数据 数据导论...
【计算机毕设项目】2025级计算机专业项目推荐 (前后端Web项目)
以下项目选题适合计算机专业大部分专业,技术栈主要为:Java语言,SSMVue框架,MySQL数据库 后台免费获取源码,可提供远程调试、环境安装配置服务(文末有联系方式) 以下是本次部分项目推荐1-end&a…...
【MySQL】2.MySQL实际操作
目录 一、数据分析基本流程 注:Navicat快捷键 二、获取数据后的代码操作 (1)探索数据,查看定义 (2)筛选有用的字段 (3)建新表(查询建表插值 三合一) 注意…...
Winform画圆以及无边框窗体的移动
普通圆 在WinForms中绘制一个圆形,可以通过几种方式实现: 1. 使用ControlPaint类 在窗体的Paint事件中使用ControlPaint.DrawCircle方法来绘制圆形。 private void Form1_Paint(object sender, PaintEventArgs e) {int x 100; // 圆心的X坐标int y …...
如何高效记录并整理编程学习笔记?
高效记录并整理编程学习笔记是提升编程学习效率和效果的重要方法。以下是一些具体的步骤、工具及其使用方法的介绍: 一、高效记录笔记的方法 专注理解:在记录笔记时,首先要保持高度的专注,努力理解老师或教程中讲解的知识点。避免…...
docker的安装和常用命令
docker的安装和常用命令 安装老版本新版本 镜像源配置常用命令基本命令清理文件复制构建镜像上传镜像 补充权限不足无目录权限无用户权限 容器访问jenkins推送镜像失败修改主机名编写Dockerfile 注:这里的安装是针对于cetnos7。 安装 老版本 安装老版本可能遇到报…...
haproxy 7000字配图超详细教程 从小白到入门
简介:HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速,HAProxy具备媲美商用负载均衡器的性能和稳…...
使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:5、将自然语言问题转换为结构化查询
5. 查询构建 — Ragatouille 用户用自然语言提出问题并被路由到特定数据源(例如,向量存储、图形数据库等)后,该问题需要被转换为结构化查询,以便从选定的数据源检索信息(例如,文本到SQL、文本到…...
浅析JavaScript 堆内存及其通过 Chrome DevTools 捕获堆快照的方法
JavaScript 的堆内存(Heap Memory)是内存中专门用于存放程序执行过程中动态生成的对象、函数实例以及其他动态数据结构的区域。与调用栈(Call Stack)专注于管理函数调用的顺序和执行环境不同,堆内存则专注于动态地分配…...
C++学习笔记----2、使用C++进行优雅编程(五)----命名
C编译器对于命名有如下规则: 命名中可以有大小写字母、数字、下划线。字母不限于英文字符,可以是任意国家语言的字母,例如日文,阿拉伯文等。不能以数字开头,例如9to5。包含双下划线的被标准库保留不可使用,…...
Element UI顶部导航栏与左侧导航栏联动实现~
需求:点击顶部导航栏的不同栏位实现左侧导航栏菜单的不同展示实现联动效果。 点击顶部导航栏按钮将对应的左侧导航栏数据传递给vuex,并在左侧导航栏父组件中接收并传递给左侧导航栏子组件,使用递归组件实现渲染等,具体的优化可以看下面的注释…...
ECMAScript6模板字面量:反引号、${}占位符的使用
ECMAScript 6 中引入了模板字面量,主要通过多行字符串和字符串占位符对字符串进行增强操作。如下: //使用ECMAScript6模板字面量拼接字符串,例如:2024年8月12日 15:38:28 星期一 let dateRet ${Year}年${Month}月${Dates}日 ${H…...
网关与AWS云心跳周期,网关断电或者网络不稳定的离线机制
当mqtt连线建立时, 需要指定keep alive参数,当 iot core在1.5倍 keep alive timeout时长内都没收到任何来自设备端的操作, 例如 ping, subscribe, publish ,则会主动将连线中断。如果iot core检测到tcp 连接中断, 会立即中断;如果未检测到则会等到1.5倍 …...
【代码随想录训练营第42期 Day26打卡 贪心Part1 - LeetCode 455.分发饼干 376. 摆动序列 53. 最大子序和
目录 一、贪心 二、题目与题解 题目一:455.分发饼干 题目链接 题解:排序双指针贪心 题目二:376. 摆动序列 题目链接 题解:贪心 题目三:53. 最大子序和 题目链接 题解1:暴力(失败&…...
利用有限元法(FEM)模拟电磁场与样品的相互作用
一、引言 电磁场与物质的相互作用是理解光学现象的基础。在实际应用中,激光光束与样品的相互作用通常涉及复杂的电磁场分布,尤其在微纳尺度结构中。因此,使用数值模拟方法如有限元法(FEM)来模拟电磁场的分布和传播&…...
如何保持git主分支树的整洁
经典应用展示Git版本控制用法 本章将列举Git的一些闪亮特性,期待能够让您爱上Git 文章目录 经典应用展示Git版本控制用法前言一、分支是什么?二、主-分支合并merge三、cherry-pick(精挑细选)四、Rebase(变基)4.1 合并本地分支到主分支4.2 合并本地分支从指定commit开始的…...
ADC类型解析与选型指南:从闪存到ΔΣ
1. ADC基础概念与核心原理在电子系统中,模拟信号到数字信号的转换(ADC)是实现物理世界与数字世界交互的关键桥梁。作为一名嵌入式开发者,我经常需要根据项目需求选择不同类型的ADC拓扑结构。让我们先拆解ADC的核心工作机制。ADC转…...
二极管特性与19种经典应用电路详解
1. 二极管基础特性与工作原理二极管作为电子电路中最基础的半导体器件之一,其核心特性源于PN结的单向导电性。当P型半导体(空穴多数载流子)与N型半导体(电子多数载流子)结合时,在交界处形成耗尽层ÿ…...
TCP 是用来解决什么问题:从 IP 的不可靠到可靠的端到端通信
TCP 是用来解决什么问题:从 IP 的不可靠到可靠的端到端通信01. 前言:为什么有了 IP 还不够?02. IP 协议的四大先天缺陷03. TCP 要解决的六大核心问题04. 问题一:丢包 → 确认 超时重传4.1 问题描述4.2 TCP 的解决方案05. 问题二&…...
从实战到复盘:K8s服务器电子数据取证竞赛全解析与核心技巧
1. K8s服务器电子数据取证竞赛全景解析 第一次参加K8s服务器电子数据取证竞赛时,我完全被复杂的集群环境搞懵了。三个节点、七个命名空间、近20个Pod,还有各种加密算法和数据库连接,简直像走进了一个技术迷宫。但经过几轮实战后,我…...
保姆级教程:用MS-Swift在本地电脑上跑通Qwen2.5-VL多模态大模型(附WebUI界面)
零基础玩转Qwen2.5-VL:手把手教你用MS-Swift搭建多模态AI实验室 想象一下,你的电脑不仅能理解你说的话,还能"看懂"你上传的照片——比如准确描述图片中的猫咪姿势,或者帮你分析设计稿的配色方案。这就是Qwen2.5-VL多模态…...
03_Neo4j知识体系之5.x与2026.x新特性和版本演进
03_Neo4j知识体系之5.x与2026.x新特性和版本演进 体系 版本演进层:Neo4j 5.x LTS、2025/2026 日历化版本、Cypher 5 与 Cypher 25、Autonomous Clustering、Ops Manager、Vector Indexes、AI 能力关联能力:与升级迁移路径、集群扩容、Fabric 联邦查询、差…...
Radiology子刊(IF=6.3)复旦大学附属金山医院强金伟教授等团队:基于多参数MRI的深度学习和影像组学评估早期宫颈癌淋巴结转移
01文献学习今天分享的文献是由复旦大学附属金山医院强金伟教授等团队于2026年4月3日在《Radiology: Imaging Cancer》(中科院2区,IF6.3)上发表的研究“Multiparametric MRI-based Deep Learning and Radiomics for Evaluating Lymph Node Met…...
**光计算驱动下的编程新范式:用Python探索光子芯片加速的AI推理**在传统电子计算面临物理极限
光计算驱动下的编程新范式:用Python探索光子芯片加速的AI推理 在传统电子计算面临物理极限的今天,**光计算(Photonic Computing)**正从实验室走向产业化落地。它利用光子替代电子进行信息传输和处理,具备超低功耗、超…...
零成本构建开源串流服务器:跨设备体验全攻略
零成本构建开源串流服务器:跨设备体验全攻略 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 在多设备互联的时代,如何打破硬件限制,让高性能游戏…...
RWTS-PDFwriter:macOS PDF创建效率提升解决方案
RWTS-PDFwriter:macOS PDF创建效率提升解决方案 【免费下载链接】RWTS-PDFwriter An OSX print to pdf-file printer driver 项目地址: https://gitcode.com/gh_mirrors/rw/RWTS-PDFwriter RWTS-PDFwriter是一款专为macOS设计的虚拟打印机驱动程序࿰…...
