【PHP+代码审计】PHP基础——流程控制

news/2024/7/24 4:59:50 标签: php, 开发语言, web安全, PHP基础
🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

控制分类

顺序结构

分支结构

If分支

Switch分支

循环结构

For循环

while循环

do-while循环

循环控制

流程控制替代语法


控制分类

顺序结构:代码从上往下,顺序执行。(代码执行的最基本结构)

分支结构:给定一个条件,同时有多种可执行代码(块),然后会根据条件执行某一段代码

循环结构:在某个条件控制范围内,指定的代码(块)可以重复执行

顺序结构

顺序结构:最基本结构,所有代码默认都是从上往下依次执行

分支结构

在PHP中,分支结构主要有两种:if分支和switch分支

If分支

If:如果的意思,给定一个条件,同时为该条件设置多种(两种)情况,然后通过条件判断来实现具体的执行段

基本语法:if分支PHP也提供多种方式来实现

最简if:只有一段代码,但是可以选择是否执行

If(条件表达式){

//满足条件所要执行的内容; //顺序结构

}

复杂if结构:在判断条件之后,通常就有两种结果:满足或者不满足,在不满足之后还可以再次进行条件判断

If(条件表达式1){

//满足条件表达式1的代码段;

}elseif(条件表达式2){

//不满足表达式1条件,但是满足表达式2的代码;

}… //可以使用多个elseif来进行再次条件筛选

Else{

//全部不满足要执行的代码;

}

注意:如果条件特别多才会采用复合if形式

1、 如果条件比较单一(同一个条件),会采用elseif复合方式

2、 如果判断条件不一致,建议使用嵌套语法(不宜有太多层嵌套:影响代码美观)

If分支,适用于所有的条件判断(分支结构)

Switch分支

Switch分支:有一组情形存在,同过一条件,通常有多个值,但是每一个值都会有对应不同的代码要执行。

Switch判断方式:是将条件放到分支结构内部判断

Switch基本语法:

Switch(条件表达式){

//所有条件判断:逐个进行

Case 值1: //当前条件表达式的结果与值1相等(==)

要执行的代码段;

Break; //在switch中,如果条件匹配成功,那么系统就不会再次匹配条件,会自动顺序执行向下的所有代码(case代码除外),需要中断执行:break表示中断switch(结束)。

Case 值2:

要执行的代码段;

Break;

//可以使用类似else的语法:都不匹配

Default:

//匹配失败的代码;

Break;

}

php"><?php

//分支结构,switch结构
$a = 6;
//从1到5做不同的事情
switch ($a) {
    case 1:
        echo '1';
        break;
        case 2:
            echo '2';
            break;
            case 3:
                echo '3';
                break;
                case 4:
                    echo '4';
                    break;
                    case 5:
                        break;
    default:
        echo 'error';
}

If和switch的选择

1、 if能做所有的分支结构事情

2、 switch处理的是条件比较多,同时比较单一,而且是固定值匹配的分支结构

循环结构

循环结构:代码段在一定的控制下,可以多次执行

在PHP中循环结构有以下几种:

For循环:通过条件、起始和终止判断执行

While循环:通过判断条件终止

Do-while循环:跟while差不多

Foreach循环:专门针对数组

For循环

For循环基本语法

php">For(条件表达式1;条件表达式2;条件表达式3){

//条件表达式1:定义初始化条件,可以有多种赋值语句存在,使用逗号分隔即可

//条件表达式2:边界判定,限定循环执行的次数

//条件表达式3:用来执行条件变化(自操作)

//循环体

}

For循环执行原理:

1、 执行条件表达式1:定义初始化条件(执行一次)

2、 执行条件表达式2:判断条件(N次)

2.1 满足条件:执行循环体

2.2 不满足条件:循环结束

3、 执行循环体:(N次)

4、 执行条件表达式3:循环变量变化(N次)

5、 执行条件表达式2:判断条件(N次)

6、 重复执行3-4-2步骤:直到第2步不满足条件结束循环

For循环中条件表达式1的多变量定义

For循环特殊使用:for循环中对应的括号(条件)可以一个都没有(死循环):一定要避免出现

php">For(;;){

//循环体

}
php"><?php
// 无限循环,每次迭代延迟1秒
for (;;) {
    echo 'hack' . "<br/>";
    flush(); // 立即输出缓冲区内容到浏览器
    sleep(1); // 延迟1秒
}

while循环

while循环基本语法:

php">条件初始化;

while(条件表达式){

//条件表达式就是判断边界条件

循环体; //循环条件的变化

}

For与while的选择

1、 如果是基于固定已知条件(数值而且是有规律的变化),使用for循环

2、 while可以做灵活的条件判定(while使用的比较多)

do-while循环

do-while:看着很像while,while首先进行条件判定然后执行循环体,有可能出现第一次就条件不满足,那么就会直接失败(循环体一次都不执行)。Do-while就是先干了再说(执行循环体),后判断条件。(至少会执行一次循环体)

php">do-while基本语法:

do{

//循环体

}while(条件表达式);

循环控制

循环控制:在循环内部对循环本身进行控制

