使用$ _GET

时间:2018-08-28 00:30:51

标签: php foreach base64

我有问题,当URL中的POST信息没有编码时,一切都很好,并且我可以将foreach用于所有信息,因为我将其作为数组获取

但是当使用GET进行解码时,信息会从数组转换为字符串,并且无法再使用foreach了(我尝试再次将其编码为json,但失败)。

我在这样的URL中具有base64值

http://www.test.com/index.php?info=dXNlcm5hbWU9PmJyb29rcwpjb2xvcj0+Ymx1ZQp1cmw9Pmh0dHA6Ly93d3cudGVzdC5jb20vNDE0Mg==

我使用$info = base64_decode($_GET['info']);进行获取和解码

我想像这样echo <li>$info_key is $info_value</li>

  

注意:解码时,您会看到我在键和值之间使用=>,并对每个数组使用返回行,也许我可以使用PHP_EOL进行拆分或收集

     

另一个注意事项:我不知道将从url获得多少值,因为我需要使用foreach来循环所有收集的值

谢谢stackoverflow社区✌

1 个答案:

答案 0 :(得分:1)

解码后的字符串如下所示:

username=>brooks
color=>blue
url=>http://www.test.com/4142

foreach用于循环遍历可迭代对象,因此您需要将其解析为数组。

<?php
$str = base64_decode('dXNlcm5hbWU9PmJyb29rcwpjb2xvcj0+Ymx1ZQp1cmw9Pmh0dHA6Ly93d3cudGVzdC5jb20vNDE0Mg==');

$lines = explode(PHP_EOL, $str);

foreach ($lines as $line) {
    $line = explode('=>', $line);
    echo '<li>'.$line[0].' is '.$line[1].'</li>'.PHP_EOL;
}

https://3v4l.org/TodEB

<li>username is brooks</li>
<li>color is blue</li>
<li>url is http://www.test.com/4142</li>

尽管您应该避免执行任何操作并将它们作为参数传递。