欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php代码审计(一)-----调试函数

程序员文章站 2022-04-27 11:05:26
...
本篇文章给大家分享的内容是调试函数,有兴趣的朋友可以看一下,也可以给有需要帮助的同学一点参考


  • 两种最基本的输出方法echo和print

/**
*echo 是一个语言结构,有无括号均可使用:echo 或 echo()
*///打印字符串echo "hello";
echo("hello");//打印变量$text="learn php";
echo $text;
echo($text);

/**
print 也是语言结构,有无括号均可使用:print 或 print()
*///打印字符串print "hello";
print("hello");//打印变量$text="learn php";
print $text;
print($text);


echo 和 print 之间的差异:

echo - 能够输出一个以上的字符串
print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值


  • 双引号和单引号的区别

双引号解析变量
单引号不解析变量

 $str1="hello"; $str2="php"; echo "$str1";//输出:hello echo '$str2';//输出:$str2
  • print_r() 函数

print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer
或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键
和元素。object 与数组类似。
记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

//打印string$str1="hello";
print_r($str1);
print_r("hello");//打印integer$num=1024;
print_r($num);
print_r(1024);//打印float$num=1024.1024;
print_r($num);
print_r(1024.1024);//打印array
 $cars=array("Volvo","BMW","Toyota");
 print_r($cars);/*打印结果
Array ( [0] => Volvo [1] => BMW [2] => Toyota )
*/
  • *var_dump() 函数
    var_dump()方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。用于精确调试。
    显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

 $cars=array("Volvo","BMW","Toyota");
 var_dump($cars); /* 打印结果
 E:\wamp64\www\test.php:56:
array (size=3)
  0 => string 'Volvo' (length=5)
  1 => string 'BMW' (length=3)
  2 => string 'Toyota' (length=6)
 */


 $n=null;
 var_dump($n); /*打印结果
 E:\wamp64\www\test.php:59:null
 */
  • var_export() 函数
    var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值。

注意三点:
1.var_export()会一直保留着结构化形式存储数据.
2.但是特别请记住:此时的变量值的类型已是字符串了($var),不能再以数组的方式取出里面的值来
3. var_export 对于资源型的变量会输出 NULL

 $cars=array("Volvo","BMW","Toyota");
 var_export($cars);
 /*打印结果
 array ( 0 => 'Volvo', 1 => 'BMW', 2 => 'Toyota', )
 */
  • debug_zval_dump()函数
    debug_zval_dump() 输出结果跟 var_dump 类似,唯一增加的一个值是 refcount,就是记录一个变量被引用了多少次,这是 php 的 copy on write (写时复制) 的机制的一个重要特点。

 $cars=array("Volvo","BMW","Toyota");
 debug_zval_dump($cars);
 /*打印结果  array(3) refcount(2){ [0]=> string(5) "Volvo" refcount(1) [1]=> string(3) "BMW" refcount(1) [2]=> string(6) "Toyota" refcount(1) }
 */
  • exit()函数
    终止程序运行

  • 两种最基本的输出方法echo和print

/**
*echo 是一个语言结构,有无括号均可使用:echo 或 echo()
*///打印字符串echo "hello";
echo("hello");//打印变量$text="learn php";
echo $text;
echo($text);

/**
print 也是语言结构,有无括号均可使用:print 或 print()
*///打印字符串print "hello";
print("hello");//打印变量$text="learn php";
print $text;
print($text);

echo 和 print 之间的差异:

echo - 能够输出一个以上的字符串
print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值


  • 双引号和单引号的区别

双引号解析变量
单引号不解析变量

 $str1="hello"; $str2="php"; echo "$str1";//输出:hello echo '$str2';//输出:$str2
  • print_r() 函数

print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer
或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键
和元素。object 与数组类似。
记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

//打印string$str1="hello";
print_r($str1);
print_r("hello");//打印integer$num=1024;
print_r($num);
print_r(1024);//打印float$num=1024.1024;
print_r($num);
print_r(1024.1024);//打印array
 $cars=array("Volvo","BMW","Toyota");
 print_r($cars);/*打印结果
Array ( [0] => Volvo [1] => BMW [2] => Toyota )
*/
  • *var_dump() 函数
    var_dump()方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。用于精确调试。
    显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

 $cars=array("Volvo","BMW","Toyota");
 var_dump($cars); /* 打印结果
 E:\wamp64\www\test.php:56:
array (size=3)
  0 => string 'Volvo' (length=5)
  1 => string 'BMW' (length=3)
  2 => string 'Toyota' (length=6)
 */


 $n=null;
 var_dump($n); /*打印结果
 E:\wamp64\www\test.php:59:null
 */
  • var_export() 函数
    var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值。

注意三点:
1.var_export()会一直保留着结构化形式存储数据.
2.但是特别请记住:此时的变量值的类型已是字符串了($var),不能再以数组的方式取出里面的值来
3. var_export 对于资源型的变量会输出 NULL

 $cars=array("Volvo","BMW","Toyota");
 var_export($cars);
 /*打印结果
 array ( 0 => 'Volvo', 1 => 'BMW', 2 => 'Toyota', )
 */
  • debug_zval_dump()函数
    debug_zval_dump() 输出结果跟 var_dump 类似,唯一增加的一个值是 refcount,就是记录一个变量被引用了多少次,这是 php 的 copy on write (写时复制) 的机制的一个重要特点。

 $cars=array("Volvo","BMW","Toyota");
 debug_zval_dump($cars);
 /*打印结果  array(3) refcount(2){ [0]=> string(5) "Volvo" refcount(1) [1]=> string(3) "BMW" refcount(1) [2]=> string(6) "Toyota" refcount(1) }
 */
  • exit()函数
    终止程序运行

相关推荐:

PHP调试函数和日志记录函数分享,调试日志记录_PHP教程

以上就是php代码审计(一)-----调试函数 的详细内容,更多请关注其它相关文章!

相关标签: ----- php 函数