在php中传递base64编码的数据 [英] Passing base64-encoded data in php

查看:459
本文介绍了在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);

这篇关于在php中传递base64编码的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