如何使用 base64_encode 用单引号和双引号对密码进行编码
How to encode password with single and double quotes using base64_encode
我正在使用 Postman 调用 API,它要求授权类型为 Basic Auth,
以下是用于演示目的的修改后的凭证,
现在在邮递员生成代码片段中,它显示 Header 为
'Authorization' => 'Basic ZHBjMzpXRWMzXCciSw==',
但是当我使用我的代码执行此操作时,base64 编码的字符串不同,因此导致未经授权的用户。
$username="dpc3";
$psd = 'WEc3\'"K'; // Added one \ before single quote
$credentials = base64_encode($username . ':' . $psd)
使用上面的代码 headers 是
'Authorization' => 'Basic ZHBjMzpXRWMzJyJL'
此编码字符串与 postman 中的不同。邮递员 API 正在工作,但它在代码中不起作用。也许我编码不正确。我在邮递员中添加了没有任何斜杠的密码。 WEc3'"K
非常感谢任何帮助。谢谢
解决方案 1
最简单的方法是像这样使用 stripslashes 函数:
$username = 'dpc3';
$psd = 'WEc3\'"K'; // Added one \ before single quote
$credentials = base64_encode($username . ':' . stripslashes($psd));
解决方案 2
或者您可以简单地将密码中的任何 \'
替换为单个 '
并将其传递给 base64_encode() 函数,如下所示:
$username = 'dpc3';
$psd = 'WEc3\'"K'; // Added one \ before single quote
$credentials = base64_encode($username . ':' . str_replace('\'', "'", $psd));
有关 str_replace() 的更多信息,请查看 this
如果你执行 base64_decode('ZHBjMzpXRWMzXCciSw==')
它会给你 dpc3:WEc3\'"K
这意味着反斜杠实际上是添加到密码中的。
因此正确的字符串将是:
$username="dpc3";
$psd = 'WEc3\\'"K'; // One backslash and one single quote - both escaped
$credentials = base64_encode($username . ':' . $psd); // ZHBjMzpXRWMzXCciSw==
我正在使用 Postman 调用 API,它要求授权类型为 Basic Auth, 以下是用于演示目的的修改后的凭证, 现在在邮递员生成代码片段中,它显示 Header 为
'Authorization' => 'Basic ZHBjMzpXRWMzXCciSw==',
但是当我使用我的代码执行此操作时,base64 编码的字符串不同,因此导致未经授权的用户。
$username="dpc3";
$psd = 'WEc3\'"K'; // Added one \ before single quote
$credentials = base64_encode($username . ':' . $psd)
使用上面的代码 headers 是
'Authorization' => 'Basic ZHBjMzpXRWMzJyJL'
此编码字符串与 postman 中的不同。邮递员 API 正在工作,但它在代码中不起作用。也许我编码不正确。我在邮递员中添加了没有任何斜杠的密码。 WEc3'"K
非常感谢任何帮助。谢谢
解决方案 1
最简单的方法是像这样使用 stripslashes 函数:
$username = 'dpc3';
$psd = 'WEc3\'"K'; // Added one \ before single quote
$credentials = base64_encode($username . ':' . stripslashes($psd));
解决方案 2
或者您可以简单地将密码中的任何 \'
替换为单个 '
并将其传递给 base64_encode() 函数,如下所示:
$username = 'dpc3';
$psd = 'WEc3\'"K'; // Added one \ before single quote
$credentials = base64_encode($username . ':' . str_replace('\'', "'", $psd));
有关 str_replace() 的更多信息,请查看 this
如果你执行 base64_decode('ZHBjMzpXRWMzXCciSw==')
它会给你 dpc3:WEc3\'"K
这意味着反斜杠实际上是添加到密码中的。
因此正确的字符串将是:
$username="dpc3";
$psd = 'WEc3\\'"K'; // One backslash and one single quote - both escaped
$credentials = base64_encode($username . ':' . $psd); // ZHBjMzpXRWMzXCciSw==