Você está na página 1de 4

Manipulando Arquivos pelo PHP

http://www.phpbrasil.com/articles/article.php/id/515

Para começar este artigo, irei mostrar como abrir um arquivo e escrever nele, algo que poderia
ser usado para criar um script de mensagens, ou até mesmo um simples guestbook.

As funções que iremos utilizar são fopen(), fwrite() e fclose().

Descrição:
fopen() - abre um arquivo
fwrite() - escreve em um arquivo
fclose() - fecha um arquivo

Referências:
http://www.php.net/manual/en/function.fopen.php
http://www.php.net/manual/en/function.fwrite.php
http://www.php.net/manual/en/function.fclose.php

Lembre-se: Sempre que manipularmos um arquivo, iremos usar fopen() e fclose().

<?php
// Abre ou cria o arquivo exemplo1.txt
// "a" representa que o arquivo é aberto para ser escrito

$fp = fopen("exemplo1.txt", "a");

// Escreve "primeiro exemplo" no exemplo1.txt


$escreve = fwrite($fp, "primeiro exemplo");

// Fecha o arquivo
fclose($abre);
?>

Como resultado é criado um arquivo chamado exemplo1.txt, escrito "primeiro exemplo". Se


você repetir a ação, "primeiro exemplo" será escrito novamente no fim desse arquivo.

É importante notar que você tem diversas maneiras de abrir um arquivo, que são representadas
por letras. No exemplo acima utilizamos o modo "a", veja abaixo a lista de todos os modos e
suas descrições:

'r' - Abre somente para leitura; coloca o ponteiro no começo do arquivo.

'r+' - Abre para leitura e gravação; coloca o ponteiro no começo do arquivo.

'w' - Abre somente para gravação; coloca o ponteiro no começo do arquivo e apaga o conteúdo
que já foi escrito. Se o arquivo não existir, tentar criá-lo.

'w+' - Abre para leitura e escrita; coloca o ponteiro no início do arquivo e apaga o conteúdo que
já foi escrito. Se o arquivo não existir, tentar criá-lo.
'a' - Abre o arquivo somente para escrita; coloca o ponteiro no fim do arquivo. Se o arquivo não
existir, tentar criá-lo.

'a+' - Abre o arquivo para leitura e gravação; coloca o ponteiro no fim do arquivo. Se o arquivo
não existir, tentar criá-lo.

Com estas três funções você pode criar, escrever e fechar um arquivo facilmente. Lembrando
que você também pode usar a função fputs()
(http://www.php.net/manual/pt_BR/function.fputs.php) para escrever em um arquivo.

Na próxima página veremos como ler e exibir o conteúdo de um arquivo.

Conforme foi citado no começo do artigo, as funções de manipulação do PHP podem ser usadas
para criar um simples banco de dados. Parecido com um banco de dados você pode armazenar
informações e depois reaproveitá-las.

Para demonstrar esse uso, iremos criar um sistema simples, que guarda informações de usuários
em um arquivo de texto.

As funções que iremos utilizar são fopen(), fwrite() e fread().

Funções extra:
explode() - divide uma string ( http://www.php.net/manual/pt_BR/function.explode.php )
opendir() - abre um diretorio ( http://www.php.net/manual/pt_BR/function.opendir.php )
readdir() - lê os arquivos de um diretório (
http://www.php.net/manual/pt_BR/function.readdir.php )
closedir() - fecha um diretório ( http://www.php.net/manual/pt_BR/function.closedir.php )
file_exists() - verifica se um arquivo existe ( http://www.php.net/manual/pt_BR/function.file-
exists.php )

Primeiro vamos criar um formulário simples para o usuário cadastrar seus dados, que pode ser
chamado de form.html:

CADASTRO:
<form method="POST" action="cadastra.php">
Nome: <input type="text" size="10" name="nome"><br>
E-mail: <input type="text" size="10" name="email"><br>
Endereço: <input type="text" size="10" name="endereco"><br>

Telefone: <input type="text" size="10" name="telefone"><br>

<br><input type="submit" value="cadastrar">


</form>

Este formulário passará as variaveis nome, email, endereco e telefone, que serão cadastradas em
seu respectivo arquivo de texto. A ação do formulário está como cadastra.php, que será o arquivo
contendo o necessário para cadastrar o usuário no arquivo.

<?php
// Verifica se todos os campos foram preenchidos
if (!$nome || !$email || !$endereco || !$telefone) {
echo "preencha todos os campos";
} else {
// Verifica se um usuário com o mesmo nome ja foi cadastrado
if(!file_exists($nome . ".txt")) {
// Criamos o arquivo do usuário com w+
$cria = fopen($nome . ".txt", "w+");

// Aqui iremos declarar as informações do usuário


// São separadas por | para depois podermos recupera-las com explode

$dados .= "$nome|";
$dados .= "$email|";
$dados .= "$endereco|";
$dados .= "$telefone";

// Agora escrevemos estes dados no arquivo


$escreve = fwrite($cria,$dados);

// Fechando o arquivo
fclose($cria);

// Exibe a mensagem de usuário cadastrado


echo "usuário cadastrado com sucesso!";
} else {
// Se ja houver um usuário cadastrado com o mesmo nome
echo "um usuário chamado $nome ja foi cadastrado";
}
}
?>

Como você pode ver, agora estamos interagindo com funções básicas, com as funções que vimos
neste artigo. Com estes dois arquivos criados nós ja temos o envio de dados para um arquivo de
texto, onde os valores são separados por "|".

O caracter "|" será utilizado para separar os dados, com se fossem colunas. Com a função
explode poderemos separar os dados a gosto.

Por fim, criaremos um arquivo para visualizar todos os usuários cadastrados. Estaremos usando a
função readdir(), que é essencial para quem usar sistemas desse tipo.

<?php
// Primeiro definiremos onde estão os arquivos
// ./ siginifica que os arquivos estão no diretório atual
$dir = "./";

// Abre o diretorio $dir


$abredir = opendir($dir);

// Faz o loop para a exibição de usuários


while ($arqs = readdir($abredir)) {
// Aqui fazemos o php tirar "." e ".." que são "bugs" do readdir()
// Também faz com que só sejam abertos arquivos de texto
if ($arqs != "." && $arqs != ".." && is_file($arqs) && ereg(".txt",
$arqs)) {
// Agora iremos abrir arquivo por arquivo, e exibir os dados do
usuário
// Usamos o "r" pois somente queremos ler o arquivo
$abre = fopen($arqs,"r");

// Usamos fread agora para ler o arquivo


$le = fread($abre,filesize($arqs));

// Agora vem o grande truque, separamos os dados pelo "|" com explode
$dado = explode("|",$le);

// Define os registros
$nome = $dado['0'];
$email = $dado['1'];
$endereco = $dado['2'];
$telefone = $dado['3'];

// Vamos mostrar os dados que obtivemos


echo "Usuário: <b>$nome</b><br>";
echo "nome: $nome<br>";
echo "e-mail: $email<br>";
echo "endereço: $endereco<br>";
echo "telefone: $telefone<br><br>";
}
}

// Fecha o diretorio
closedir($abredir);
?>

Assim é feito um simples script, com um banco de dados simulado em um arquivo de texto.
Você pode incrementar muito mais, e fazer scripts mais amplos e cada vez mais úteis!