在php中传递base64编码的数据
我有一个页面,该页面通过GET接收base64编码的数据,它在隐藏的输入中打印数据,并通过get传递到另一个页面.
I have a page that receive via GET a base64 encoded data, it print data in an input hidden and it pass via get to another page.
问题是这样的:当我通过
The problem is this: when i pass
"Peuq/0X4XhFV+XNa8T06qFrP8lRadORUQBGJ1w6D4m33Jaqx/skKDEJIxjldBrcklboL/uB4C65cjz3BHMPmd3moEJ4GTK5k5Jwf9Ny4BA467bwgeaHJuOS+CjwFlIOzrhSWHTMVl4zWVvwMauuFAjhuMjOOj0/X5L12IcwGTTqLgHo"
通过GET变为
"Peuq/0X4XhFV XNa8T06qFrP8lRadORUQBGJ1w6D4m33Jaqx/skKDEJIxjldBrcklboL/uB4C65cjz3BHMPmd3moEJ4GTK5k5Jwf9Ny4BA467bwgeaHJuOS CjwFlIOzrhSWHTMVl4zWVvwMauuFAjhuMjOOj0/X5L12IcwGTTqLgHo"
...因此openssl无法正常工作.我该怎么解决?
...so openssl can't work. How can I solve it?
URL中的某些字符很特殊,例如+
代表空格.要通过URL发送任意数据,您需要 URL转义,以避免数据中包含的字符被识别为特殊字符".由于要将数据放入HTML中,因此 还需要对其进行HTML转义,以避免将URL编码数据中的字符识别为特殊的HTML字符.因此:
Certain characters in the URL are special, like +
which stands for a space. To send arbitrary data via the URL, you need to URL escape it to avoid characters contained in the data being recognized as "special characters". Since you're putting the data into HTML, you also need to HTML-escape it to avoid characters in the URL-encoded data being recognized as special HTML characters. Hence:
$data = /* some data */;
$base64Data = base64_encode($data);
$urlData = urlencode($base64Data);
$htmlData = htmlspecialchars($urlData);
printf('<input type="hidden" value="%s" name="pass-it-on">', $htmlData);