在JavaScript中对Base64进行编码,使用GET方法发送,在PHP中进行解码。

7

本以为这是一个简单的谷歌搜索,但似乎我的技术不像我想象的那样普遍。

如何使用JavaScript对Base64字符串进行编码,以便将其安全地放在带有GET参数的网址中(我的Base64字符串包含许多斜杠、加号和等于号),并在PHP中解码完全相同的字符串,以便将其存储在数据库中?

当我未对Base64字符串进行编码时,我的PHP脚本无法接受它。

我在这里找到了一种使用JavaScript对Base64字符串进行编码和解码的方法,但对我来说没有意义。


Encode a Base64 string”是什么意思?将字符串转换为base64表示形式吗?你能否在问题中包含你尝试过的JavaScriptPHP代码? - guest271314
不,我的意思是,我该如何使它“URL安全”,因为它包含一些/+= - John Brunner
@JohnBrunner 看看我的回答,如果需要更详细的例子,请让我知道。 - matt
为什么不能使用 POST 请求?base64 字符串是如何生成的? - guest271314
2个回答

21

所以在 JavaScript 中(使用编码 URI 更新):

var myStr = "I am the string to encode";
var token = encodeURIComponent(window.btoa(myStr));

btoa示例

然后您应该能够将该base64编码的字符串添加到您的GET请求中。

然后在PHP中,当您检索到该请求时:

<?php
   $str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
   echo base64_decode(urldecode($str));
?>

base64_decode 文档


“nodejs”在问题的标签中没有出现? - guest271314
谢谢您的回答,但我认为我问错了问题。我已经得到了一个Base64字符串,并且我想通过GET将其发送到我的服务器。问题是,Base64字符串包含很多/和+,这对于GET来说不安全。我该如何通过GET安全地发送它? - John Brunner
@JohnBrunner 为了通过GET请求安全地发送它,你需要在客户端对它进行urlencode编码。请查看我的更新答案(javascript)以了解如何实现。干杯。 - matt
@JohnBrunner 我的回答符合你的期望吗? - matt
1
请明确一点,这应该在PHP中反转: echo base64_decode(urldecode($str)); - Rafał R

0

在Javascript中

var password ="xyz"
window.btoa(password)

在php中

$password = urldecode(base64_decode($_POST['password']));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接