用Base64编码var_dump

时间:2013-07-20 01:47:51

标签: php

我正在做一个实验,现在,我正在尝试这样做:

<script type="text/javascript">
document.write(atob("<?php var_dump(base64_encode(include("index.php")));?>"));
</script>
好吧,问题是输出没有base64编码。如果我尝试:

<script type="text/javascript">
    document.write(atob("<?php base64_encode(var_dump(include("index.php")));?>"));
    </script>

如果我尝试的话,它会回报我同样的事情:

<script type="text/javascript">
        document.write(atob("<?php echo base64_encode(var_dump(include("index.php")));?>"));
        </script>

也一样......

你能帮助我吗?非常感谢你

2 个答案:

答案 0 :(得分:2)

您希望使用var_export而不是var_dump,因为var_dump只会转储变量并且不会返回任何内容。请参阅两者的文档:

var_dump - http://www.php.net/manual/en/function.var-dump.php

var_export - http://www.php.net/manual/en/function.var-export.php

您的报价也不对,请尝试以下方法:

<script type="text/javascript">
    document.write(atob("<?php base64_encode(var_export(include('index.php'), true));?>"));
</script>

答案 1 :(得分:2)

您正在编码include的返回值。不是包含脚本的输出。使用ob_start()和朋友的输出缓冲区来捕获输出。

介意:这样做看起来像一个糟糕的架构......应该是一个函数,将包含文件的结果作为字符串返回,没有任何麻烦。