php - php中的 `implode` on `$params`通常意味着什么?

标签 php

我正在尝试使用一个文档很少的 API。我唯一的提示是 php.ini 的“伪代码”示例。我不懂 php,似乎无法弄清楚它们在这里的含义。

$codice_sha1 = sha1(implode(‘,’, $params) . ‘,’ . $secret);
$codice = base64_encode($key . ‘:’ . $codice_sha1);

imode 似乎与 JavaScript 的 join 类似,但通常参数是键值对。所以我真的不明白这是如何运作的。任何了解习语的 php 忍者都知道这意味着什么吗?

这里是完整的 API 文档 https://www.docebo.com/lms-docebo-api-third-party-integration/#onlinedoc

问题不是“什么是内爆”,而是“在这种情况下它通常意味着什么”

最佳答案

基本上我的看法如下。在网络上,您可以通过两种方式将参数发送到另一个站点:GET 和 POST。无论哪种方式,参数都将是字符串,而不是数组或任何数据类型。这就是 HTTP 的工作原理。

好的。所以我正在写一个api。我希望 sha1 e̶n̶c̶r̶y̶p̶t̶e̶d̶ 中的参数经过哈希处理。我该怎么做?我可以告诉我的客户发送它:

$requestUrl = "example.com/api?key1=" . sha1($value1) . "&key2=" . sha1($value2); 

或者

$params = array("key1" => "value1", "key2" => "value2");
$requestUrl = "example.com/api?params=" .  base64_encode(sha1(implode(',', $params)));

如果参数列表很长,则第二个更有意义。

此外,如果您不希望干扰者尝试单独解密每个参数,我认为这比一起解密它们更容易弄清楚,您可以选择这种方法。

Base64 编码不必担心像 & 这样的字符,这些字符可能会破坏 GET 请求上的查询字符串。

基本上,它是由 API 创建者决定的。这不是使用 API 的开发人员的选择。

编辑:当我忘记 sha1() 只是一种哈希算法而不是可逆加密时,我最初的想法更有意义。也许他们仍然可以通过某种方式完成这项工作,但它很复杂,而且是一个非常糟糕的主意。

关于php - php中的 `implode` on `$params`通常意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323782/

相关文章:

javascript - 具有表格生成功能的任何标记语言的编辑器

php - Codeigniter - 从数据库获取数据并在模型中进行比较

php - 删除不在数组中的数据库条目

php - 如果最近插入了日期,如何恢复正确的日期

PHP Mysqli 接连触发查询

javascript - 从浏览器 URL 中删除查询字符串而不重新加载页面

php - php 标志 -d 是什么意思?

php - 在 php 中合并这两个数组

php - 如何清除 php 链接中的参数?

php - (Symfony 4) 无法访问 twig 中的常量数组元素