条件与 eval {php} [关闭]

2024-05-01

<?php
eval("if (1==1){");
echo ('abc');
eval("}");
?>

然后我得到一个错误: 解析错误:C:\wamp\www\test\index.php(2) 中的解析错误:第 1 行的 eval() 代码 ABC 解析错误:C:\wamp\www\test\index.php(4) 中的解析错误:第 1 行的 eval() 代码
怎么修?


你应该really尽量避免使用eval如果可能的话。它带来了巨大且几乎无法克服的安全风险。在我的职业生涯中,我从未遇到过使用此功能的充分理由。如果您发布一个示例,也许我们可以帮助您找到一种方法来实现您的目标,而无需承担巨大的风险。

除了免责声明之外,我认为问题在于您正在开始表达eval这需要完整。

你可以试试这个:

<?php
    $test = eval("return 1==1;");

    if($test)
    {
         echo 'abc';
    }

edit:

目标是做这样的事情:

[if {expression}][blog_title][endif]

这是一个想法。只需使用用户可以设置的变量,而不是允许用户输入任何表达式。例如:

[if should_show_blog_title][blog_title][endif]

然后,用户可以执行此操作(伪代码,因为我不确定您的模板 API 是什么样子):

$template = new Template();

// shows blog title
$template->set_variable('should_show_blog_title', 1 == 1); // 1 == 1  is true, so the variable is true
$template->set_variable('blog_title', 'Awesomesauce Blog!');

// doesn't show title
$template->set_variable('should_show_blog_title', 1 == 0); // 1 == 0 is false, so the variable is false
$template->set_variable('blog_title', 'Awesomesauce Blog!');

另一个想法是提供用户可以使用的有限数量的运算符或函数。代替eval解析它,你必须解析它。例如:

[if not_empty(blog_title)][blog_title][end if]

然后,当您解析和编译模板(基本上插入数据)时,您会查找这些特殊函数并将它们翻译为 PHP。这基本上是白名单,因为您只允许用户执行非常有限的功能子集。

你应该看看Mustache http://mustache.github.com/,这遵循第一个想法。实现实际上非常简单。 Mustache 的 PHP 实现在这里:胡子.php http://github.com/bobthecow/mustache.php。您可以查看示例和一些代码,看看是否可以获得一些想法。

要记住的一件事是,如果您eval荷兰国际集团,模板引擎不会那么用户友好,因为用户必须在他们的条件下编写有效的 PHP。 Mustache 的部分吸引力在于它非常简单且非常易于使用。我是一名经验丰富的 PHP 开发人员,虽然我可以整天使用 PHP,但我仍然更喜欢使用 Mustache 进行模板,因为它可以让我切入主题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

