【发布时间】:2019-07-25 12:40:11
【问题描述】:
我有一个简单的脚本,用户单击一个按钮,代码将执行一个 shell 命令,该命令从 csv 中剪切 base64 加密数据并将其放置在 textarea 中。然后,我只需将该值分配给一个变量并回显解码结果。然而,我的结果是什么。如果我回显 $encoded_data 我确实会看到编码字符串。
我的数据在 textarea 中是这样排列的:
ZGF2aWRAZW1haWwuY29t
ZGF2aWRAZW1haWwuY29t
ZGF2aWRAZW1haWwuY29t
ZGF2aWRAZW1haWwuY29t
...
有数百行编码字符串。
如果我传递一个字符串,解码器就会工作。但是,对于 textarea 内的文本,它根本不返回任何内容。我假设传递的字符串数量会导致内存问题。我还注意到,如果我尝试传递多个字符串,我可能会因为换行符而得到奇怪的字符。我怎样才能避免这种情况?
<form name="decode" action="" method="post" enctype="multipart/form-data">
<textarea id="decode_field" name="decode_field" rows="10" cols="50" autofocus><?
if (isset($_POST['decode_btn'])) {
// Cut base64 data from csv file. Selected data is in col 2 of each row.
$encoded_data = shell_exec("cut -d, -f2 test.csv");
// Display data to user.
echo base64_decode($encoded_data);
}
?></textarea>
<input type="submit" name="decode_btn" value="Get Decoded Data" />
</form>
输出应该是逐行解码为常规字符串的base64字符串。
【问题讨论】:
-
你试过用换行符分割编码数据并通过base64_decode循环每一行吗?该函数似乎无法在一次调用中处理多个 base64 字符串