Virtual Arts Design
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Trabalhar com ficheiros - Leitura

Ir para baixo

Trabalhar com ficheiros - Leitura Empty Trabalhar com ficheiros - Leitura

Mensagem por Admin Sex Dez 21 2012, 21:32

Introdução

De vez em quando é necessário ler, alterar ou criar ficheiros no servidor de Internet, como por exemplo, para criar contadores de acesso, estatísticas de visitas ou guardar algumas informações para visualizações posteriores que são demoradas para serem criadas pelo servidor, e que não seria muito bom gerá-las sempre que um visitante as quisesse ver.

O PHP fornece um conjunto de funções muito boas para isto, e com alguns cuidados, os scripts funcionarão tanto em Windows como em Linux sem nenhuma alteração. Todas essas funções podem ser encontradas no manual do php, em "Filesystem functions".


Abrir ficheiros

A primeira função que se deve conhecer para trabalhar com ficheiros é a que cria uma ligação entre o script e o ficheiro propriamente dito:

int fopen( string ficheiro, string modo [, int usa_include_path] );

Esta função devolve um ponteiro para um ficheiro, que é utilizado noutras funções para lidar com ficheiros. O primeiro parâmetro, ficheiro, é uma string que indica o local do ficheiro a ser aberto, aqui vai a primeira dica: não utilize o modo de referência do windows, como c:\www\ficheiro.txt, pois não irá funcionar num servidor linux! Evite também ler e gravar ficheiros fora do directório onde o teu site está hospedado, às vezes torna-se difícil criar um directório fora do directório do site, e, se um dia quiseres transferir o teu site para uma outra máquina, pode acontecer que te esqueças daquele directório isolado. Vamos supor que o site tem um subdirectório "tmp" e que tem dentro um ficheiro novidades.txt. Para abrir o ficheiro usamos:

$fd = fopen( "tmp/novidades.txt", "r" );
...
?>

Note que mesmo que este script seja executado em windows ele irá funcionar. Excelente! Nada melhor que programar com uma linguagem que funciona em vários sistemas operativos sem alterações!
O segundo parâmetro informa o PHP que o ficheiro deve ser aberto so para leitura, os modos possíveis podem ser:

r - so leitura, coloca o ponteiro no início do ficheiro
r+ - leitura e gravação, coloca o ponteiro no início do ficheiro
w - so gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro no início do ficheiro. Se o ficheiro não existir, tenta criá-lo.
w+ - leitura e gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro no início do ficheiro. Se o ficheiro não existir, tenta criá-lo
a - so gravação, coloca o ponteiro no final do ficheiro. Se o ficheiro não existir, tenta criá-lo.
a+ - leitura e gravação, limpa o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro no final do ficheiro. Se o ficheiro não existir, tenta criá-lo

Existe ainda a opção "b" que pode ser utilizada com os modos (sozinha não funciona!), esta opção indica que o ficheiro deve ser tratado como binário em vez de texto, ou seja, se o programa for lidar com imagens em vez de um ficheiro de texto comum. É de vital importância no windows para ler imagens, ou caso contrário o programa não irá funcionar. Como o Linux e Unix não fazem diferença entre um ficheiro de texto e um binário, essa opção não terá nenhum efeito, portanto, se o seu programa for trabalhar com imagens, não custa nada adicionar esta opção. (programas multiplataforma são excelentes!)

AVISO: Como no windows (95/98/CE/ME) não existe permissão de acesso a ficheiros os programas funcionarão como desejado, podemos criar ficheiros, acede-los, excluí-los e muito mais. No Linux começam a surgir alguns problemas, normalmente os ficheiros e directórios de um servidor de Internet são de um utilizador e o servidor http (apache, por exemplo) corre como um outro utilizador, o php corre com o mesmo utilizador do servidor http, portanto se este utilizador não tiver permissão para gravar num directório, não será possível criar os ficheiros pelo php, nem alterá-los.

O terceiro parâmetro é opcional, e se seu valor for 1, o php irá procurar nos directórios informados na configuração "include_path" do php.ini.

Se a função fopen falhar ao abrir ou ao criar o ficheiro, ela retorna false. Note que se for utilizado o parâmetro "r"(somente leitura) ou "r+" e o ficheiro não existir, a função fopen não irá tentar criá-lo, simplesmente retornará um erro, e mostrará um aviso no browser do utilizador.
Caso não seja muito bom mostrar esse tipo de erro para o utilizador (toda a gente que vir essa mensagem vai querer ler esse ficheiro directamente no browser), utilize o @ antes da função e confira o resultado:

$fd = @fopen( "tmp/novidades.txt", "r" ) or die( "ops, avise o webmaster, que está a faltar um ficheiro no servidor");
...
?>

Mesmo que tenhas a certeza que este ficheiro está por lá, usa este método, pois nem sempre as coisas são como esperamos.


Fechar ficheiros

Depois de aberto ou criado o ficheiro, é sempre bom deixar a mesa arrumada após o serviço, portanto devemos fechar o ficheiro. É muito fácil:

int fclose( int fp );

O parâmetro fp é o ponteiro de ficheiro que foi retornado pela função fopen(), no nosso caso $fd. Esta função retorna true se o ficheiro foi fechado e false se não foi possível fechar o ficheiro. O ficheiro precisa ser fechado no mesmo script que o abriu.
avatar
Admin

Fundador

Mensagens : 1498
Cash'Arts : 13561
Reputação : 0
Entrada : 06/12/2012
Software : Adobe Photoshop CS5
Localização : Na frente do PC
1 0 2 0
3 0
100%

https://virtualdesign.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos