安全帮
出品|安全帮(www.secbang.com)
概述:安全帮专注安全教育
【本章目的】
掌握代码审计中常用的代码调试函数,单引号与双引号之间的区别
【本章原理】
开发中,经常会查看变量的值,因此经常会将变量的值输出到页面以便于查看。这就需
要用到调试函数。
【测试步骤】
1.1 双击wampmanager.exe 启用warp
1.1 函数调试 echo/print
这是最简单的输出数据的调试方法,一般用来输出变量值,或者不确定程序执行到了哪个分支的情况下使用。可以一次输出多个值,多个值之间用逗号分隔。test.php代码中,定义了一个名为$a的数组,还定义了变量$secbang,其值为tsecbang。echo $secbang 输出变量 的值,即secbang
函数 打印一个值(它的参数),只能打印出简单类型变量的值 如int,string。这里使用print $secbang 效果和echo相同
1.2 【print_r ,var_dump, var_export debug_zavl_dump】
这个主要是用来输出变量数据值,特别是数组和对象数据,一般我们在查看接口返回值,
或者某些不太确定变量的时候,都可以使用这几个函数。
NO1 .print_r()可以把字符串和数字简单地打印出来,而数组则以括起来的键和值的列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"n"。因此用var_dump()函数更适合调试。其格式很整齐,跟var_dump 的区别是没有类型数据,并且布尔值的false和值NULL输出为空。使用echo $a输出数组时只能输出Array,并不能输出数组的值。
NO2 .print_r($a)既可以输出Array,还能输出数组的值
NO3 .var_dump()判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是
变量的值并回返数据类型。
NO4 .var_dump($secbang)输出变量时,不仅输出变量值,还输出数据类型和长都
NO5 .var_export()输出或返回一个变量的字符串表示。此函数返回关于传递给该函数的变量的结构信息,它和var_dump()类似,不同的是其返回的表示是合法的PHP代码。使用var_export($a);输出数组a的值。需要注意的一点是,var_export()对于资源型的变量会输出NULL度
NO6 .debug_zval_dump()输出结果跟var_dump 类似,唯一增加的一个
值是refcount,就是记录一个变量被引用了多少次,这是php的copy on write(写时复
制)的机制的一个重要特点
NO1 . 用//开头,作为单行注释
<?php
//Author:secbang.com
echo "test"
?>
NO2 . 用#开头,作为单行注释
<?php
#Author:secbang.com
echo "test"
?>
NO3 . 用/*开头 */结尾,作为多行注释
<?php
/*Author:secbang.com
这是一个测试
*/
echo "test"
?>
NO1. 在PHP代码中,双引号解析变量,即双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。使用echo “$str”输出变量,解析变量$str,故输出变量$str的值simpleware4.
NO2. 而单引号不解析变量,即单引号里面的字段不进行解释,直接输出。使用echo ‘$str’不解释变量$str,所以输出$str。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论