使用指南
直接上传文件即可使用本加密,但您必须注意:
- 本加密仅支持UTF-8编码的文件,不支持GBK等其他编码。
- 本加密仅对函数进行加密,不加密函数外部代码。因此,如果你需要保护外围代码,请将其包裹成一个函数。另外,本加密不会对函数名、类名和命名空间进行任何修改。
<?php
function a () { // 此函数将被加密
return 123;
}
class A {
public function a () { // 此方法也会被加密
echo 233;
}
}
// 以下代码只会被压缩,不会被加密
$a = 123456;
a();
- 如果您在代码里使用了
$$a
等动态语法,本加密将不会删除您的变量名,请您尽量避免使用这一类语法。 - Z-Blog应用中心的开发者可免费测试加密效果,但不可将加密后的文件上传到应用中心。具体请参考“Z-Blog 应用中心自动加密说明”一节。
- 尽管我们做了大量的测试,以保证加密后的代码能正常执行,但我们无法保证100%兼容。即,加密后的文件执行结果和未加密的可能存在差异,请您自己做好足够的测试。我们不承担任何责任,也不会退款。
- 您拥有被加密后的PHP代码的所有权,并独立承担与该PHP代码有关的相关法律义务。我们保证加密后的代码不存在由我们主动插入的恶意代码,并且不对经过加密后的代码的行为负责。
- 通过免费试用上传的代码、加密失败的代码,将会被我们保留30日以便提升加密服务的可靠性,并保证不将代码泄漏给任何第三方。付费加密代码一旦加密成功便会自动被永久删除。但无论如何,我们至多只保留加密前和加密后的代码30日,超过30日的代码将会被永久删除。
高级用法
如果只需要加密部分函数,直接在那一部分函数头部加入注释@Z5Encrypt
即可,程序将不会处理你的其他函数。示例:
<?php
/**
* @Z5Encrypt
*/
function a()
{
$j = 1;
while ($j <= 9) {
$i = 1;
while ($i <= $j) {
echo "{$i}x{$j}=" . ($i * $j) . " ";
$i++;
}
echo "\n";
$j++;
}
}
function b () { // 这个函数将原封不动
try {
echo 'No don\'t encrypt me';
} catch (Exception $e) {
echo 'look you dont support it';
}
}
如果你认为整个文件都需要被加密,只有部分函数可以不被加密,请使用@Z5NotEncrypt
注释:
function f () { // 此函数将被加密
echo "Hello World\n";
}
/**
* @Z5NotEncrypt
*/
function b () { // 此函数不会被加密
try {
throw new Exception('No don\'t encrypt me');
} catch (Exception $e) {
echo 'look you dont support it';
}
}
如果你在开发一个Z-Blog应用,Z-Blog应用中心默认不加密。如果你认为你的某个文件整个都需要被加密,请在文件头部加入@Z5EncryptEntire
注释。
/**
* @Z5EncryptEntire
*/
function f () {
echo "Hello World\n";
}
function b () {
try {
throw new Exception('No don\'t encrypt me');
} catch (Exception $e) {
echo 'look you dont support it';
}
}
Z-Blog 应用中心自动加密说明
- 上传到应用中心的代码必须为原始代码,不能被任何加密程序加密。
- 您需要手动在应用中心后台,在需要开启加密的应用的详情页面,开启“自动加密”功能,才会启动自动加密。
- 用户的每次下载,重构建系统都会处理您应用内的所有PHP文件。系统默认不加密任何文件,需要您在您的PHP代码添加注释。系统识别到这些特殊注释时,会自动加密这些文件。具体如下:
- 当你的PHP内部包含
@Z5Encrypt
时,系统将自动加密带该注释的函数。可参见“高级语法”。 - 当你的PHP内部包含
@Z5EncryptEntire
时,系统将自动加密包含该注释的整个文件。你可以使用@Z5NotEncrypt
指定哪些函数不需要被加密。可参见“高级语法”。 - 如果不带任何注释,则不会自动加密该文件。