【问题标题】:Encode Base64 in JavaScript, send with GET, decode in PHP用 JavaScript 编码 Base64,用 GET 发送,用 PHP 解码
【发布时间】:2017-06-29 04:27:32
【问题描述】:

我认为这将是一个简单的 Google 搜索,但我的技术似乎没有我想象的那么普遍。

我如何在JavaScript中encode一个Base64字符串,以便安全地把它放在带有GET参数的线上(我的Base64字符串包含很多/+=, 和decode 在 PHP 中完全相同的字符串,以便将其存储在数据库中?

当我发布未编码的 Base64 字符串时,我的 PHP 脚本不接受它。

found a solution 用于在 JavaScript 中对 Base64 字符串进行编码和解码,但这对我来说意义不大。

【问题讨论】:

  • encodeBase64 字符串”是什么意思?将字符串转换为base64 表示?您能否将您在 Question 中尝试过的javascriptphp 包括在内?
  • 不,我的意思是,我怎样才能让它“URL安全”,因为它包含一些/+=
  • @JohnBrunner 查看我的回答,如果您需要更充实的示例,请告诉我。
  • 为什么不能使用POST请求? base64字符串是如何生成的?

标签: javascript php encoding get base64


【解决方案1】:

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

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

btoa example

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

然后在 PHP 中,检索请求后:

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

base64_decode docs

【讨论】:

  • nodejs 没有出现在 Question 的标签上?
  • 感谢您的回答,但我想我问错了问题。我已经有一个 Base64 字符串,我想通过 GET 将它发送到我的服务器。问题是,Base64 字符串包含很多 / 和 +,这对于 GET 是不安全的。如何通过 GET 安全发送?
  • @JohnBrunner 要通过 GET 请求安全地发送它,您必须在客户端对其进行 urlencode。请参阅我更新的答案(javascript)以了解如何执行此操作。干杯。
  • @JohnBrunner 我的答案是你想要的吗?
  • 要清楚,它应该在 php 中反转:echo base64_decode(urldecode($str));
【解决方案2】:

在 Javascript 中

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

在php中

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2015-07-14
    • 2012-01-07
    相关资源
    最近更新 更多