antiblock
https://i.imgur.com/aJ17bf7.gif
  • Chatbox

    You don't have permission to chat.
    Load More
Sign in to follow this  
TheSubKIller aka Skinning

[NEW] Ficheiros

1 post in this topic

Boas Cyber-Gamers

Os ficheiros permitem-nos armazenar facilmente pequenos pedaços de informação. O método de utilização é idêntico ao utilizado em C, o que é bastante simples. Vou apenas fazer uma abordagem aos ficheiros, visto que é muito mais simples utilizar uma base de dados (como o MySQL) para armazenar informação do que com os ficheiros. Em todo o caso, para os que não tem disponível uma base de dados para trabalhar, ou pretendem apenas armazenar pouca informação, a utilização de ficheiros pode ser o suficiente.

Criar um ficheiro, implica guardar informação no servidor. Logo, para que tal aconteça, a directoria onde vamos guardar o ficheiro, deve ter permissões de leitura e escrita (muito importante!). Em Linux, por default, quando criamos uma directoria, ela fica apenas com permissão de escrita para o utilizador. Frequentemente existem problemas de permissões, porque os scripts PHP (com o user id do webserver) não estão autorizados a escrever nesses locais. Uma maneira simples de resolver o problema é dar modo de leitura/escrita para todos: chmod a+wr directoria (para uma solução mais

personalizada, consultar o manual do chmod).

Supondo que o problema das permissões está resolvido, vamos ver como podemos armazenar informação num ficheiro:

<?

$str="Isto é um teste";

$ficheiro=fopen("teste.txt","w");

fputs($ficheiro, $str);

fclose($ficheiro);

?>

Basicamente, o que este script faz, é abrir um ficheiro de nome "teste.txt" e armazena lá dentro a string $str. Para tal, inicialmente utilizamos o fopen para abrir um ponteiro de escrita ("w") para o ficheiro "teste.txt", que fica armazenado em $ficheiro. Este ponteiro server para podermos trabalhar com o conteúdo do ficheiro, ou seja, podemos escrever no ponteiro, e esta operação terá efeito no ficheiro em si. Para escrever no ficheiro utilizamos a função fputs (File PUT String). No fim fechamos o ponteiro do ficheiro, e termina o script. Quando esta operação acontece, conteúdo do ficheiro é gravado. Por default, o PHP fecha todos os ponteiros de ficheiro no fim no fim do script, mas é bom habito sermos nós a fechar.

Podemos agora fazer a leitura da string que colocamos anteriormente:

<?

$ficheiro=fopen("teste.txt","r");

$str=fgets($ficheiro,100);

fclose($ficheiro);

echo $str;

?>

Mais uma vez, abrimos um ponteiro $ficheiro, desta vez de leitura ("r"), para o ficheiro"teste.txt". Seguidamente, utilizamos a função fgets (File GET String) para ler o conteúdo (neste caso indicamos para ler 100 bytes) do

$ficheiro. Depois fechamos o ponteiro, e escrevemos a string no fim.

-*-

Modos de abertura de um ficheiro, permitido pelo fopen:

'r' - Abre o ficheiro apenas para leitura. Posiciona o ponteiro no inicio do ficheiro.

'r+' - Abre o ficheiro para leitura e escrita. Posiciona o ponteiro no inicio do ficheiro.

'w' - Abre o ficheiro apenas para escrita. Posiciona o ponteiro no inicio do ficheiro, e trunca o seu tamanho para 0. Se o ficheiro não existe, tenta cria-lo.

'w+' - Abre o ficheiro para leitura/escrita. Posiciona o ponteiro no inicio do ficheiro, e trunca o seu tamanho para 0. Se o ficheiro não existe, tenta cria-lo.

'a' - Abre o ficheiro apenas para escrita. Posiciona o ponteiro no fim do ficheiro. Se o ficheiro não existe, tenta cria-lo.

'a+' - Abre o ficheiro para leitura/escrita. Posiciona o ponteiro no fim do ficheiro. Se o ficheiro não existe, tenta cria-lo.

-*-

Existe muitas funções que nos ajudam a trabalhar sobre ficheiros. Algumas dessas são usadas muito frequentemente, para verificar se o ficheiro existe, antes de o tentarmos ler, ou então para nos indicar se, quando estamos a ler informação de um ficheiro, já chegamos ou não ao fim do ficheiro. Vou dar uma pequena lista e explicar ligeiramente algumas delas.

Pequena lista de funções que são frequentes de utilizar em ficheiros:

fopen - Abre um ficheiro, e devolve um ponteiro para este, para que se possa executar operações relacionadas com o ficheiro em causa.

fclose - Fecha o ficheiro (guarda a informação modificada) e destroi o ponteiro de referência. Após um fclose de um ponteiro, só podemos voltar a aceder a informação do ficheiro, voltando a abri-lo com o fopen.