条件与 eval {php} [关闭] 的相关文章

  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据
  • 如何修复 Laravel 中未找到的“PDF”类

    在我的 Laravel 应用程序中遇到以下错误 CollaboPDFController php 第 14 行中的 FatalErrorException 未找到 PDF 类 这是我的ColaboPDFController php
  • 客户端和服务器端编程有什么区别?

    我有这个代码 为什么这不会将 bar 写入我的文本文件 而是警告 42 注意 这个问题的早期修订明确涉及服务器上的 PHP 和客户端上的 JavaScript 问题的本质和解决方案是相同的any当一种语言在客户端上运行而另一种语言在服务器上
  • 如何解析cURL返回的header?

    我正在尝试使用 cURL 与 API 进行通信 其中一种方法要求我传递ININ ICWS CSRF Token标题 即WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zN
  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • 为什么 SORT_REGULAR 在 PHP 中产生不一致的结果?

    我正在开发一个类 它使 PHP 中的数组排序变得更容易 并且我一直在使用 SORT 常量 但是行为或SORT REGULAR 默认排序类型 似乎有所不同 具体取决于您在数组中添加项目的顺序 此外 我找不到任何模式来解释为什么会出现这种情况
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • 同一路由组的多个前缀

    我正在为一所学校编写一个相当简单的网站 该网站有新闻 文章 视频剪辑 等 它的工作方式是在主页中我们向访问者展示一些课程 例如 gt math gt geography gt chemistry 用户在其中选择 1 网站内容会根据用户的选择
  • Opencart 的 $this->config->get('module_var_name')

    我正在尝试自定义 Opencart 支付模块 我看到很多地方都使用了配置信息 但我找不到任何创建正在使用的变量的内容 我知道在管理页面中 如果我选择 paypal 标准 我可以设置所有 配置 信息 但我找不到强调它的 模型 是否有模型 我希
  • 无法显示由 Fine-uploader 上传到 Amazon s3 的图像

    我现在尝试设置fineuploader s3以显示在aws服务器上成功上传的文件的图像 如示例页面上所做的那样 http fineuploader com s3 demo http fineuploader com s3 demo 我 仍然
  • Laravel 上传前如何压缩图像?

    我正在制作一个图片库网站 用户可以在其中上传任何图像 它们将显示在前端 我需要在不影响图像质量的情况下压缩图像 以减小图像大小 以便页面加载速度不会影响那么大 我使用以下代码来上传图像 rules array file gt require
  • 无法在 PHPUnit 中使用数据提供程序运行单个测试

    使用命令行运行测试时遇到问题 如果我像这样运行 phpunit phpunit no configuration filter testAdd DataTest DataProviderTest php 效果很好 但是我们使用正则表达式来准
  • 我应该使用排队系统来处理付款吗?

    我在用着Slim https www slimframework com和这个结合Stripe 的 PHP 库 https stripe com docs api php在我的应用程序中处理付款 一切都很好 但是直到最近 我在我的系统中发现
  • 如何检查一个值是否已经存在以避免重复?

    我有一个 URL 表 但我不想要任何重复的 URL 如何使用 PHP MySQL 检查给定 URL 是否已在表中 如果您不想重复 可以执行以下操作 添加唯一性约束 use REPLACE http dev mysql com doc ref
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • phpstorm xdebug 与 symfony2 项目

    我正在尝试使用 xdebug 和 phpstorm 调试 symfony2 应用程序 我的本地开发环境是Ubuntu 14 04 with apache2 Xdebug版本是2 2 7 我在另一个 php 不是 symfony2 项目上使用
  • 连接 3 三张表

    我有这个图表应该可以解释我的情况 我需要一些关于连接 3 个表的帮助 我不知道如何做这种事情 因此 我可以通过执行以下操作来经历一段检索记录的 while 循环 img src alt Album AlbumID 使用内部联接 http w
  • 使用 html5 分块上传文件

    我正在尝试使用 html5 的文件 API 分块上传文件 然后在服务器端用 php 重新组装它 我正在上传视频 但是当我在服务器端合并文件时 大小增加了 并且它变成了无效文件 请注意 以下 html5 代码仅适用于 chrome 浏览器 在
  • 在 PHP 命令行上显示完整的堆栈跟踪

    Problem 我的 PHP 堆栈跟踪缩写为 Stack trace 0 www html table app create php 128 SoapClient gt call call Array 1 www html table ap

