使用指南

直接上传文件即可使用本加密,但您必须注意:

  • 本加密仅支持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 指定哪些函数不需要被加密。可参见“高级语法”。
  • 如果不带任何注释,则不会自动加密该文件。