fgets - Le um determinado numero de bytes de um ficheiro.

fputs - Escreve informação num ficheiro.

file_exists - Verifica se um ficheiro existe. é recomendado fazer esta verificação para não tentar-mos abrir (para leitura) um ficheiro que não existe originando assim a um erro, por parte do PHP.

feof - Verifica se o ponteiro se encontra no fim do ficheiro. útil para quando temos um ciclo while para ler a informação de um ficheiro. A lógica normalmente utilizada é: "Enquanto não estamos no fim do ficheiro, lê

informação." while (!feof($ficheiro)) {...}

Estas funções já nos permitem fazer pequenos scripts que armazenem informação num ficheiro.

Vamos então utilizar algumas funções e construir um contador, para nos dizer quantas vezes uma página foi vista:

<?

//verificar existência do contador

if (file_exists("contador.txt"))

{

//ficheiro existe, vamos abrir para leitura

$ficheiro=fopen("contador.txt","r");

//Já temos o ponteiro, retiramos o numero de visitas:

$visitas=fgets($ficheiro,100);

//incrementamos uma visita ao total de visitas

$visitas++;

//fechamos o ponteiro de leitura do ficheiro

fclose($ficheiro);

}

else

{

//caso não exista ficheiro, esta é a primeira visita

$visitas=1;

}

//agora actualizamos/criamos o ficheiro para o numero das visitas

$ficheiro=fopen("contador.txt","w");

//escrevemos o total das visitas

fputs($ficheiro,$visitas);

//e fechamos o ficheiro

fclose($ficheiro);

echo "Número de visualizações da página: $visitas";

?>

Este é um exemplo simples de como se pode ler e escrever num ficheiro. Primeiro verificamos se o ficheiro já existe, e se sim, lê-mos o numero de visitas. Actualizamos o numero, e escrevemos no ficheiro. Se o ficheiro não

existe, é porque é a primeira visita, e escrevemos o numero 1 no ficheiro. No fim mostramos o numero de visitas que a página teve.

Exercício 9.1:

Vamos construir a nossa lista de compras! Para tal, utiliza o seguinte formulário, para adicionares o produto:

<html>

<body>

<form action=adiciona.php>

Produto a comprar: <input type=text name=produto><br>

<input type=submit value=Adicionar>

</form>

</body>

</html>

Deves criar um script PHP de nome "adiciona.php" que adiciona ao ficheiro o produto que pretendemos.

AVISO!!!! Para que exista um produto por linha, deve ser concatenado ao nome do produto, os caracteres "\n" . Estes caracteres indicam o fim de linha, logo quando estamos a escrever no ficheiro, mandamos o nome do produto e o

caracter de fim de linha, para que o ponteiro passe para a linha seguinte do ficheiro. Deves escolher com cuidado o tipo de abertura do ficheiro que pretendes fazer.

Após a introdução do produto no ficheiro, deverá aparecer uma mensagem a dizer qual o produto que foi adicionado à lista de compras.

Exercício 9.2:

Após o produto ser adicionado, o script "adiciona.php" deve de mostrar a lista completa dos produtos que se prende comprar, um por linha, e devidamente numerados.

Exercício 9.3 (dificuldade elevada!):

Para evitar adicionar produtos que já estavam na lista de compras, devemos poder consultar a lista, antes de introduzirmos um novo produto. Para tal, cria um novo script independente. Este deverá ser chamado de "compras.php"

e deve respeitar os seguintes critérios:

Se não existe lista de compras, escreve uma mensagem a dizer "Não existem compras a fazer", e mostra o formulário para se adicionar um novo produto.

Se a lista de compras existe, escreve os produtos (numerados) já adicionados, que pretendemos comprar, seguido do formulário para se adicionar um novo produto.

O formulário faz a submissão para o próprio "compras.php", e deve adicionar um produto a lista de compras, sempre que se este seja introduzido.

NOTA:

Relembro que APóS se faz um submit, o PHP cria uma variável com o nome da caixa de texto (neste caso $produto) com o conteúdo introduzido pelo utilizador. Para verificares se essa variável existe ou não, deves utilizar a função "isset()" q devolve VERDADEIRO, caso a variável tenha sido declarada, ou FALSO, caso não tenha.

Resumo:

Podemos utilizar ficheiros para guardar pequenas informações, sempre que não possamos ter acesso a uma base de dados. Trabalhamos nos ficheiros através de ponteiros, que vão indicando a posição do ficheiro onde nos encontramos.

E temos diversas funções que nos permitem trabalhar com estes.

Share this post


Link to post
Share on other sites
antiblock
Cyphriun

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
Sign in to follow this