![]() |
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Files Índice da página:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Além da manipulação individual de Files o php providencia funções para manipulação de directórios. Neste capítulo na maioria dos casos não poderemos dar exemplos activos por ordem de segurança de nosso servidor. No entanto daremos exemplos que pode simular no seu computador ou servidor Virtual. Abordamos estes exemplos, pois sendo este um curso para iniciados em php, e também para aqueles que tenham pequenos sites sem base de dados, poderem manipular files e directórios. • Acesso Directórios Para apontar para um directório use a sintaxe: int chdir(string directório) Exemplo: <?php $dir = chdir("c:\windows\temp"); $dir=getcwd(); echo $dir; ?> • Directório Actual Para obter o directório currente use a sintaxe: string getcwd() Exemplo: <?php $dir=getcwd(); echo $dir; ?> • Ler Directórios Para ler o conteúdo de um directório, terá de processar três funções. Abrir directório, Ler conteúdo, Fechar directório. Para Abrir um directório use a sintaxe: int opendir(string directório) Para ler conteúdo use a sintaxe: string readdir(int dir) Para fechar o directório use a sintaxe: closedir($dir) No exemplo que apresentamos poderá ver todas as files deste Directório.
Exemplo:
<?php
$dir=getcwd();
$rep=opendir($dir);
echo "Directório: /cursos/cursophp/exemplos<br>";
while ($file = readdir($rep)) {
if($file != '..' && $file !='.' && $file !=''){
echo '<a href="'.$file.'" target="_blank">'.$file.'</a><br>';}}
closedir($rep);
?>
• Criar Directório Para criar um directório use a sintaxe: mkdir(string directório, string chmod)
Exemplo:
<?php
$dir="c:/Temp/Teste";
if (mkdir($dir,"0700")){
echo "Foi Criado Novo Directório.";}
else {
echo "Não Foi Possível Criar Directório";{
?>
Apresentamos a tabela com os valores das propriedades (CHMOD).
• Remover Directório Para remover um directório use a sintaxe: rmdir(string directório) Esta função não trabalha se o directório não estiver limpo. No exemplo abaixo mostramos um exemplo
de como apagar as files e sub directórios de um directório e remover o mesmo.
Exemplo:
<?php
$dir="d:/Temp/Teste";
Remover_dir($dir);
function Remover_dir($dir){
$opdir = opendir($dir);
while (($file = readdir($opdir))){
if (is_file($dir."/".$file)){
unlink($dir."/".$file);}
else if (is_dir($dir."/".$file) && ($file !=".") && ($file !="..")){
Remover_dir($dir."/".$file);}}
closedir($opdir);
rmdir($dir);
echo "Directório Removido: ", $dir."<br>";}
?>
Muito existe a dizer sobre o manuseamento de files no php. Neste curso apenas iremos focar os aspectos
fundamentais e mais comuns, para que lhe seja possível obter o mínimo de conhecimento no tratamento de files. Começaremos com o primeiro exemplo de como criar uma file. Na eventualidade de não possuir uma base de dados, pode criar files que contenham dados para um contador, registos de dados de clientes, tabelas de informação, etc. No exemplo que apresentamos, referimo-nos aos dados do registo de um cliente, (que poderia ter sido dado por um formulário html), e criaremos uma file com o nome de identificação do cliente e codificação de password. Existem duas funções para criar files, a sua sintaxe é: int fputs(nome file, string a escrever,[comprimento optional]); int fwrite(nome file, string a escrever,[comprimento optional]); Verá no exemplo que segue, que para criar uma file, terá primeiro de abrir uma file, processar o comando e depois
fechar a file. Veja Abrir File e tabela dos argumentos de controlo das files.
Exemplo:
<?php
$Nome="João Teixeira";
$Morada="R.S.Luis, nº 35";
$CP="2205-682";
$Local="Tramagal";
$Email="jat@joatex.com";
$Alcunha="JoaTex";
$PW="webmaster";
$ID="Cli0001";
if (!($fp=fopen($ID,"w+"))){
echo "Não foi possível criar File";Exit;}
fwrite($fp, "Nome:".$Nome."\n".
"Morada:".$Morada."\n".
"Código Postal:".$CP."\n".
"Local:".$Local."\n".
"Email:".$Email."\n".
"Alcunha:".$Alcunha."\n".
"PassWord:".crypt($PW,CRYPT_STD_DES));
echo "File Criada com Sucesso!";
fclose($fp);
if (!($fileArray = file("$ID"))){ //Ver File
echo "Não foi possível abrir a File!";}
echo "ID = ".$ID."<br>";
for ($i=0; $i<count($fileArray); ++$i){
printf("%s<br>>", $fileArray[$i]);}
?>
A função para abrir files fopen() pode ser usada para abrir files
no servidor ou na internet via http ou ftp. Aqui mostramos a Tabela dos diferentes modos em que a função pode
funcionar. A sua sintaxe é: int fopen(Nome file, string modo); O primeiro argumento da função, (Nome file), é o nome do directório da file ou simplesmente da file se estiver
no directório de trabalho. O segundo argumento, (string modo), é o valor do modo como a file é aberta segundo a tabela abaixo.
• Fechar File A função fclose() é usada para fechar as files abertas. A sua sintaxe é: int fclose(Nome File) Exemplo: É importante fechar uma file aberta para libertar o acesso de outros scripts ou programas que
declamem a sua abertura.
Existem vários métodos para leitura de files. Iremos abordar os principais e mais úteis com a nossa file
dos exemplos anteriores. • int readfile(nome file); O método readfile interpreta a file como um argumento. O método
assume que a file seja uma file texto.
Exemplo:
<?php
if (!($fp=readfile("Cli0001"))){
echo "Não foi possível abrir a File!";}
else {
echo $fp;}
?>
• string fread(nome file,comprimento); O método fread retorna uma string da file aberta com um dado comprimento, se
o fim da file fôr achado antes do comprimento especificado, a função retorna nesse valor.
Exemplo:
<?php
if (!($fp=fopen("Cli0001", "r"))){
echo "Não foi possível abrir a File!";}
else {
$buf=fread($fp,255);
echo $buf;}
fclose($fp);
?>
• string fgetc(nome file); O método fgetc retorna um único caractere avançando uma posição. Em conjunto com
outra função feof(), (file end of file), torna-se muito útil para detectar separadores
de linhas, como veremos no exemplo abaixo apresentado.
Exemplo:
<?php
if (!($fp=fopen("Cli0001","r"))){
echo "Não foi possível abrir a File!";}
else {
while(!(feof($fp))){
$buf=fgetc($fp);
if ($buf==chr(10)){ echo "<br>";continue;}
echo $buf;}}
fclose($fp);
?>
• string fgets(nome file, comprimento); O método fgets retorna uma string de um certo comprimento, até
encontrar um fim de linha, muito útil para extracção de número de linhas ou indexes de strings. No exemplo extraímos 4 linhas
do nosso exemplo.
Exemplo:
<?php
if (!($fp=fopen("Cli0001","r"))){
echo "Não foi possível abrir a File!";}
else {
for ($n=1; $n<=4; ++$n){
$buf=fgets($fp,255);
echo $buf."<br>";}}
fclose($fp);
?>
• Array file(nome file); O método Array retorna a file num array onde cada elemento corresponde
a uma linha. Não usar este método em files grandes pois aumenta desnecessáriamente a memória footprint do interpretaddor do php.
Exemplo:
<?php
if (!($fileArray = file("Cli0001"))){
echo "Não foi possível abrir a File!";}
for ($i=0; $i < count($fileArray); ++$i){
printf("%s<br>", $fileArray[$i]);}
?>
• sizeof(nome file); O método sizeof retorna a dimensão da file. Mostramos uma aplicação muito prática com
a função split, para carregamento de uma tabela.
Exemplo:
<?php
echo '<table width="300" border="1" cellpadding="1" cellspacing="0" align="center">';
echo '<tr><td align="center" colspan="2">Extracção da File Cli0001</td></tr>';
$fp = file("Cli0001");
for($n=0; $n < sizeof($fp); ++$n){
$Line = trim($fp[$n]);
list($Name,$Value) = split(":",$Line);
printf("<tr>\n");
printf("<td>%s</td>\n",$Name);
printf("<td>%s</td>\n",$Value);
printf("</tr>\n");}
echo '</table>';
?>
O php suporta funções para, Copiar, Apagar e Renomear files. Apresentamos
a sua sintaxe e exemplos. • Copiar;
A sintaxe aplicada é: int copy(string local, string destino);
Exemplo:
<?php
if (!($cop = copy("Cli0001","d:\Temp\Cli0001"))){
echo "Não foi possível copiar a File!";}
else {
echo "File copiada com sucesso!";}
?>
• Renomear;
A sintaxe aplicada é: int rename(string nome, string novo nome);
Exemplo:
<?php
if (!($ren = rename("d:\Temp\Cli0001","d:\Temp\Cli0002"))){
echo "Não foi possível Renomear a File!";}
else {
echo "File Renomeada com sucesso!";}
?>
• Apagar;
A sintaxe aplicada é: int unlink(string nome);
Exemplo:
<?php
if (!($apg = unlink("d:\Temp\Cli0001"))){
echo "Não foi possível Apagar a File!";}
else {
echo "File Apagada com sucesso!";}
?>
O php providencia um número de funções com informação adicional sobre files. int file_exists(nome file); Verifica se a file Existe. int fileatime(nome file); Retorna último acesso. int filemtime(nome file); Retorna última modificação. int filesize(nome file); Retorna Tamanho File em Bytes. int filetype(nome file); Retorna tipo File. (Veja Tabela).
boolean is_dir(nome file); Indica se é Pasta Directório. boolean is_executable(nome file); Indica se é Executável. boolean is_file(nome file); Indica se é uma File Normal. boolean is_link(nome file); Indica se é um Link simbólico. boolean is_readable(nome file); Indica se é de Leitura. boolean is_writable(nome file); Indica se é de Escrita.
Exemplo:
<?php
echo "Atributos:<br><br>";
$res=file_exists("Cli0001");
echo "File Existe: ".$res."<br>";
$res=fileatime("Cli0001");
echo "Último Acesso: ".$res."<br>";
$res=filemtime("Cli0001");
echo "Último Modificação: ".$res."<br>";
$res=filesize("Cli0001");
echo "Tamano File: ".$res."<br>";
$res=filetype("Cli0001");
echo "Tipo File: ".$res."<br>";
$res=is_dir("Cli0001");
echo "É Pasta Directório: ".$res."<br>";
$res=is_executable("Cli0001");
echo "É Executável: ".$res."<br>";
$res=is_file("Cli0001");
echo "É File: ".$res."<br>";
$res=is_link("Cli0001");
echo "É Link: ".$res."<br>";
$res=is_readable("Cli0001");
echo "É de Leitura: ".$res."<br>";
$res=is_writable("Cli0001");
echo "É de Escrita: ".$res."<br>";
clearstatcache(); //Limpar memória
?>
Derivado à sua importância, aqui damos um exemplo de como fazer um upload de files para o seu servidor.
No php existem quatro variáveis que suportam a facilidade para esta função. As suas sintaxes são: $HTTP_POST_FILES['file']['name'], Nome Original da File. $HTTP_POST_FILES['file']['type'], Contém o tipo de mime File. $HTTP_POST_FILES['file']['size'], Tamanho da File. $HTTP_POST_FILES['file']['tmp_name'], Nome Temporária da File. No nosso exemplo iremos permitir o upload de Imagens e Files de Text, mostraremos a File e apagaremos a
mesma passado 5 segundos, pois não desejamos o nosso directório cheio de exemplos indesejados.
Iremos usar duas files. Uma Html que é o nosso formulário e outra o nosso código php. upload.htm Formulário html Exemplo: <html> <head> <title>Upload File</title> </head> <body topmargin="0" leftmargin="0"> <h2>UpLoading File</h2> <form action="upload.php" method="post" enctype="multipart/form-data"> Entre Nome Ficheiro: <input type="file" name="userfile" size="40"><br><br> <input type="submit" value="Submeter"> </form> </body> </html> upload.php Nosso código php
Exemplo:
<?php
echo '<title>Uploadfile</title>';
echo '<body leftmargin="0" topmargin="0">';
$nom=$HTTP_POST_FILES["userfile"]["name"];
$tipo=$HTTP_POST_FILES["userfile"]["type"];
if(!(isset($tipo) && strstr($tipo, "image/") || strstr($tipo, "text/"))){
echo '<h4>Só Upload de Imagens e Texto<h4>';
echo '<br><div align="center">';
echo '<input type="button" value="Voltar" class="bot" onclick="history.back()"></div>';Exit;}
printf("<h3>Detalhes Ficheiro UpLoad:</h3>");
printf("Nome: %s <br>", $nom);
printf("Nome Temporário: %s <br>",$HTTP_POST_FILES["userfile"]["tmp_name"]);
printf("Tamanho: %s <br>",$HTTP_POST_FILES["userfile"]["size"]);
printf("Tipo: %s <br>",$tipo);
if(copy($HTTP_POST_FILES["userfile"]["tmp_name"],"".$nom)){
printf("<b>Ficheiro Copiado Com Sucesso.</b><br><br>");}
else{
printf("Erro: <b>Falha na Cópia do Ficheiro</b>");exit;}
if(isset($tipo) && strstr($tipo, "image/")){ //Mostrar Imagens
echo '<img src="'.$nom.'" ALT="" width="200">';}
if(isset($tipo) && strstr($tipo, "text/")){ //Mostrar Texto
if (!($fp=fopen($nom,"r"))){
echo "Não foi possível abrir a File!";}
else {
while(!(feof($fp))){
$buf=fgetc($fp);
if ($buf==chr(10)){ echo "<br>";continue;}
echo $buf;}}
fclose($fp);}
$a=date(s); // Esperar 3 segundos para apagr file
$b=$a+3;
while ($a <= $b){
$a=date(s);}
if ($a > $b){
$res=unlink($nom);}
?>
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||