我正在开发一个简单的加密应用程序,该应用程序可以使用此class对文件夹中的php文件进行加密。我的问题是解密后,所有文件都无法像变量和函数那样工作。当我尝试回显变量时,它说未定义。
希望你能帮助我。
谢谢。
示例代码
<?php
require_once('func.php');
require_once('encryptionClass.php');
if(is_array($_FILES)){
$encrypted_dir = "encrypted_files/";
$saveFiles = browseDir($encrypted_dir);
foreach($saveFiles as $file){ // iterate files
if(is_file($encrypted_dir.$file))
unlink($encrypted_dir.$file); // delete file
}
foreach($_FILES['files']['name'] as $key => $value){
$file = explode(".", $_FILES['files']['name'][$key]);
$ext = array("php");
if(in_array($file[1], $ext)){
$file_name = $file[0].'.'.$file[1];
$source = $_FILES['files']['tmp_name'][$key];
$location = $encrypted_dir.$file_name;
$code = file_get_contents($source);
$encryption_key = 'CKXH2U9RPY3EFD70TLS1ZG4N8WQBOVI6AMJ5';
$cryptor = new Cryptor($encryption_key);
$crypted_token = $cryptor->encrypt($code);
$f = fopen($location, 'w');
// DATA BEING SAVE TO THE ENCRYPTED FILE
$data = '
<?php
require_once("../encryptionClass.php");
$encryption_key = "CKXH2U9RPY3EFD70TLS1ZG4N8WQBOVI6AMJ5";
$cryptor = new Cryptor($encryption_key);
$crypted_token = "'. $crypted_token .'";
$token = $cryptor->decrypt($crypted_token);
echo $token;
?>
<!-- trying to display the value of variable from $token -->
<p><?php echo $name; ?></p>
';
fwrite($f, $data);
fclose($f);
unset($code);
}
}
}
?>
答案 0 :(得分:1)
解密后,解密后的代码以字符串的形式位于$token
变量中。不是PHP代码,而是STRING。
因此,您需要将$token
内容写入一个临时文件,并需要该文件才能像PHP代码那样访问它。
希望您能理解
此外,您可以尝试使用eval($token)
代替echo $token
。这会将字符串评估为PHP代码。但是,这是非常不好的做法。