中断控制:重新开始循环,循环体中还有其他内容,也再执行

Continue 层级; //默认是1(循环可以多层嵌套)

终止控制:循环直接结束

Break 层级; //默认是1

因为循环经常性会碰到嵌套(循环中间包含循环),如果在循环内部有些条件下,明确可以知道当前循环(或者说外部循环)不需要继续执行了,那么就是可以使用循环控制来实现:其中内部循环也可以控制到外部,就是通过使用层级参数。

Continue 2; //当前自己循环后面内容不再执行,同时外部循环如果还有循环体也不再执行,重新来过;

Break 2; //当前自己循环结束,同时外部也结束(如果还有外部不受影响,继续执行)

流程控制替代语法

流程控制替代语法:分支和循环结构的替代语法

PHP本身是嵌入到HTML中的脚本语言,需要在HTML中书写一些关于判断或者循环的结构语法,必须符合PHP标签规范,需要HTML与PHP进行混搭,如果使用原始的PHP代码那么会非常不美观。

需求:打印一个九九乘法表,使用表格来展示:

在PHP书写到HTML中的这些大括号{}非常不美观,所以PHP提供了一种替代机制,让其可以不用书写大括号:

php"><table border=1>
    <?php for ($i = 1;$i < 10;$i++) :?>
        <tr>
            <?php for ($j = 1;$j <= $i;$j++) :?>
                <td>
                    <?php echo $i . '*' . $j . '=' . $i*$j;?>
                </td>
            <?php endfor;?>
        </tr>
    <?php endfor;?>
</table>

PHP中具体有哪些替代语法呢?PHP应该在HTML中只做数据输出,输出通常伴有条件判断和循环操作,因此PHP提供了对应分支结构和循环结构的替代语法:全部都是对应的一个模式:

左大括号{使用冒号替代

右大括号}使用endfor;对应的起始标记替代


http://www.niftyadmin.cn/n/5424543.html

相关文章

前端基础篇-深入了解用 HTML 与 CSS 实现正文排版、正文布局

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 HTML 与 CSS 概述 2.0 HTML - 正文排版 2.1 视频标签 2.2 音频标签 2.3 段落标签 2.4 文本加粗标签 2.5 换行标签 2.6 CSS 样式 2.7 实现正文排版 3.0 HTML - …

QT进阶---------pro项目文件中的常用命令 (第三天)

1、命令一 决定exe可执行程序的生成路径CONFIG 作用&#xff1a;不使用默认路径&#xff0c;方便移植 CONFIG(debug, debug|release) {DESTDIR $$_PRO_FILE_PWD_/../../../debugXXXsystem } else {DESTDIR $$_PRO_FILE_PWD_/../../../realeaseXXXsystem } 是用于 Qt 项目…

spring-boot操作elasticsearch

一、环境准备 springboot与elasticsearch的更新都非常快&#xff0c;为了避免兼容性问题&#xff0c;要注意下选择的版本问题。具体的可参考官网 --> springboot与elasticsearch版本兼容性 1.1导入依赖 <dependencies><dependency><groupId>org.spring…

【QT 5 +Linux下qt软件点击.sh脚本运行+Dconf编辑器+学习他人文章+番外篇:点击脚本运行软件】

【QT 5 Linux下qt软件点击.sh脚本运行Dconf编辑器学习他人文章番外篇&#xff1a;点击脚本运行软件】 1、前言2、实验环境3、自我学习总结-本篇总结1、说明&#xff1a;代替qt的快捷方式2、适用性更广3、了解工具&#xff1a;Dconf编辑器注意事项&#xff1a; 4、参考链接-感谢…

MPP数据架构设计的缺点

目录 一、MPP架构 二、批处理架构和MPP架构 三、MPP架构的OLAP引擎 一、MPP架构 随着分布式、并行化技术成熟应用&#xff0c;MPP引擎逐渐表现出强大的高吞吐、低延时计算能力&#xff0c;有很多采用MPP架构的引擎都能达到“亿级秒开”。例如Impala、ClickHouse、Druid、Dor…

图论(蓝桥杯 C++ 题目 代码 注解)

目录 迪杰斯特拉模板&#xff08;用来求一个点出发到其它点的最短距离&#xff09;&#xff1a; 克鲁斯卡尔模板&#xff08;用来求最小生成树&#xff09;&#xff1a; 题目一&#xff08;蓝桥王国&#xff09;&#xff1a; 题目二&#xff08;随机数据下的最短路径&#…

pytorch之诗词生成--2

先上代码: # -*- coding: utf-8 -*- # File : dataset.py # Author : AaronJny # Time : 2019/12/30 # Desc : 构建数据集 from collections import Counter import math import numpy as np import tensorflow as tf import settingsclass Tokenizer:""&…

建造者模式实战运用

前言 建造者模式适用于构建复杂对象&#xff0c;并将对象的构建过程和表示过程相互分离&#xff0c;使得同样的构建过程可以创建不同的表示。要构建的对象的成员变量需要有较好的稳定性&#xff0c;不会轻易增加或者删除,且一般都有默认值 理论上使用建造者模式时&#xff0c…