Boa noite, amigos.
Tenho dois códigos iguais que produzem resultados diferentes, e já tentei encontrar a lógica de como isso pode acontecer e estou com sérias dificuldades de encontrar o problema.
Um é basicamente ctrl+c ctrl+v do outro.
Código 1:
<?php
function existe_user($nickname) {
if (shell_exec("find ./users/ -name $nickname") == "") {
echo 0;
} else {
echo 1;
}
}
function criar_user($nickname) {
shell_exec("touch ./users/$nickname");
echo existe_user($nickname);
}
function atualizar_json($nickname,$json) {
$file = fopen("./users/$nickname","w");
fwrite($file,$json);
fclose($file);
shell_exec("echo $json > ./users/$nickname");
}
function pegar_json($nickname) {
echo shell_exec("cat ./users/$nickname");
}
$body = json_decode(file_get_contents('php://input'));
$function = $body->{'function'};
$nickname = $body->{'nickname'};
$json = json_encode($body->{'json'});
switch ($function) {
case "existe_user":
existe_user($nickname);
break;
case "criar_user":
criar_user($nickname);
break;
case "atualizar_json":
atualizar_json($nickname,$json);
break;
case "pegar_json":
pegar_json($nickname);
break;
}
?>
Código 2:
<?php
function testando($nome,$json) {
shell_exec("touch ./users/$nome");
$file = fopen("./users/$nome","w");
fwrite($file,$json);
fclose($file);
}
$body = json_decode(file_get_contents('php://input'));
$function = $body->{'function'};
$nome = $body->{'nome'};
$json = json_encode($body->{'json'});
if ($function == 'testando') {
testando($nome,$json);
}
?>
O problema em questão é com a função "atualizar_json". O código 1 produz um resultado inesperado (mostrarei logo mais), e criei o segundo código copiando o primeiro e ele apresenta o resultado esperado. Estou testando os dois códigos usando o método POST, e a origem da requisição é a mesma.
No primeiro código, ao salvar o JSON no arquivo, ele elimina as aspas ficando assim: {local:{latitude:-13.7198731,longitude:-38.9974784},amigos:[]}
No segundo, o resultado aparece assim: {"local":{"latitude":-13.7198731,"longitude":-38.9974784},"amigos":[]}
Estou usando o PHP 7.3.27-1 com Apache2 rodando localmente.
Sou iniciante e meu conhecimento é muito limitado nesse assunto, estou apenas me aventurando como hobby.