Laravel 的刀片模板文件不是真正的 PHP 代码,因此 ionCube Encoder 无法正确编码;但是,编码器还提供文件加密,这可能对您有所帮助,但它确实需要一些设置:
在 Laravel 中,修改读取 Blade 模板文件的模块,替换file_get_contents(<blade template files>)为ioncube_read_file(<blade template_files>).
在我的 Laravel 4 安装中,负责加载和编译 Blade 模板的文件似乎可以在vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php第 62 行中找到:$contents = $this->compileString($this->files->get($path));。
在这里,$this->files->get($path)“只是”一个file_get_contents($path)带有一些错误处理的函数 - 您可能会在bootstrap/compiled.php. 但是,您应该能够将行替换为BladeCompiler.php:
$contents = $this->compileString(ioncube_read_file($path));
Run Code Online (Sandbox Code Playgroud)
或(如果您使用了密码):
$passphrase = "<my passphrase>";
$contents = $this->compileString(ioncube_read_file($path, $is_encrypted, $passphrase));
Run Code Online (Sandbox Code Playgroud)
请注意,您可能希望确保密码在文件中是安全的。您可以在第 54 页的用户指南中找到有关这些功能的更多信息。
要开始ioncube_read_file工作,您需要对修改后的模块进行编码。此外,对应用程序的其余部分进行编码,但 Blade 模板文件除外。
加密(不是编码!)您的 Blade 模板文件,通常以 结尾.blade.php,并且 - 如果您使用密码短语 - 确保它与用于ioncube_read_file.
还请记住,这将从您的加密文件生成标准 PHP 文件,因为该文件被编译并作为纯文本写回缓存。如果你想改变它可能值得查看用户指南,p。54和覆盖/延伸适当的方法bootstrap/compiled.php,如get和put如果一个文件被加密,以检测,并且如果需要编写一个加密文件。
我还应该提到,因为这个问题经常在 ionCube HelpDesk 上被问到:尽管进行了所有编码和加密,HTML 和 JavaScript 代码仍将原始显示,供所有客户查看。我之所以提到这一点,是因为保护您的模板文件需要付出很多努力,在大多数情况下,模板文件确实主要由 HTML 代码组成。这确实让任何修改真的很难(如标志去除),但这样的事情可能也可以用一些自定义CSS来实现的。