电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2038 人浏览分享

php eval函数用法

[复制链接]
2038 0
这个函数我想很多朋友都知道,黑客用得最多的一句了,可以解析php 代码并且运行哦,eval是函数不可在php中禁止,以前我就以为可以在php.ini禁止此函数,结果失败了

eval定义和用法

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

语法
eval(phpcode)
  
参数 描述
phpcode 必需。规定要计算的 PHP 代码。

提示和注释
注释:返回语句会立即终止对字符串的计算。
注释:该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。
例子
  1. <?php
  2. $string = "beautiful";
  3. $time = "winter";
  4. $str = 'This is a $string $time morning!';
  5. echo $str. "
  6. ";
  7. eval("$str = "$str";");
  8. echo $str;
  9. ?>   
复制代码
输出:
代码如下复制代码 This is a $string $time morning!
This is a beautiful winter morning!
eval() 函数在CodeIgniter框架里也有用到。在 /system/database/DB.php 文件中,根据系统的配置动态的定义了一个类 CI_DB,具体代码片段如下:?
  1. if ( ! isset($active_record) OR $active_record == TRUE)
  2. {
  3. require_once(BASEPATH.'database/DB_active_rec.php');
  4. if ( ! class_exists('CI_DB'))
  5. {
  6. eval('class CI_DB extends CI_DB_active_record { }');
  7. }
  8. }
  9. else
  10. {
  11. if ( ! class_exists('CI_DB'))
  12. {
  13. eval('class CI_DB extends CI_DB_driver { }');
  14. }
  15. }
  16. require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php');
  17. // Instantiate the DB adapter
  18. $driver = 'CI_DB_'.$params['dbdriver'].'_driver';
  19. $DB = new $driver($params);
复制代码
本函式可将字符串之中的变量值代入,通常用在处理数据库的数据上。参数 code_str 为欲处理的字符串。值得注意的是待处理的字符串要符合 PHP 的字符串格式,同时在结尾处要有分号。使用本函式处理后的字符串会沿续到 PHP 程序结束。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

23

粉丝

2901

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.