PHP的常见函数(持续补充)
这篇博客是记录了博主再做ctf的题目中的时候再代码审计方面遇到的所有php的相关知识,包括但不包含与函数。
因为博主是边做题便学习的PHP函数,所以可能有一些错误,还希望大家能在评论区里进行改错指正。
-----------------------------------------------------------------------分割线。
$this->:
含义是表示实例化后的具体对象!
__construct
:构造一个函数
__wakeup:反序列化标志函数。在反序列化中一般先执行这个函数。
serialize:序列化函数。将字符以字符串的形式表现出来。
unserialize 反序列化函数,将序列化的字符重新编辑成字符。
include:包含并读取这个文件。一般出现则为文件包含漏洞。用php伪协议中的php://input来抓取这个文件。
$_GET:以GET传参的方式传递这个文件。
$_POST:以POST传参的方式传递这个文件。
isset()函数 :用来判断函数变量是否存在
$action=isset($_GET['id']) ? $_GET['id'] : '';
句话的意思就是:如果$_GET['id']已经被设置,即已经有值了,则将$_GET['id']赋给$action;
如果$_GET['id']没有被设置,则$action='';
strlen():返回字符串的长度。
substr(): 返回字符串的一部分
语法:substr(string.start,length)
string规定返回的部分字符串
start规定从哪里开始
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾开始的指定位置开始
0 - 在字符串中的第一个字符处开始
length规定返回的字符串的长度。
_decode:对变量进行某一方式的解码。方式写在函数前面,如base64_decode,进行baser64的解码。
_encode:对变量进行某一方式的编码,用法和decode一样。
is_numeric():检测变量是否为数字或数字字符串
is_array() : 检测变量是否是一个数组。
count() :函数返回数组中元素的数目。
语法:count(array)后面添加查看数量的数组。
array_search() :函数在数组中搜索某个键值,并返回对应的键名。
语法;array_search(value,array,strict)
value:规定在数组中搜索的键值,array:规定搜索的数组,strict:可以伪true或false(默认)
foreach():和array同时使用。
第一种:遍历给定的 数组语句 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种:同上,同时当前单元的键名也会在每次循环中被赋给变量 $key。
其中$value和$key为该函数中的常见变量。其中key为排序1,2,3,4。value为按变量从左向右的顺序输出。
file_get_contents(): 将文件的内容读入到一个字符串中
语法:file_get_contents(path,include_path,context,start,max_length)
path:规定要读取的文件。
start:规定在文件中开始读取的位置。
max_length:规定读取的字节数。
empty():判断一个变量是否被认为是空。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
ini_get:获取php中环境变量的值
PHP error_reporting():程序函数,该函数设置当前脚本的错误报告级别。
cookie():多元化操作函数,完成cookie的设置、获取和删除操作
语法:cookie($name, $value='', $option=null)
name:要操作的cookie的变量。
value(可选):要设置的cookie的值
option(可选):传入的cookie设置参数,默认为空
cookie方法增加对数组的支持(采用轻量级的json编码格式保存 减少存储空间)
cookie('name',array('name1','name2'));
setcookie():
定义一个和其余的 HTTP 标头一起发送的 cookie。和其它标头一样,cookie 必须在脚本的任何其它输出之前发送。这需要将本函数的调用放到任何输出之前,包括 <html> 和 <head> 标签以及任何空格。如果在调用 setcookie() 之前有任何输出,本函数将失败并返回 FALSE。如果 setcookie() 函数成功运行,将返回 TRUE。这并不说明用户是否接受了 cookie。
语法:bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
name | Cookie 的名字 |
value | Cookie 的值。此值保存在客户端,不要用来保存敏感数据。 |
expire | Cookie 过期的时间。 |
path | Cookie 在服务器端的有效路径。 |
domain | 该 cookie 有效的域名。 |
secure | 指明 cookie 是否仅通过安全的 HTTPS 连接传送。当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为FALSE。 |
注意 cookie 中值的部分在发送的时候会被自动用 urlencode 编码并在接收到的时候被自动解码并把值赋给与自己同名的 cookie 变量。如果不想这样并且在使用 PHP 5 的话,可以用 setrawcookie() 来代替。下面这个简单的例子可以得到刚才所设定的 cookie 的值:
strstr() :搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE
语法:strstr(string,search,before_search)
string:规定被搜索的字符串。
search:规定要搜索的字符串。如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符。
before_search:一个默认值为 "false" 的布尔值。如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。
举例:
<?php echo strstr("Hello world!","world"); // 输出 world! ?>
str_replace函数:
替换字符串中的一些字符
语法:str_replace(find,replace,string,count)
find:规定要查找的值。
replace:规定替换 find 中的值的值。
string:规定被搜索的字符串。
conut:一个变量,对替换数进行计数
实例:<?php
echo str_replace("world","Peter","Hello world!");
?> 把Hello world中的world替换成Peter
strrev():反转字符串
ord():
返回字符串第一个字符的 ASCII 值
chr() : 从指定 ASCII 值返回字符
str_rot13():对字符串执行 ROT13 编码
ROT13 编码是把每一个字母在字母表中向前移动 13 个字母得到
php弱类型比较:
例如,"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。
==只比较值,不比较类型。
===除了比较值,也比较类型
php调用系统外函数system:
cat表示抓取文件的数据内容。
但有时候cat抓取无法看见,我们可以尝试tac抓取
cat抓取是从第一行抓到最后一行。tac是从最后一行还是抓到第一行。
rev命令:从第一行抓取到最后一行,然后将抓取的数据倒置。
grep命令:搜索并默认补充数据。比如有一个config.php文件。我们使用cat `grep con*`
即可先搜索包含con的文件名然后进行抓取。
intval()函数:
作用:获取变量的整数值
特点:直到遇到数字或正负号才开始进行转化,且如果转化字符串的时候遇到非数字的字符则会停止。
补充:php的取反符号~。0取反为0.-1取反为0,-2取反为1,-3取反为2。
PHP的常见函数(持续补充)相关推荐
- php程序员面试题(持续补充,偏中级面试题)
博主最近找工作,记录了不少面试题,有些还是挺值的学习的,这里记录一下.有些我会给出参考链接,有些需要大家自己百度了,持续补充.. 一.公司一 1.php的接口和抽象类有什么区别,应用场景有哪些 htt ...
- 本地环境可以,生产环境不行(持续补充)
"我本地是可以的啊,为什么生产上就不行了???" 上面那句话相信大家都有说过,现在似乎已经被戏称为"程序员最大的谎言",呵呵--我就来以我个人的遭遇来总结下教训 ...
- 【Matlab 绘图——持续补充中】
Matlab 绘图--持续补充中 目录 plot() 函数 常用线型.颜色.symbol loglog,semilogx,semilogy,plotyy 图片完善--标题title,坐标轴名称xlab ...
- Pandas 函数方法汇总一览查询(持续补充改进)
Pandas 函数方法汇总一览查询(持续补充改进) 文章目录 Pandas 函数方法汇总一览查询(持续补充改进) 初衷 Pandas 最最常用函数罗列 Pandas 函数用法示例 初衷 NumPy.P ...
- Vim中的常用命令总结(持续补充完善)
文章目录 前言 VIM命令 Vim的三种模式 (1) 命令模式 (2) 插入模式 (3) 退出模式 跳转 (1) gg :跳转到文件开头 (2) Shift + g :跳转到文件结尾 分割窗口 (1) ...
- 在前端网页设计中 align 和 valign 两种对齐方式的不同取值区分(持续补充)
文章目录 前言 一.align 与 valign 的对齐方式与取值 二.常见应用区分整理 2.1.H5 页面设计的取值 2.2.表格标题的取值 2.3.表格属性的取值 总结 前言 不知道大家在学习 H ...
- 数学建模-MATLAB算法精讲系列文章目录介绍(持续补充ing)
前言 结合实际案例,从算法背景开始一步步到最终代码实现,本系列文章主要以matlab代码为主,为照顾学习其他编程语言的小伙伴,大部分算法会附带python.Java.C++.R语言等市面上主流代码,满 ...
- Linux学习之路(持续补充中......)
Linux学习之路 Linux的基础知识 第一章:Linux的概述以及系统安装及使用 第一节:简单了解一下Linux发展历史与历程 Linux是一种自由.开源的类UNIX操作系统. linux 的创始 ...
- Arcpy报错及解决——持续补充中
1.报错:arcgisscripting.ExecuteError: ERROR 000539: Invalid field one_1 分析: 如果Python表达式中引用的字段不存在或拼写错误,发 ...
最新文章
- 我们破解了几乎所有智能手机的人脸识别,唯独没有iPhone
- Python中join()方法和os.path.join()方法
- magisk安装失败_如何使用Magisk去维补boot实现root权限-适合小米一加全部机型
- Oracle数据类型Long需要注意的问题
- android 无线视频,Android系统无线视频流媒体的接收、解码与播放
- C语言 嵌入式 面试小知识点(一)
- 为什么没有普及128位操纵系统的计算机?
- 利用思科 Webex中的3个漏洞,以 ghost 用户身份参会
- dispatch作用 react_javascript – redux-react中的dispatch函数
- Python cx_Oracle执行的sql字符串拼接含分号导致报“ORA-01756“引号内的字符串没有正确结束
- TestStand 语言配置文件说明
- android 五大框架,YunOS 6要做手机界Wintel 破功Android五大怪
- 安装heg时找不到java,记录安装HEG的坑
- 解决索尼WH-1000XM3使用蓝牙连接电脑无法使用麦克风的问题
- 成为REAL程序员的终极指南
- 学习率设置的学问(如何设置学习率)
- Android 7.1.1 Dialer中通话记录显示详解
- 1. Java的历史和演变
- Zephyr启动过程与中断响应
- Windows10无法打开NVIDA控制面板