Jump to content
Fórum Script Brasil
  • 0

Dois códigos iguais com resultados diferentes


Question

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.

Edited by 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 to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149264
    • Total Posts
      645605
×
×
  • Create New...