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

时间:2015-12-16 23:00:46

标签: php

我正在尝试使用最少文档的api。我唯一的提示是"伪代码"的PHP。我不知道php,似乎无法弄清楚它们的含义。

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

impode似乎与JavaScript join类似,但通常params是键值对。所以我真的不知道这是怎么回事。任何有成语知识的php忍者知道这意味着什么?

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

问题不在于"什么是内幕" ,但"在这种情况下通常意味着什么"

3 个答案:

答案 0 :(得分:1)

在您给出的代码示例中,int main(void) { char userInput; while (userInput != 'q') { cin >> userInput; switch (userInput) { case 'a': break; default: break; }// end switch }//end while return 0; }//end main 的目的是将所有单独的信息位连接成一个字符串。

要将其划分为单独的代码行,您可以相对清楚地看到正在发生的事情。

implode(',', $params) . ',' . $secret

然后,代码的目的是对字符串进行编码(可能是密码哈希,以便以后进行身份验证)

答案 1 :(得分:1)

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

确定。所以我正在写一个api。我希望参数sha1e̶n̶c̶r̶y̶p̶t̶e̶d̶散列。我该怎么办?我可以告诉我的客户发送它:

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

OR

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

如果有一长串参数,第二个更有意义。

另外,如果你不希望中间人分别尝试和解密每个参数,我认为这比解密它们更容易理解,你可能会选择这种方法。

Base64编码不得不担心像&这样的字符会破坏GET请求的查询字符串。

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

编辑:当我忘记sha1()只是一个哈希算法而不是可逆加密时,我最初的想法更有意义。可能有一种方法他们仍然可以使这项工作,但它的错综复杂和一个非常糟糕的想法。

答案 2 :(得分:0)

php中的Implode只需要一个数组并通过连接所有数组元素将它变成一个字符串,用指定的分隔符分隔。

所以implode('|', [1,2,3,4,5]);会产生字符串" 1 | 2 | 3 | 4 | 5"

一般 在哈希上使用,因为键丢失了,并且在多维数组上根本不起作用。我不明白你是如何得出结论$params不是一个正常的一维数组。