解密后无法读取变量和其他功能

时间:2019-02-07 06:23:58

标签: php encryption

我正在开发一个简单的加密应用程序,该应用程序可以使用此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);

            }
        }



    }
?>

1 个答案:

答案 0 :(得分:1)

解密后,解密后的代码以字符串的形式位于$token变量中。不是PHP代码,而是STRING。

因此,您需要将$token内容写入一个临时文件,并需要该文件才能像PHP代码那样访问它。

希望您能理解

此外,您可以尝试使用eval($token)代替echo $token。这会将字符串评估为PHP代码。但是,这是非常不好的做法。