【网络安全学习】(四)PHP详细教程
一、PHP简介
- PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言
- PHP 可以生成动态页面内容,可以创建、打开、读取、写入、关闭服务器上的文件,可以添加、删除、修改您的数据库中的数据,可以加密数据,可以限制用户访问您的网站上的一些页面
二、PHP使用
1、语法:
默认扩展名 .PHP
<?php
// PHP 代码
?>
PHP 中的每个代码行都必须以分号结束,PHP有两种在浏览器输出文本的基础指令:echo 和 print
2、变量
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
- 给变量赋值文本时,需要对文本使用引号 “ ”
可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内
使用常量时,不能在常量名前添加$ 符号,不然会将常量转换成新的未定义变量使用,会导致报错
global 关键字用于函数内访问全局变量。在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global ,也可以写为$GLOBALS[index]的数组
static 关键字用于当一个函数完成时,它的所有变量通常都会被删除,而不希望某个局部变量被删除则需要使用 static 关键字
local(本地的)—— 局部变量的作用域
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
global(总体的)—— 全局变量的作用域
static(静态的)—— static 作用域
parameter(参数)——参数作用域
参数是通过调用代码将值传递给函数的局部变量。
3、输出方式
echo:可以输出一个或多个字符串,并且没有返回值;使用的时候可以不加括号,也可以加括号: echo 或 echo()
print:只允许输出一个字符串,返回值总为 1;使用的时候可以不加括号,也可以加括号: print 或 print()
print_r(): 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。
var_dump(): 判断一个变量的类型与长度,并输出变量的数值,如果变量有值输出的是变量的值并回返数据类型。
var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读
4、EOF
- 以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号
- 开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,也可以用其他任意字符,只要保证开始标记和结束标记不在正文中出现即可
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
5、数据类型
字符串:可以将任何文本放在单引号和双引号中
整型
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
浮点型:带小数部分的数字,或是指数形式
布尔型:TRUE 或 FALSE
数组:可以在一个变量中存储多个值
对象:对象必须声明,必须使用class关键字声明类对象。类是可以包含属性和方法的结构,然后在类中定义数据类型,最后在实例化的类中使用数据类型
NULL值:表示变量没有值,NULL 是数据类型为 NULL 的值。
资源类型:种特殊变量,保存了到外部资源的一个引用。常见资源数据类型有打开文件、数据库连接、图形画布区域等。使用 get_resource_type() 函数可以返回资源(resource)类型:
6、类型比较
- 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
- 严格比较:用三个等号 === 比较,除了比较值,也比较类型。
7、字符串
- 在 PHP 中,只有一个字符串运算符,并置运算符 (.) 用于把两个字符串值连接起来。
- strlen() 函数返回字符串的长度(字节数)
- strpos() 函数用于在字符串内查找一个字符或一段指定的文本,如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
- 详细的String函数可以参考PHP 5 String 函数 | 菜鸟教程
8、数组
- array() 函数用于创建数组:array();
- count() 函数用于返回数组的长度(元素的数量)
- 遍历并打印数组中的所有值,您可以使用 for 循环
- 遍历并打印关联数组中的所有值,您可以使用 foreach 循环
- 数值数组 - 带有数字 ID 键的数组
- 关联数组 - 带有指定的键的数组,每个键关联一个值
- 多维数组 - 包含一个或多个数组的数组
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
9、循环
- while - 重复执行代码块,直到指定的条件不成立
while (条件) {要执行的代码; }
- do...while - 至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环
do {要执行的代码; } while (条件);
- for - 循环执行代码块指定的次数
for (初始值; 条件; 增量) {要执行的代码; }
- foreach - 用于遍历数组
foreach ($array as $value) {要执行代码; }
10、魔术常量
由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了,并且不区分大小写
__LINE__ :文件中的当前行号
__FILE__ : 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名
__DIR__ : 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录
__FUNCTION__ : 函数名称
__TRAIT__ : Trait 的名字,Trait 名包括其被声明的作用区域
__CLASS__ : 类的名称。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)
__METHOD__ : 类的方法名。返回该方法被定义时的名字(区分大小写)
__NAMESPACE__ :当前命名空间的名称(区分大小写)
11、PHP面向对象
类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作
类使用 class 关键字后加上类名定义。 类名后的一对大括号({})内可以定义变量和方法。 类的变量使用 var 来声明, 变量也可以初始化值。 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。
对象 − 是类的实例
成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性
成员函数 − 定义在类的内部,可用于访问对象的数据
继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容
父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类
子类 − 一个类继承其他类称为子类,也可称为派生类
多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性
重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法
抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关
封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内
构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中
析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)
三、Tips(持续更新)
- 当使用 POST 方法时,变量不会显示在 URL 中,只有 GET 才会
- 在 PHP 中,既可以使用单引号 ( ‘ ‘ ) 也可以使用双引号 ( ” ” ) 来包围字符串
- 用户定义的函数和语言关键字对大小写不敏感
【网络安全学习】(四)PHP详细教程相关推荐
- 网络安全学习路线-超详细
零基础小白,到就业!入门到入土的网安学习路线! 在各大平台搜的网安学习路线都太粗略了....看不下去了! 建议的学习顺序: 一.网络安全学习普法(心里有个数,要进去坐几年!) 1.了解并介绍<网 ...
- 2022网络安全学习路线 非常详细 推荐学习
关键词:网络安全入门.渗透测试学习.零基础学安全.网络安全学习路线 分享一套web安全零基础学习视频教程 链接:https://pan.baidu.com/s/1w-8u06bJIb98dl6U1w6 ...
- PyInstaller打包深度学习模型代码详细教程
前言:由于工作需求,需要使用Pyinstaller库将Python脚本打包成exe文件,特此花几天时间查找资料,进行实验.将过程做个梳理,记录下来,方便自己和他人日后查询. 目录 一.安装PyInst ...
- 零基础学习PHP,详细教程
时间2019/5/13突然又想写博客了,于是记录一波. 第一次接触PHP,属于小白中的小白,所以写得肤浅也不要见笑,毕竟路是一步一步走的. 文章会持续更新的,一直到我学完为止.同样是小白的朋友可以关注 ...
- Neo4j 全网最详细教程
Neo4j的语法(3.5版本) 1.公式模式是语法范式 2.代码模式是实例,可按顺序复制执行 3.涉及所有可能的节点.节点类型.属性,关系,关系类型.属性的增删改查 4.学习本教程之后可以学习 neo ...
- 【网络安全学习】渗透测试篇01-DVWA靶场环境搭建教程
渗透测试:通过经授权的模拟攻击,发现存在的漏洞,并以此对网络.主机.应用及数据的安全性进行评估. 靶场作用:在合法的环境下进行网络安全学习与演练 目录 为什么写这篇文章? 介绍及注意事项 环境搭建 1 ...
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON12 IPCORE核之FIFO详细教程
ALTERA FPGA IPCORE核之FIFO详细教程 若要观看该博客配套的视频教程,可点击此链接 一. FIFO简介 FIFO: 是英文first in first out的缩写,即先进先出,指的 ...
- 网络安全--解除认证攻击wifi(详细教程)
文章目录 一.前言 二.准备 1.网卡 2.虚拟机 3.系统 3.1Kali系统下载方法 三.原理 四.实战 1.查看设备 2.实战 2.1进入监听模式 2.2扫描wifi 2.3开始攻击 2.4效果 ...
- tensorflow学习笔记九:将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程
2017/02/23 更新 贴一个TensorFlow 2017开发者大会的Mobile专题演讲 移动和嵌入式TensorFlow 这里面有重点讲到本文介绍的三个例子,以及其他的移动和嵌入式方面的TF ...
- 深度学习:使用UNet做图像语义分割,训练自己制作的数据集,详细教程
语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支.与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割.语义分割目前在自动驾驶.自动抠图.医疗影像等 ...
最新文章
- pthread_join直接决定资源是否能够及时释放
- 3、Spring配置类
- width用计算机英语,计算机的英语词汇
- python class tynu()_Visual Studio Express | Teraz Visual Studio Community
- LeetCode 1034. 边框着色(BFS/DFS)
- 《那些年啊,那些事——一个程序员的奋斗史》——65
- In file included from /usr/include/stdio.h:27:0, from btest.c:16: /usr/include/feat出错的解决办法
- java软件工程师自我评价_java开发简历自我评价【java简历自我评价模板】
- html5网上商城模板代码,商城 HTML5模板
- 嵌入式C语言(入门必看)
- 页面置换算法之最佳置换算法的模拟(C++)
- 深度学习/机器学习入门基础数学知识整理(八):中心极限定理,一元和多元高斯分布
- 基于Excel数据库的Cadence元件库管理
- Kubernetes Events介绍(下)
- Perl 批评的游乐园镜子
- 什么是扭矩?如何做好扭矩?
- html css设置文本溢出隐藏
- 《Very Deep Convolutional Networks for Large-Scale Image Recognition》——VGG论文总结
- Fragment overlap problem
- 李航统计学习方法 Chapter2 感知机
热门文章
- (附源码)springboot人体健康检测微信小程序 毕业设计 012142
- LaTeX 包wwwhy76888com18669144449 Beamer 创建演示文稿
- yolov5的学习和总结
- STM32F1读取MLX90632非接触式红外温度传感器
- UE5 VR模板打包运行,Quit Game崩溃
- 【鸿蒙万能卡片-Codelabs挑战赛】舒尔特方格游戏万能卡片
- 深度学习环境配置:华硕主板的Win 10 + UEFI + GPT条件下且在SSD + HDD双硬盘下安装Ubuntu+Gtx 1080Ti显卡驱动 + CUDA 9.1 + Cudnn 7.1...
- 树莓派3B+ 安装配置raspbian buster
- Codeforces Round #269 (Div. 2) A B C
- 邦纳光纤BT210SM900