我正在尝试使用一个文档很少的 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/