当前位置: 首页 > news >正文

[后端代码审计] 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_VERSIONPHP版本
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来选择执行代码,主要通过 ifswitch 来执行。

4 . 2 .1 if条件控制执行
<?php
if(判断语句1){执行语句1;
}elseif(判断语句2){执行语句2;
}else{最后执行语句;
}
?>
4 . 2 .2 switch语句
<?phpswitch(变量){case1:执行语句1;break;case2:执行语句2;break;case3:执行语句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 广义直方图示例目标分离通道计算直方图绘制计算结果归一化绘制 最终结果 广义直方图 直方图的横坐标除了可以是图片中的强度值&#xff0c;也可以是任何其他我们想要观察的特征。例如&#xff0c;下面的图片矩阵中包含了0-255的强度值&…...

js入门经典学习小结

简介 js是解释型语言&#xff0c;虽然名字有java&#xff0c;但和java&#xff0c;c等编译型语言不同&#xff0c;它是解释型的&#xff0c;类似perl&#xff0c;py 历史 90年代最早js 1.0版本是网景navigator2引入的 然后欧洲计算机制造商协会&#xff08;ECMA&#xff09…...

nps内网穿透之——腾讯云服务器和linux虚拟机

准备 1、客户端&#xff1a;准备一个内网的linux内网主机&#xff0c;或是一个虚拟机。 2、服务端&#xff1a;准备一个云服务器&#xff08;阿里、腾讯、华为都行&#xff09;。 安装方式&#xff1a; 1、自己到Github官网下载安装包上传。 下载地址&#xff1a;https://…...

大数据知识点

VMWare 设置网段 虚拟机设置 JDK部署 云平台 创建VPC 找到阿里云控制台里的VPC&#xff0c;点击专有网络 安全组 搁置…有需要再使用&#xff0c;因为每月要花200左右 大数据 数据导论...

【计算机毕设项目】2025级计算机专业项目推荐 (前后端Web项目)

以下项目选题适合计算机专业大部分专业&#xff0c;技术栈主要为&#xff1a;Java语言&#xff0c;SSMVue框架&#xff0c;MySQL数据库 后台免费获取源码&#xff0c;可提供远程调试、环境安装配置服务&#xff08;文末有联系方式&#xff09; 以下是本次部分项目推荐1-end&a…...

【MySQL】2.MySQL实际操作

目录 一、数据分析基本流程 注&#xff1a;Navicat快捷键 二、获取数据后的代码操作 &#xff08;1&#xff09;探索数据&#xff0c;查看定义 &#xff08;2&#xff09;筛选有用的字段 &#xff08;3&#xff09;建新表&#xff08;查询建表插值 三合一&#xff09; 注意…...

Winform画圆以及无边框窗体的移动

普通圆 在WinForms中绘制一个圆形&#xff0c;可以通过几种方式实现&#xff1a; 1. 使用ControlPaint类 在窗体的Paint事件中使用ControlPaint.DrawCircle方法来绘制圆形。 private void Form1_Paint(object sender, PaintEventArgs e) {int x 100; // 圆心的X坐标int y …...

如何高效记录并整理编程学习笔记?

高效记录并整理编程学习笔记是提升编程学习效率和效果的重要方法。以下是一些具体的步骤、工具及其使用方法的介绍&#xff1a; 一、高效记录笔记的方法 专注理解&#xff1a;在记录笔记时&#xff0c;首先要保持高度的专注&#xff0c;努力理解老师或教程中讲解的知识点。避免…...

docker的安装和常用命令

docker的安装和常用命令 安装老版本新版本 镜像源配置常用命令基本命令清理文件复制构建镜像上传镜像 补充权限不足无目录权限无用户权限 容器访问jenkins推送镜像失败修改主机名编写Dockerfile 注&#xff1a;这里的安装是针对于cetnos7。 安装 老版本 安装老版本可能遇到报…...

haproxy 7000字配图超详细教程 从小白到入门

简介&#xff1a;HAProxy是一个免费的负载均衡软件&#xff0c;可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力&#xff0c;具备丰富的功能。HAProxy的社区非常活跃&#xff0c;版本更新快速,HAProxy具备媲美商用负载均衡器的性能和稳…...

使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:5、将自然语言问题转换为结构化查询

5. 查询构建 — Ragatouille 用户用自然语言提出问题并被路由到特定数据源&#xff08;例如&#xff0c;向量存储、图形数据库等&#xff09;后&#xff0c;该问题需要被转换为结构化查询&#xff0c;以便从选定的数据源检索信息&#xff08;例如&#xff0c;文本到SQL、文本到…...

浅析JavaScript 堆内存及其通过 Chrome DevTools 捕获堆快照的方法

JavaScript 的堆内存&#xff08;Heap Memory&#xff09;是内存中专门用于存放程序执行过程中动态生成的对象、函数实例以及其他动态数据结构的区域。与调用栈&#xff08;Call Stack&#xff09;专注于管理函数调用的顺序和执行环境不同&#xff0c;堆内存则专注于动态地分配…...

C++学习笔记----2、使用C++进行优雅编程(五)----命名

C编译器对于命名有如下规则&#xff1a; 命名中可以有大小写字母、数字、下划线。字母不限于英文字符&#xff0c;可以是任意国家语言的字母&#xff0c;例如日文&#xff0c;阿拉伯文等。不能以数字开头&#xff0c;例如9to5。包含双下划线的被标准库保留不可使用&#xff0c…...

Element UI顶部导航栏与左侧导航栏联动实现~

需求&#xff1a;点击顶部导航栏的不同栏位实现左侧导航栏菜单的不同展示实现联动效果。 点击顶部导航栏按钮将对应的左侧导航栏数据传递给vuex,并在左侧导航栏父组件中接收并传递给左侧导航栏子组件&#xff0c;使用递归组件实现渲染等&#xff0c;具体的优化可以看下面的注释…...

ECMAScript6模板字面量:反引号、${}占位符的使用

ECMAScript 6 中引入了模板字面量&#xff0c;主要通过多行字符串和字符串占位符对字符串进行增强操作。如下&#xff1a; //使用ECMAScript6模板字面量拼接字符串&#xff0c;例如&#xff1a;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 &#xff0c;则会主动将连线中断。如果iot core检测到tcp 连接中断, 会立即中断&#xff1b;如果未检测到则会等到1.5倍 …...

【代码随想录训练营第42期 Day26打卡 贪心Part1 - LeetCode 455.分发饼干 376. 摆动序列 53. 最大子序和

目录 一、贪心 二、题目与题解 题目一&#xff1a;455.分发饼干 题目链接 题解&#xff1a;排序双指针贪心 题目二&#xff1a;376. 摆动序列 题目链接 题解&#xff1a;贪心 题目三&#xff1a;53. 最大子序和 题目链接 题解1&#xff1a;暴力&#xff08;失败&…...

利用有限元法(FEM)模拟电磁场与样品的相互作用

一、引言 电磁场与物质的相互作用是理解光学现象的基础。在实际应用中&#xff0c;激光光束与样品的相互作用通常涉及复杂的电磁场分布&#xff0c;尤其在微纳尺度结构中。因此&#xff0c;使用数值模拟方法如有限元法&#xff08;FEM&#xff09;来模拟电磁场的分布和传播&…...

如何保持git主分支树的整洁

经典应用展示Git版本控制用法 本章将列举Git的一些闪亮特性,期待能够让您爱上Git 文章目录 经典应用展示Git版本控制用法前言一、分支是什么?二、主-分支合并merge三、cherry-pick(精挑细选)四、Rebase(变基)4.1 合并本地分支到主分支4.2 合并本地分支从指定commit开始的…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...