尝试嵌入使用 的第 3 方 Javascript,我怎样才能阻止 php 解析“
发布于 2024-12-05 20:14:13 字数 292 浏览 0 评论 0 原文

我正在一个疯狂混乱的 CMS 系统中工作,其中 php、javascript 和 html 都在模板内。我试图从第三方站点插入代码以实现集成功能,但它们具有以下形式的 JavaScript:

<script type="lib">
Hello, <?js= firstName ?>!
</script>

PHP 解释器看到并执行其操作,因此整个模板都会出错。

有人知道如何包装这个代码块以防止 PHP 解释器关心它吗?

提前致谢!

I'm working in an insane mess of a CMS system where php, javascript, and html are all within templates. I'm trying to drop in code from a third party site for integration functionality, but they have javascript of the form:

<script type="lib">
Hello, <?js= firstName ?>!
</script>

The PHP interpreter see's and does its thing, and thus the entire template errors out.

Anyone know how to perhaps wrap this code block to prevent PHP interpreter from caring about it?

Thanks in advance!

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

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

发布评论

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

评论(4

装迷糊 2024-12-12 20:14:13

如果禁用 PHP 短标签不是一个选项,您可以简单地使用 PHP 输出所述字符串,这样您会得到如下所示的结果:

Hello, <?php print "<?js= firstName ?>"; ?>!

If disabling PHP Short-tags isn't an option, you could simply output said string using PHP, so you'd get something like this:

Hello, <?php print "<?js= firstName ?>"; ?>!
罗罗贝儿 2024-12-12 20:14:13

禁用 PHP 短标签,您不应该有问题。

Disable PHP Short-Tags and you should not have an issue.

美人骨 2024-12-12 20:14:13

在启用了 短开放标记 的 PHP 文档中,PHP 解释器将看到 标记的 部分,并尝试将其解析为 PHP,从而导致以下错误:

Parse error: syntax error, unexpected T_STRING in ... on line ...

To解决问题,禁用短格式 () PHP 的开放标记。

现在,这将禁止在 PHP 脚本中使用 。如果您的网站仅使用 标签,那么这样做是安全的;如果它也使用 那么这样做是不安全的,因为您的脚本将不再按预期运行。

您的虚拟主机或系统管理员可以通过两种方式获得 将 Apache 配置为使用 PHP

  • Apache 将 PHP 解释器作为 Apache 模块加载
  • Apache 将 PHP 解释器作为 CGI 二进制文件运行

下面您将使用哪种解决方案取决于 Apache 如何在您的系统中运行 PHP环境*。

在 Apache 的 .htaccess 文件中,放置以下内容:

# PHP as an Apache Module
php_value short_open_tag 0

在全局或本地 php.ini 文件中,放置以下内容:

# PHP as a CGI Wrapper
short_open_tag = Off

无论哪种情况,您都需要重新启动 Apache进行任何配置更改后,以确保您的新设置得到应用。


注意:如果您的服务器配置为将 PHP 作为 Apache 模块运行,那么您可以选择使用 php.ini 或 Apache .htaccess 文件。但是,如果您的服务器将 PHP 作为 CGI 包装器运行,那么您只能选择在本地使用 php.ini 文件来更改设置,因为 Apache 不再完全控制 PHP。

当 PHP 作为 CGI 包装器运行时,将 PHP 设置放入 .htaccess 文件中将导致服务器抛出错误。

In a PHP document with short open tags enabled, the PHP interpreter will see the <? part of the <?js tag and will try to parse it as PHP, resulting in this error:

Parse error: syntax error, unexpected T_STRING in ... on line ...

To fix the problem, disable the short form (<? ?>) of PHP's open tag.

This will now disable the use of <? and <?= in your PHP scripts. If your site only uses <?php tags then this is safe to do; if it uses <? as well then it is not safe to do as your scripts will no longer function as expected.

There are two ways your Web Host or System Administration will have configured Apache to use PHP:

  • Apache loads the PHP interpreter as an Apache module
  • Apache runs the PHP interpreter as a CGI binary

Which solution you will use below will depend on how Apache is running PHP in your environment*.

In Apache's .htaccess file, place the following:

# PHP as an Apache Module
php_value short_open_tag 0

In the global or a local php.ini file, place the following:

# PHP as a CGI Wrapper
short_open_tag = Off

In either case, you'll want to restart Apache after making any configuration changes to ensure your new settings get picked up.


Note: If your server is configured to run PHP as an Apache module, then you will have the choice of using either a php.ini or Apache .htaccess files. However, if your server runs PHP as a CGI wrapper then you will only have the choice of using php.ini files locally to change settings, as Apache is no longer in complete control of PHP.

When PHP is running as a CGI wrapper, putting PHP settings in to an .htaccess file will cause the server throw an error.

度的依靠╰つ 2024-12-12 20:14:13

你碰巧正在运行 apache 吗?这些文件与 PHP 分开存在吗?如果是这样,您可以使用 .htaccess 文件(或 httpd.conf,如果您有权修改它)来执行以下操作:

<FilesMatch "\.template_file_ext">
    php_flag engine off
</FilesMatch>

Do you happen to be running apache? Do these files live separate from the PHP? If so, you could use an .htaccess file (or httpd.conf if you have the rights to modify it) to do something like this:

<FilesMatch "\.template_file_ext">
    php_flag engine off
</FilesMatch>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文