我没有PHP经验,因此必须在以下代码中修改密码:
$body=array(
'userInfo' => array(
'userName' => $username,
'password' => $password,
'applicationKey' => $appKey,
),
);
变量$body
在应用程序逻辑和数组记录中均使用:
$this->logger->debug("REQUEST: URL[{$this->config->endpoint}] BODY: " . json_encode($body));
但是我不应该记录密码。我想编辑它。
我知道我可以将数组复制并粘贴到新变量$body_with_password_hidden
中,但是我想学习一些PHP习惯用法,更不用说使代码库尽可能紧凑。
有什么优雅的方法可以做到这一点?用一种我更舒服的语言,我会克隆字典并覆盖敏感值。我将如何在PHP中做到这一点?
更多信息
当前的日志语句:
[2018-04-10T18:23:11+00:00] [DEBUG] REQUEST: URL[http://myservice.com/myendpoint/login] BODY: {"userInfo":{"userName":"Administrator","password":"Administrator","applicationKey":"abc123"}} -
所需的日志语句:
[2018-04-10T18:23:11+00:00] [DEBUG] REQUEST: URL[http://myservice.com/myendpoint/login] BODY: {"userInfo":{"userName":"Administrator","password":"********","applicationKey":"abc123"}} -
参考方案
您可以创建一个与数据结构匹配的模板,并使用所需的编辑符号作为相应密钥的值。
$redacted = ['userInfo' => ['password' => '********']];
然后在记录时使用array_replace_recursive
覆盖原始数据中的值。
$this->logger->debug(
"REQUEST: URL[{$this->config->endpoint}] BODY: "
. json_encode(array_replace_recursive($body, $redacted))
);
这对于覆盖单个值可能是一种矫over过正,但是如果您具有更复杂的结构且需要替换更多的值,则可能是一种更整洁的方法。
PHP-复选框组 - php我有一个需要发布的表单复选框组。<input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="false" name=…
PHP Count数组元素 - php嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…
PHP:从函数返回值并直接回显它? - php这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…
转义字符无法正常工作 - php我试图在PHP中创建html内容,并且为onclick事件提供了一个名为uchat的div函数。该函数采用一个字符串的名称参数。如下所示:$name = "Php string"; $echostr .= "<div onClick='uchat(\'$name\')'> &l…
PHP:将数据从二维数组复制到一维数组的最快方法 - php我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…