Jump to content

Alterar variáveis


anolsi

Recommended Posts

Tenho um ficheiro em PHP no qual faço o require_once('def.php') do ficheiro em PHP que me vai inicializar variáveis a nível global. No entanto, o que eu queria era poder alterar essas variáveis, e que estas ficassem guardadas no def.php E sempre que utilizar ele reflicta as gravações anteriores.

Será que alguém me pode ajudar?

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Segundo percebi, tens um ficheiro def.php que tem algo como:

$var1 = "abc";

$var2 = "def";

E queres alterar o valor dessa mesmas variáveis de forma que fiquem guardadas fisicamente no ficheiro def.php. É isso?

É que se for, recomendo-te a esqueceres esse método e guardares os dados que queres num ficheiro XML por exemplo e depois é só carregares os dados do XML e gravar para o XML quando quiseres.

Link to comment
Share on other sites

Um sistema simples é usares o serialize.

function guardarVar($vars){ // recebe array(nome da variavel a guardar => valor)
    $z = '';
    foreach($vars as $k => $v) $z .= $k." - ". serialize($v) . "\t---\n\t---\n";
    fwrite(fopen("vars.txt", "w"), $z);
}
function abrirVar(){ //devolve array = à anterior
    $z = array()
    foreach(explode("\t---\n\t---\n", file_get_contents("vars.txt")) as $v)
        foreach(explode(" - ", $v, 1) as $x) $z[$x[0]] = unserialize($x[1]);
    return $z;
}

Serve?

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Nazgulled será que podias explicar a maneira de guardar dados em XML? é que ainda me estou a iniciar em PHP... Se não fosse pedir muito...  ?

Eu uso o SimpleXML do PHP5. Lê a documentação sobre isso, não é difícil de usar.

@MX+

Exagerado porquê? Não vejo razão para tal... No script que estou a fazer tenho usado XML para algumas coisas em vez de outros métodos... Por exemplo, configurações do script e ficheiros de língua e é perfeito. O XML permite organizar e estruturar esses dados de forma bastante simples onde qualquer pessoa os pode modificar.

Link to comment
Share on other sites

Um sistema simples é usares o serialize.

Serve?

Obrigado djthyrax. Mas, corrige-me se estiver errado, falta um ponto-e-virgula aqui:

    $z = array()

Certo?

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Alterei o código porque o "indice" do array ficava apenas com a primeira letra e não com o nome todo.

function guardarVar($vars){ // recebe array(nome da variavel a guardar => valor)  
$z = ''; 
foreach($vars as $k => $v) 
		$z .= $k." - ". serialize($v) . "\t---\n\t---\n";  
		fwrite(fopen("Settings.txt", "w"), $z);
}
function abrirVar(){ //devolve array = à anterior   
$z = array();
foreach(explode("\t---\n\t---\n", file_get_contents("Settings.txt")) as $v)
	foreach(explode(" - ", $v, 1) as $x) {
		$num = strpos($x, "-");
		$z[substr($x, 0, $num-1)] = unserialize($x[0]);
	}
return $z;
}

No entanto o unserialize não funciona, já que não devolve nada...

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Obrigado djthyrax. Mas, corrige-me se estiver errado, falta um ponto-e-virgula aqui:Certo?

Sim, falta. É o hábito do Python 😄

Anyway, o erro de ser a primeira letra foi falha minha. O 1 no explode() devia ser 2 (yay for confusion with Python).

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Não sei se isto deveria ser colocado aqui, mas como mudei o tipo de ficheiro, este agora está vulnerável a download, e pode dar informações que eu não gostaria de mostrar a desconhecidos. Com o PHP o máximo que ele fazia era recarregar as variáveis... Será que me podem ajudar ou tenho que ir para o quadro segurança?

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Queres um script entao que "reescreva" os valores da variaveis como bem entenderes certo?

Sim, obrigado.

Quanto a segurança do ficheiro, podes alterar a CHMOD... embora nem sempre seja muito fiável.

Podes explicar o que é o CHMOD?  🙂

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Podes explicar o que é o CHMOD?  🙂

CHMOD é um comando de Unix que permite-te alterar permissões (e logicamente, restrições) a ficheiros e directórios. Para quem não tem acesso à Shell (Terminal) do seu servidor, muito software de "acesso grafico" por ftp a servidores permitem-te alterar a CHMOD com apenas alguns cliques. Através do terminal, o comando é: chmod [valor] [ficheiro/directorio]

O valor será um numero de 3 digitos, tendo caracteristicas diferentes, eu geralmente uso 711. Gerará o famoso erro 403, "Forbidden".

Quanto ao script... Caso não saibas como fazê-lo, ajudo-te nisso, mas basicamente a lógica será, ler o numero de linhas do ficheiro, e reescreve-lo como quiseres alterando o valor de um determinado argumento que tu desejares.

Link to comment
Share on other sites

Queres um script entao que "reescreva" os valores da variaveis como bem entenderes certo? Se sim, crio um script que te possa ajudar. Quanto a segurança do ficheiro, podes alterar a CHMOD... embora nem sempre seja muito fiável.

Eu acho esta solução para o que tu queres fazer um bocado para o estúpida, mas pronto... Tens tantas soluções porquê que vais para a pior?

Link to comment
Share on other sites

Porquê não tem sentido nenhum e se as outras são muito melhores, muito mais práticas e fazem mais sentido esta é a pior.

Desculpa lá, mas para mim não faz sentido nenhum ter um ficheiro PHP com variáveis definidas e depois querer modificar os valores e ter que reescrever o ficheiro programando "PHP dentro de PHP" (acho que me percebe)... Been there, done that (quando ainda me iniciava em PHP) e vi que é uma solução parva, que não faz sentido nenhum e só da trabalho desnecessário.

Mas cada um sabe de si, e eu acho esta forma de fazer o que ele quer a mais estúpida possível para resolver o problema.

Link to comment
Share on other sites

You can talk the talk, but can you walk the walk?

Soas-me um tanto presunçoso e full of yourself, pergunto-me se és e vales o que dizes. Anyways, como já disse, no meu lugar eu usaria uma tabela, mas foi isso que ele pediu e é nisso que o ajudamos, sinto que é desnecessário dares essas opiniões estúpidas e sinceramente, desnecessárias. Não percebo o "trabalho desnecessário" se com cerca de 8 linhas de código ou menos faz-se isso. "Been there, done that", so have I. Qual é o teu objectivo nessa afirmação? Não me parece a atitude certa a se ter num fórum destinado ao suporte e ajuda dos menos "conhecedores" da matéria.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.