Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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.
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.
Complementando, segue o link explicando os comparadores do php:
http://php.net/manual/pt_BR/language.operators.comparison.php
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.
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.
Se você quer que essa liberação seja feita só uma vez, você terá que salvar no banco de dados mesmo.
>
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?
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. :/
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
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.
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.
Você pode estar salvando esse status num cookie também, mais se usuário realizar exclusão do mesmo, vai perder o status.
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.
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.
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.
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.
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);>
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.
>
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.
>
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.
Esqueça o que citei, vendo a sua dificuldade em entender a lógica da coisa, é melhor você fazer como idealizou, nada como o conforto do que a gente idealiza...
@Eliseu Filipi
Apesar de ambos se comunicarem ( PHP / Banco) são coisas distintas..
Um Banco de dados pode ser acessado de uma maquina/host diferente.
Um exemplo....
Computador 1 (Tem Apenas uma instancia Linux/Ubuntu com Mysql instalado), com o IP interno: 192.168.02
Computador 2 (Tem Apenas uma instancia Linux/Ubuntu com Apache2 + PHP), com o IP interno: 192.168.03
Imagine o seguinte cenário:
A aplicação está se comunicando com o banco, do ponto de vista de segurança da aplicação está tudo 'certinho' estamos utilizando as melhores técnica para garantir um certo nível de segurança, Prepared Statment, Permissão de arquivo,etc, etc ,etc...
POREM a aplicação (Computador 1) se comunica com o banco (Computador 2) e adivinhe só ele está sem senha...
Obviamente a segurança desse cenário poderia ser melhor caso o banco tivesse senha xD.
Só queria tentar passar um exemplo real.... Não sei se deu pra pegar a ideia.
São coisas distintas mas se comunicam.
Outro exemplo:
Dentro do seu site você poderia ter a seguinte pagina em php:
seu-site.com.br/salvar_email.php
Já a seguinte pagina php:
seu-site.com.br/checa_email.php
retorna 1 caso o E-mail passado (via FORM/POST) já exista e 0 caso não exista, assim evitando a exposição de informações.
if(array_key_exists($id,$Lista)){
If($Lista[$id]['ativado'] = 'false'){
// ativar/renomear e salvar
}
Já tentou isso.