Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eliseu Filipi

Como renomear valor de um array e salvar

Recommended Posts

Olá

Eu tenho um php com um array:

<?php
$id = trim($_GET['%']);

$Lista = array(
'usuario1'=>array('validade'=>  '03/05/15', 'licencas'=> '1', 'ativado'=>'true'),
'usuario2'=>array('validade'=>  '03/05/15', 'licencas'=> '1', 'ativado'=>'false')
);

if(array_key_exists($id,$Lista)){
If($Lista[$id]['ativado'] = 'false'){
echo "Usuário foi ativado" . "\n";
// ativar/renomear e salvar
}
?>

Se o nome informado é encontrado no array então verifica se está ou não ativado ('true').

Caso não esteja ("false") então ativa, renomeando para "true" e salva.

Já tentei usar 'str_replace ' mas não consegui salvar.

Além disso pode-se haver uma verificação simultânea, ou seja, mais de um usuário pode verificar e não deve causar conflitos.

Só por favor, nada de banco de dados, preciso PHP.

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
if(array_key_exists($id,$Lista)){
If($Lista[$id]['ativado'] = 'false'){
$Lista[$id]['ativado'] = 'true';
echo "Usuário foi ativado" . "\n";
// ativar/renomear e salvar
}

Já tentou isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alem do código do colega pokee, verifique que na segunda opção você está comparando com "=" e na realidade comparação deve ser com "==" no PHP apenas um = é atribuição e não comparação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, agradeço pela ajuda, mas acho que vocês não estão me entendendo.

A questão não é como comparar (se igual, se diferente), mas sim como modificar o php.

Eu tenho um link com o php "www.mysite/my.php?%=usuario1". Então o usuário acessa o link e se tiver cadastrado no array libera um código, ou seja se $Lista[$id]['ativado'] = 'false' então libera. Mas após a liberação o valor de "ativado" deve mudar para "true". Se o usuário for verificar novamente o código não vai ser mais liberado porque já foi. Ou seja o php tem que ser modificado e salvo automaticamente pra que isso aconteça.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, respondi mostrando apenas a questão da comparação pois o amigo pokee já havia colocado a linha que modifica o valor do array.

$Lista[$id]['ativado'] = 'true';

se o código acima não modificar o array, então você vai precisar debugar para ver se está pelo menos chegando nessa linha.

caso você esteja falando de salvar em definitivo para uso futuro, tipo em outra sessão, teria de salvar no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, respondi mostrando apenas a questão da comparação pois o amigo pokee já havia colocado a linha que modifica o valor do array.

$Lista[$id]['ativado'] = 'true';

se o código acima não modificar o array, então você vai precisar debugar para ver se está pelo menos chegando nessa linha.

caso você esteja falando de salvar em definitivo para uso futuro, tipo em outra sessão, teria de salvar no banco de dados.

Olá!! Exatamente, quero salvar para ser usada em outra sessão. Então não tem como salvar definitivo? E usando file_put_contents ou algo parecido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer que essa liberação seja feita só uma vez, você terá que salvar no banco de dados mesmo.

Olá! Bahh, banco de dados é chato, complicado... PHP é simples para isso, posso modificar e salvar facilmente. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Bahh, banco de dados é chato, complicado... PHP é simples para isso, posso modificar e salvar facilmente. :/

Quando você aprende banco de dados fica tranquilo, no começo tudo é complicado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!! Exatamente, quero salvar para ser usada em outra sessão. Então não tem como salvar definitivo? E usando file_put_contents ou algo parecido?

É possível sim com arquivo, mas vai por mim, é muito mais complicado do que com banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é para salvar 'para sempre' Banco de dados é um caminho, ou se não salvar no próprio disco/arquivo utilizando o fopen* como você mesmo disse.

Agora uma opção temporária seria utilizar o $_SESSION do php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode estar salvando esse status num cookie também, mais se usuário realizar exclusão do mesmo, vai perder o status.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

Agradeço a todos pela ajuda, mas nada dito pode me ajudar.

Desenvolvi um executável TRIAL que é ativado online. Após o cliente efetuar o pagamento eu adiciono o e-mail dele no php. Então ele insere o e-mail no software e clica em ativar, se o e-mail é encontrado no array então retorna positivo e o software é ativado, caso contrário não. Só que isso pode ser efetuado só uma vez, pois senão o e-mail pode ser distribuído na net funcionando com qualquer um, ilimitadas vezes.

Não tenho como usar banco de dados, caso contrário teria que inserir informações de login no software como usuário e senha, tornando vulnerável minhas contas, não seria nada inteligente.

Mas mesmo assim agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu raciocínio não faz o menor sentido, você poderia consultar o BD para verificar o e-mail através de uma interface (como o arquivo que você está criando esse array), não precisaria botar senha do BD nem nada do gênero... de fato é o caminho mais simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu raciocínio não faz o menor sentido, você poderia consultar o BD para verificar o e-mail através de uma interface (como o arquivo que você está criando esse array), não precisaria botar senha do BD nem nada do gênero... de fato é o caminho mais simples.

Olá ESerra, como não precisa de senha? Quer dizer então que qualquer um pode acessar meu banco de dados e obter informações? Se eu tenho um banco de dados online e quero acessar pelo desktop é lógico que tenho que inserir senha. Olha o exemplo aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, as vezes a gente tem que apenas parar pra pensar, neste momento, você acha que isto que você está lendo está vindo de onde? Do além? Não, de um banco de dados, o fórum é apenas a interface, no seu caso, é exatamente a mesma coisa. Você poderia disparar um post para um script PHP, ele resgataria isto, faria a consulta e devolveria o true/false para o seu sistema e no mesmo momento faria a atualização do BD se for o caso, pronto, exatamente a mesma coisa que você está sofrendo para fazer do modo mais complicado possível.

Exemplo:

http://webservices.profissionaisdaweb.com.br/cep/15085070.xml

Isso dai está devidando guardado em um BD, você digitou alguma senha para receber o retorno? Não, pois o sistema tem a finalidade exatamente de servir isto.

Não confunda o seu sistema acessar o BD diretamente, com ele consumir essa informação de alguma interface/webservice.

Observe também que se você não quer usar BD, ok, mas você terá que salvar isto em algum lugar, para poder manipular, nem que seja em um arquivo.ini.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixando o debate de ser a forma correta ou não de lado (mas você deveria seguir as recomendações deles!)...

Uma forma de fazer o que você quer é armazenar os dados em um arquivo separado (de preferência em uma pasta fora da pasta do servidor web, para que ninguém o acesse) no formato JSON, então no seu arquivo PHP você carrega o conteúdo desse arquivo (função file_get_contents) e transforma em um array (função json_decode)... aí faz as verificações e alterações necessárias no array e no final o converte para JSON novamente (função json_encode) e salva no arquivo.

<?php
// interpreta o arquivo com os dados no formato JSON
$content = file_get_contents("caminho-do-arquivo.json");
$Lista = json_decode($content, true);
 
// faz as verificações e alterações no array $Lista
// etc
 
// atualiza (substitui) as informações do arquivo pelas novas informações
$content = json_encode($Lista);
file_put_contents("caminho-do-arquivo.json", $content, LOCK_EX);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixando o debate de ser a forma correta ou não de lado (mas você deveria seguir as recomendações deles!)...

Uma forma de fazer o que você quer é armazenar os dados em um arquivo separado (de preferência em uma pasta fora da pasta do servidor web, para que ninguém o acesse) no formato JSON, então no seu arquivo PHP você carrega o conteúdo desse arquivo (função file_get_contents) e transforma em um array (função json_decode)... aí faz as verificações e alterações necessárias no array e no final o converte para JSON novamente (função json_encode) e salva no arquivo.

<?php
// interpreta o arquivo com os dados no formato JSON
$content = file_get_contents("caminho-do-arquivo.json");
$Lista = json_decode($content, true);
 
// faz as verificações e alterações no array $Lista
// etc
 
// atualiza (substitui) as informações do arquivo pelas novas informações
$content = json_encode($Lista);
file_put_contents("caminho-do-arquivo.json", $content, LOCK_EX);

Obrigado AndersonMamede, vou experimentar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tchê, as vezes a gente tem que apenas parar pra pensar, neste momento, você acha que isto que você está lendo está vindo de onde? Do além? Não, de um banco de dados, o fórum é apenas a interface, no seu caso, é exatamente a mesma coisa. Você poderia disparar um post para um script PHP, ele resgataria isto, faria a consulta e devolveria o true/false para o seu sistema e no mesmo momento faria a atualização do BD se for o caso, pronto, exatamente a mesma coisa que você está sofrendo para fazer do modo mais complicado possível.

Exemplo:

http://webservices.profissionaisdaweb.com.br/cep/15085070.xml

Isso dai está devidando guardado em um BD, você digitou alguma senha para receber o retorno? Não, pois o sistema tem a finalidade exatamente de servir isto.

Não confunda o seu sistema acessar o BD diretamente, com ele consumir essa informação de alguma interface/webservice.

Observe também que se você não quer usar BD, ok, mas você terá que salvar isto em algum lugar, para poder manipular, nem que seja em um arquivo.ini.

Muito bem, então posso salvar os e-mails de meus clientes em um banco de dados (sem senha), verificar se um e-mail existe ou não, sem expor a lista de e-mails e informações particulares do cliente a qualquer um que acessar? Por que pelo php não é possível ver o código, nem a array, apenas fazer a verificação.

Se você souber como, me ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.