为了遵循新的 cookie 法规,我们需要向客户网站添加一个 JS 插件。然而,事实证明是困难的:带有大量页面的纯 HTML。
是否有可能以任何方式、形式或形式说:
server request {
send a php file to inject into a html file sent from the server
}
或者有什么模糊的相似之处?
为了遵循新的 cookie 法规,我们需要向客户网站添加一个 JS 插件。然而,事实证明是困难的:带有大量页面的纯 HTML。
是否有可能以任何方式、形式或形式说:
server request {
send a php file to inject into a html file sent from the server
}
或者有什么模糊的相似之处?
我认为将自定义代码注入 HTML 文件而不修改它们的最简单方法是添加额外的处理层。它会稍微(可能不明显)减慢每个请求,但肯定会减少您的工作量。
假设您使用的是 Apache,请使用.htaccess
类似于以下的重写规则创建一个文件(未经测试)。
RewriteEngine On
RewriteRule \.html$ /injector.php
这将导致对 html 文件的每个请求都传递给injector.php
在此文件中,您可以看到最初使用$_SERVER['REQUEST_URI']
. 使用 a 从磁盘获取此文件DOMDocument
并使用内置方法找到要注入的区域(如果您想将 a<script>
放入<head>
您可能只需要getElementById
)。注入您的代码,并吐出修改后的文档。
仅供参考,法律完全允许使用操作所需的cookie ,这包括 PHP 会话 ID 之类的内容,以及用于存储与 cookie 使用相关的任何首选项的 cookie。我再说一遍,可以使用 cookie 来存储用户不想使用 cookie 的偏好。
在您的injector.php
系统中,您可以检测到此类偏好 cookie 的存在,并根据您的需要决定不注入您的 javascript。
您还可以在运行 jquery 插件的地方使用 js 和包装 php 文件,然后从文件中提取 html 页面并将它们反馈回正文:
$(body).empty().html(body-html-from-static-html-file);
不管你怎么做,它都会很老套!
您将无法将 php 注入纯 html。但是,您可以用另一种方式来做...编写一个包装您的html并修改它的php脚本...返回您想要的html...
您可以使用 auto_prepend_file 和 auto_append_file php ini 指令,但必须将 php 设置为解析 .html 文件才能处理 .html 文件。使用输出缓冲,您可以捕获内容,然后修改 html。使用 auto_prepend_file php ini 指令,引用一个调用函数 ob_start() 的 .php 文件;开始捕捉输出。简单地:
<?php ob_start(); ?>
然后你可以用 auto_append_file php ini 指令引用一个文件来修改输出。要获得输出,您将使用 ob_get_contents(); 像这样:
<?php $output = ob_get_contents(); ?>
在 php 中使用一些字符串函数,您可以随意修改存储在 $output 中的 html。然后,当您准备好发送 $output 时,在您附加的同一个文件中使用:
<?php ob_end_clean(); echo $output; ?>
我的建议:使用.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([^.]+).html$ /index.php?file=$1 [QSA,L]
</IfModule>
并创建index.php
- 假设您在每个文件中都有。
<?php
if(file_exists($_GET['file'].'.html')){
$file = file_get_contents($_GET['file'].'.html');
$plugin = "<script> (function(){ /* your script */ }); </script>";
echo str_replace('</body>', $plugin."</body>", $file);
} else {
echo "not found";
}
?>