Ir para conteúdo
Fórum Script Brasil
  • 0

Dois códigos iguais com resultados diferentes


fchaves

Pergunta

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.

Editado por fchaves
Fiquei 3 dias tentando achar o problema, e antes que alguém me respondesse eu identifiquei o problema. O shell_exec() tá sobreponde meu arquivo, esqueci de apagar a linha depois que coloquei o fwrite().
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...