PHP 的 PHP 评估问题 + HTML代码

发布于 2024-08-26 19:24:24 字数 311 浏览 7 评论 0原文

我已将 PHP 和 HTML 代码存储在数据库表中。当我获取这些数据时,我需要回显 HTML 并处理 PHP。我想我可以使用 eval() 来实现这一点,如果我这样做 eval("echo 'dlsj'; ?> EVALED "); 我得到“ dlsjEVALED”打印出来。

问题是,当我运行较长的脚本时,出现致命错误。诸如此类的事情:

解析错误:语法错误,意外的“<”在 /home/content.php(18) 中:第 1 行 eval() 代码

I've got PHP and HTML code stored in a database table. When I get this data, I need to echo the HTML and process the PHP. I thought I could use eval() for this, which works, if I do this eval("echo 'dlsj'; ?> EVALED "); I get "dlsjEVALED" printed out.

The problem is, I get a fatal error when I run longer scripts. Things like:

Parse error: syntax error, unexpected '<' in /home/content.php(18) : eval()'d code on line 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

只想待在家 2024-09-02 19:24:24

最好的建议 - 永远不要将 php 和 html 代码存储在数据库中。并像躲避瘟疫一样避免 eval() 。

我无法真正判断您的代码有什么问题,因为您没有提供足够的信息。但即使我确实有一些建议,我也不认为我可以凭良心提出。

您应该重新设计整个应用程序,以便不需要将此类内容存储在数据库中。我无法想象为什么有必要。

Best advice - never store php and html code in your database. And avoid eval() like the plague.

I can't really tell what's wrong with your code, as you haven't provided enough information. But even if I did have some advice, I don't think I could give it in good conscience.

You should redesign your whole application so that it doesn't require storing such things in the database. I can't imagine why it would be necessary.

迷鸟归林 2024-09-02 19:24:24

刚刚好der…………

eval('?>' . $content .'<?php');

just right der...........

eval('?>' . $content .'<?php');
独自←快乐 2024-09-02 19:24:24

您需要在 EVALED 后重新打开 php 模式。 显然你必须使用 < ? 而不是完整的

通常应避免 eval。但规则是用来打破的。有一个线程 When is eval bad in php? 给出了一些不那么教条的内容建议。

根据您想要执行的操作,可能适合使用您获取的模板文件,其中在获取模板之前将不同的文本存储在本地变量中。

至于存储要在数据库中执行的代码......这确实发生在像 Drupal 这样的一些框架中,以提供方便的可扩展性,但是 Drupal 已经彻底清除了安全漏洞。

另外,如果您正在编写自修改代码,那么您需要使用 eval()。不确定是否有人在 php 中这样做过,但这肯定会很有趣。

You need to re-open php mode after the EVALED. Apparently you have to do this with <? rather than the full <?php.

As a rule eval is to be avoided. But rules are made to be broken. There's a thread at When is eval evil in php? that gives some less dogmatic advice.

Depending on what you want to do, it might be suitable to use a template file that you source, with text that will vary stored in a local variable prior to sourcing the template.

As for storing code to be executed in the DB... this does happen in some frameworks like Drupal to provide convenient extensibility, but then Drupal is pretty thoroughly scoured for security weaknesses.

Also if you're writing self-modifying code then you need to use eval(). Not sure if anyone has done that in php but it would certainly be interesting.

扮仙女 2024-09-02 19:24:24

我猜您正在尝试 eval() 包含开始 标记的内容。这导致了手头的错误。

I would guess that you're trying to eval() something that contains an opening <?php tag. And that leads to the error at hand.

泡沫很甜 2024-09-02 19:24:24
$contents = htmlentities($contents);
echo html_entity_decode(eval($contents));
$contents = htmlentities($contents);
echo html_entity_decode(eval($contents));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文