php - 防止创建应该用 PHP 创建的 HTML 元素 --- 用 PHP 本身

标签 php html css templates mediawiki

我使用 CMS MediaWiki,它包含许多功能,我想阻止一些功能在本应包含它们的所有网页中被解析。
一些这样的功能(例如次要的内置菜单链接)我可以用 CSS 或 JavaScript 来阻止,但有些则不能,这就是我的问题:

由于用户可以取消 CSS 和/或 JS,该用户最终可能会使用“阻止”功能。
我的问题的一个很好的实际例子是我希望阻止解析编辑摘要框 I found causing more harm than good在太多基于 MediaWiki 的社区中。

因为我不是 PHP 程序员而且我不想从头开始研究和编辑 MediaWiki CMS 的大量源代码(并为自动升级等设置异常(exception)),我更喜欢间接(“调整”)解决方案:

MediaWiki 有 LocalSettings.php 文件,您可以在其中运行自定义 PHP。
我希望运行一些 PHP 函数,根据某些标准(可能是 CSS 类),将阻止解析较早解析的元素,例如编辑摘要框。
如果这在当前版本的 PHP 中甚至是可能的,如果是的话,如何做到这一点?

最佳答案

不,不可能从不同的文件更改 HTML 代码,除非你有某种中间件可以将代码检索为纯文本,编辑它(例如使用 Regex)并将它传递给实际的 View ,这听起来几乎像 MVC 模式。如果这就是 MediaWiki 的工作方式(对此我深表怀疑),那么这就是您的方式。

为什么不起作用?这是因为 PHP 是一种后端语言。它无法与前端交互,因为 PHP 脚本/文件(包含您的 HTML)将在服务器(= 您的后端)执行,然后传递给浏览器。

想象成这样(非常非常简单):
你的文件.php
这是执行脚本之前服务器上文件的状态:

<div>
  <?php
    echo "<a>test</a>;
  ?>
</div>

脚本随后会在您的服务器上执行,导致:

<div>
  <a>test</a>
</div>

您的文件甚至还没有发送到浏览器,但现在会了。遗憾的是,您的文件已经执行,您将无法执行任何 PHP 函数。不,你不能在你的服务器上使用 CSS 和 JS。


由于您可能无法实现顶部所述的模式,所以还有最后的希望。我不熟悉 MediaWiki,但我想我听说他们在实际的 PHP 文件中生成页面。如果是这种情况,请执行以下操作:

<div>
  Yey, some nice features I want to keep!
</div>
<?php
/*
<div>
  Oh no! A feature I should hide!
</div>
?>
<div>
  Yey, some nice features I want to keep!
</div>

只需将其注释掉即可;)。如果这也不起作用,那么……好吧,那么就没有您想要的修复方法,更不用说简单的方法了。

关于php - 防止创建应该用 PHP 创建的 HTML 元素 --- 用 PHP 本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59000886/

相关文章:

php - htaccess 代码分解和一些解释

php - 命令不同步;你现在不能运行这个命令

html - 奇怪的黑边 :after css arrow in Firefox

html - 如何获取输入框内的筹码?

jquery - FadeIn() 破坏了 CSS 悬停功能

php - 如何将 ArrayIterator 一分为二?

PHP - rmdir(权限被拒绝)

scrolltop 上的 javascript 动画 div 高度 + 背景颜色

css - Firefox 将 Google Oswald 常规字体显示为粗体

css - 即使在强制文件名时,Wordpress 也会缓存 CSS