随机推荐

  • 为 bash 脚本创建应答文件

    我想为别人的 bash 脚本创建一个应答文件 当您运行 bash 脚本时 第一次安装该软件时 系统会询问您 5 个问题 我用的是yes script命令并且有效 它会自动应答yes对所有问题 不过我还是想回答一下no对于最后一个问题 有办法
  • 如何在 R 中创建 for 循环来进行这种特殊的计算

    我无法弄清楚这种 显然 简单的操作 给定这两个不同的数据框df A nrow 10 ncol 3 和df B n行 3 n列 3 df A df B col1 col2 col3 col1 col2 col3 1 2 4 1 4 5 3 5
  • JavaScript 中二维数组的 forEach() 和 Apply() 方法

    我有一个数组 其元素也是数组 每个数组包含三个元素 我想打电话给function calcMe a b c 对于我的主数组的每个元素使用forEach 方法 但我真的很困惑 不知道如何让它发挥作用 arr 1 5 4 8 5 4 3 4 5
  • Twitter API:如何知道使用哪个应用程序来关注

    在电子邮件通知中我们可以看到类似的内容
  • 如何在 Flex 中对 PHP 字符串使用换行符

    这是我的 MXML
  • 标记对话(或采访)的最语义方式?

    我试图找出最语义化的方式来标记这样的东西 John blah blah Paul blah blah George blah blah Ringo blah blah or John blah blah Paul blah blah Geo
  • 致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足错误

    我运行时收到此错误ng 构建 prod 92 块资产优化 4136 0155D210 443646 ms 标记 扫描 703 5 770 3 gt 703 6 759 8 MB 2162 2 0 0 ms 自标记开始以来 0 0 ms 0
  • JavaFX ProgressBar:如何添加动画?

    我创建了一个进度条并更改了进度条颜色 是否可以像 bootstrap 动画进度条一样向进度条添加动画 这是示例 链接在这里 http getbootstrap com components progress animated 实际上 我找到
  • 无法使用 Node npm 安装任何包

    我正在尝试通过 npm 安装一些节点包 但它不会安装 我已经尝试安装 卸载 更新节点 但似乎没有任何效果 我正在使用 ubuntu 12 04 以下是我尝试安装软件包的方式 npm install underscore npm http G
  • 使用 OpenCV 进行车牌识别

    我有一个项目 需要使用 OpenCV 识别汽车的车牌 我想加载数字或字母的图像 让 OpenCV 识别它并将其打印到控制台 有一个函数可以做到这一点吗 如果没有 我该怎么办 Note 我正在研究灰度级 请帮忙 我必须在一周后完成 谢谢你的快
  • ‘+= new EventHandler’和‘-= new EventHandler(anEvent)’之间的区别

    我看到一些代码使用 新的事件处理程序 anEvent 你能告诉我有什么不同吗 新的事件处理程序 Thanks 一个将委托添加到订阅者集合中 另一个将其删除 例如 如果您之前订阅了某个事件 但您希望在关闭表单时删除引用 则可以使用 版本 您将
  • 如何导出从 HTML DOM 解析器检索到的所有图像?

    我想要 使用从我的网站获取所有图像PHP 简单 HTML DOM 解析器 http simplehtmldom sourceforge net 并将它们全部导出到我的桌面ALL立刻 Not右键单击保存或屏幕截图 OPTIONAL 保存所有h
  • 如何在不实际调整大小的情况下触发 Control.Resize 事件?

    我不会对控件进行子类化 尝试通过触发事件Control Size Control Size失败 因为即使新大小实际上不同 它也不会触发 如果您要子类化Control 你可以打电话OnResize直接 或者将其暴露在 API 上 public
  • 如果您要使用的库尚不支持 Carthage 该怎么办

    我正在评估 Carthage 是否适合我的项目 我想找到答案的问题之一是当我想要使用的库 框架不支持 Carthage 时该怎么办然而 你们中有人曾经遇到过这个问题并找到了解决方案吗 Thanks 迦太基需要的主要东西是一个框架 并且该框架
  • 发送 WCF 消息在负载下延迟

    当从自托管 WCF 服务向许多客户端 大约 10 个左右 发送消息时 有时消息的延迟时间比我预期的要长得多 发送到本地网络上的客户端需要几秒钟 有谁知道为什么会这样以及如何解决它 一些背景 该应用程序是股票行情式服务 它从第三方服务器接收消
  • 使用BindingSource很慢?

    我有一个 C Windows 窗体项目 其中的窗体包含 2 个列表框和一个按钮 在 FormLoad 上 左侧列表框填充了一个列表 约 1800 个项目 其中包含有关证券的信息 ID 和名称 当用户单击按钮时 所有证券都会从左侧列表框移至右
  • Pandas ImportError:绘图需要 matplotlib

    Pandas 无法识别已安装的 matplotlib 库 这是代码 import pandas as pd import numpy as np import matplotlib pyplot as plt matplotlib inli
  • 是否可以使用 numpy 中可用的函数将二维数组修补为子数组数组?

    是否可以使用 np reshape 和 np split 函数将二维数组修补为子数组数组 import numpy as np data np arange 24 reshape 4 6 print data 0 1 2 3 4 5 6 7
  • R 中矩阵的逆

    我想知道你推荐的计算矩阵逆的方法是什么 我找到的方法似乎并不令人满意 例如 gt c rbind c 1 1 4 c 1 4 1 gt c 1 2 1 1 00 0 25 2 0 25 1 00 gt inv c Error could n
  • 条件与 eval {php} [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 然后我得到