PHP
Aula 4
Prof. Naércio Filho
Técnico em Informática
www.funpar.ufpr.br:8080/naercio
PHP – SUMÁRIO
 Upload de Arquivos
– $_FILES
 Manipulação de Arquivos
– Abrir arquivos no servidor
– Ler / escrever
PHP – Upload de Arquivos
 Envio de Arquivos para o Servidor.
 Consistem em um formulário html e um script para
manipular esse arquivo.
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Arquivo:
<input type="file" name="arquivo" id="arquivo" />
<br>
<input type="submit"/>
</form>
</body>
</html>
PHP – Upload de Arquivos
 Detalhes do Formulário
– A tag HTML <form> precisa ter uma opção content-type
com o valor "multipart/form-data" para o arquivo ser
enviado
– a tag <input> precisa ser especificada do tipo file type="file"
– o upload de arquivos pode ser uma grande brecha de
segurança num sistema, por isso é recomendado que
apenas os usuários conhecidos possam fazer upload
PHP – Upload de Arquivos
 No arquivo que recebe o formulário, devemos usar o
array (bidimensional) $_FILES, este irá conter os
dados do arquivo que foi enviado para o servidor.
<?php
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br />";
} else {
echo "Arquivo: " . $_FILES["arquivo"]["name"] . "<br />";
echo "Tipo: " . $_FILES["arquivo"]["type"] . "<br />";
echo "Tamanho: " . ($_FILES["arquivo"]["size"] / 1024) . " Kb<br />";
echo "Arquivo Temporário: " . $_FILES["arquivo"]["tmp_name"];
}
?>
PHP – Upload de Arquivos
 O array $_FILES é indexado da seguinte forma:
– o primeiro índice é igual ao name dado ao input no
formulário
– no segundo nível ele esta indexado pelas propriedades do
arquivo "name", "type", "size", "tmp_name" or "error"
$_FILES["arquivo"]["name"] - O nome do Arquivo.
$_FILES["arquivo"]["type"] - O Tipo do Arquivo.
$_FILES["arquivo"]["size"] - O Tamanho do Arquivo em Bytes.
$_FILES["arquivo"]["tmp_name"] - O nome temporario dado ao arquivo no servidor.
$_FILES["arquivo"]["error"] - A Mensagem de erro caso exista.
PHP – Upload de Arquivos
 Após feito o upload é necessário copiar o arquivo temporário,
para seu real destino, porque senão será excluído assim que
terminar a execução do script
<?php
if ($_FILES["arquivo"]["error"] > 0) {
echo "Codigo de Erro: " . $_FILES["arquivo"]["error"] . "<br />";
} else {
if (file_exists("upload/" . $_FILES["arquivo"]["name"])) {
echo $_FILES["arquivo"]["name"] . " Arquivo já existente. ";
} else {
move_uploaded_file($_FILES["arquivo"]["tmp_name"],
"upload/" . $_FILES["arquivo"]["name"]);
echo "Armazenado em: " . "upload/" . $_FILES["arquivo"]["name"];
}
}
?>
PHP – Upload de Arquivos
 como medida de segurança podem ser
adicionados filtros pelo tipo de arquivo e pelo
tamanho.
<?php
if (($_FILES["arquivo"]["type"] == "image/gif")
|| ($_FILES["arquivo"]["type"] == "image/pjpeg")
&& ($_FILES["arquivo"]["size"] < 20000)) {
// codigo de cópia
} else {
echo "Arquivo inválido";
}
?>
PHP – Manipulando Arquivos
 Manipulando Arquivos no Servidor
 Em alguns casos há necessidade de ler ou
escrever em um arquivo no servidor
– fopen() é usado para abrir um arquivo
 seu primeiro parâmetro é o nome do arquivo e o
segundo o modo como esse arquivo será aberto.
<?php
$file=fopen("test.txt","r");
?>
PHP – Manipulando Arquivos
 Modos de abrir um arquivo
 r - Somente Leitura, a partir do inicio
 r+ - Modo de Leitura e Escrita, a partir do inicio
 w - Somente escrita, abre e limpa um arquivo ja existente, ou cria um
novo arquivo se este nao existir
 w+ - Modo de Leitura e Escrita, abre e limpa um arquivo ja existente,
ou cria um novo arquivo se este nao existir
 a - Modo de escrita, e começa a escrever a partir do final do arquivo,
ou cria um novo arquivo se este nao existir
 a+ - Modo de Leitura e Escrita, e começa a escrever a partir do final
do arquivo, ou cria um novo arquivo se este nao existir
 x - Somente Escrita, cria um novo arquivo, retorna False caso o
arquivo ja exista
 x+ - Modo de Leitura e Escrita, cria um novo arquivo, retorna False
caso o arquivo ja exista
 Se fopen() nao conseguir abrir o arquivo, retorna 0 (false)
PHP – Manipulando Arquivos
 Após utilizar um arquivo é necessário fecha-
lo, para isso usa-se fclose();
<?php
$file = fopen("test.txt","r");
//código a ser executado
fclose($file);
?>
PHP – Manipulando Arquivos
 Lendo um arquivo é possível saber quando
este não contém mais dados, usando feof()
(end-of-file)
<?php
$file = fopen("test.txt", "r");
while(!feof($file)){
echo fgets($file). "<br />";
}
fclose($file);
?>
PHP – Manipulando Arquivos
 Para ler o conteúdo do arquivo linha por
linha usa-se fgets(), em cada interação será
selecionada uma linha do arquivo
<?php
$file = fopen("test.txt", "r");
while(!feof($file)){
echo fgets($file). "<br />";
}
fclose($file);
?>
PHP – Manipulando Arquivos
 podemos também ler um arquivo caractere
por caractere com a função fgetc();
<?php
$file=fopen("test.txt","r");
while (!feof($file)){
echo fgetc($file);
}
fclose($file);
?>
PHP – Manipulando Arquivos
 os dados podem ser escritos no arquivo
usando fwrite();
<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Escrevendo!");
fclose($file);
?>
PHP – Manipulando Arquivos
 para excluir um arquivo, usa-se unlink();
<?php
$file = "test.txt";
if (!unlink($file)) {
echo ("Erro deletando $file");
} else {
echo ("Deletado $file");
}
?>
PHP – Exercícios
 1 - montar um formulário/script para fazer o
upload de uma imagem. e em seguida
mostrar a imagem e seu nome.
PHP – Exercícios
 2 - usando a manipulação de arquivos, criar
um arquivo de texto qualquer, abrir e ler seu
conteúdo, e mostrar na tela.
PHP – Exercícios
 3 - escrever em um arquivo alguma coisa.
PHP – Exercícios
 4 - montar um formulário, escrever num
arquivo os dados enviados por esse
formulário, e então mostrar na tela.
PHP – Exercícios
 5 - montar um arquivo de Texto com os meses do
ano, fazer upload desse arquivo, montar uma função
para ler esse arquivo e armazenar os dados em um
vetor (manter a função num arquivo para fazer um
include) em seguida mostrar na tela todas as
posições do Array usando o foreach.
(para entregar, enviar por email para naerciof@ufpr.br
ou naercio@funpar.ufpr.br)

Aula5

  • 1.
    PHP Aula 4 Prof. NaércioFilho Técnico em Informática www.funpar.ufpr.br:8080/naercio
  • 2.
    PHP – SUMÁRIO Upload de Arquivos – $_FILES  Manipulação de Arquivos – Abrir arquivos no servidor – Ler / escrever
  • 3.
    PHP – Uploadde Arquivos  Envio de Arquivos para o Servidor.  Consistem em um formulário html e um script para manipular esse arquivo. <html> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Arquivo: <input type="file" name="arquivo" id="arquivo" /> <br> <input type="submit"/> </form> </body> </html>
  • 4.
    PHP – Uploadde Arquivos  Detalhes do Formulário – A tag HTML <form> precisa ter uma opção content-type com o valor "multipart/form-data" para o arquivo ser enviado – a tag <input> precisa ser especificada do tipo file type="file" – o upload de arquivos pode ser uma grande brecha de segurança num sistema, por isso é recomendado que apenas os usuários conhecidos possam fazer upload
  • 5.
    PHP – Uploadde Arquivos  No arquivo que recebe o formulário, devemos usar o array (bidimensional) $_FILES, este irá conter os dados do arquivo que foi enviado para o servidor. <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Arquivo: " . $_FILES["arquivo"]["name"] . "<br />"; echo "Tipo: " . $_FILES["arquivo"]["type"] . "<br />"; echo "Tamanho: " . ($_FILES["arquivo"]["size"] / 1024) . " Kb<br />"; echo "Arquivo Temporário: " . $_FILES["arquivo"]["tmp_name"]; } ?>
  • 6.
    PHP – Uploadde Arquivos  O array $_FILES é indexado da seguinte forma: – o primeiro índice é igual ao name dado ao input no formulário – no segundo nível ele esta indexado pelas propriedades do arquivo "name", "type", "size", "tmp_name" or "error" $_FILES["arquivo"]["name"] - O nome do Arquivo. $_FILES["arquivo"]["type"] - O Tipo do Arquivo. $_FILES["arquivo"]["size"] - O Tamanho do Arquivo em Bytes. $_FILES["arquivo"]["tmp_name"] - O nome temporario dado ao arquivo no servidor. $_FILES["arquivo"]["error"] - A Mensagem de erro caso exista.
  • 7.
    PHP – Uploadde Arquivos  Após feito o upload é necessário copiar o arquivo temporário, para seu real destino, porque senão será excluído assim que terminar a execução do script <?php if ($_FILES["arquivo"]["error"] > 0) { echo "Codigo de Erro: " . $_FILES["arquivo"]["error"] . "<br />"; } else { if (file_exists("upload/" . $_FILES["arquivo"]["name"])) { echo $_FILES["arquivo"]["name"] . " Arquivo já existente. "; } else { move_uploaded_file($_FILES["arquivo"]["tmp_name"], "upload/" . $_FILES["arquivo"]["name"]); echo "Armazenado em: " . "upload/" . $_FILES["arquivo"]["name"]; } } ?>
  • 8.
    PHP – Uploadde Arquivos  como medida de segurança podem ser adicionados filtros pelo tipo de arquivo e pelo tamanho. <?php if (($_FILES["arquivo"]["type"] == "image/gif") || ($_FILES["arquivo"]["type"] == "image/pjpeg") && ($_FILES["arquivo"]["size"] < 20000)) { // codigo de cópia } else { echo "Arquivo inválido"; } ?>
  • 9.
    PHP – ManipulandoArquivos  Manipulando Arquivos no Servidor  Em alguns casos há necessidade de ler ou escrever em um arquivo no servidor – fopen() é usado para abrir um arquivo  seu primeiro parâmetro é o nome do arquivo e o segundo o modo como esse arquivo será aberto. <?php $file=fopen("test.txt","r"); ?>
  • 10.
    PHP – ManipulandoArquivos  Modos de abrir um arquivo  r - Somente Leitura, a partir do inicio  r+ - Modo de Leitura e Escrita, a partir do inicio  w - Somente escrita, abre e limpa um arquivo ja existente, ou cria um novo arquivo se este nao existir  w+ - Modo de Leitura e Escrita, abre e limpa um arquivo ja existente, ou cria um novo arquivo se este nao existir  a - Modo de escrita, e começa a escrever a partir do final do arquivo, ou cria um novo arquivo se este nao existir  a+ - Modo de Leitura e Escrita, e começa a escrever a partir do final do arquivo, ou cria um novo arquivo se este nao existir  x - Somente Escrita, cria um novo arquivo, retorna False caso o arquivo ja exista  x+ - Modo de Leitura e Escrita, cria um novo arquivo, retorna False caso o arquivo ja exista  Se fopen() nao conseguir abrir o arquivo, retorna 0 (false)
  • 11.
    PHP – ManipulandoArquivos  Após utilizar um arquivo é necessário fecha- lo, para isso usa-se fclose(); <?php $file = fopen("test.txt","r"); //código a ser executado fclose($file); ?>
  • 12.
    PHP – ManipulandoArquivos  Lendo um arquivo é possível saber quando este não contém mais dados, usando feof() (end-of-file) <?php $file = fopen("test.txt", "r"); while(!feof($file)){ echo fgets($file). "<br />"; } fclose($file); ?>
  • 13.
    PHP – ManipulandoArquivos  Para ler o conteúdo do arquivo linha por linha usa-se fgets(), em cada interação será selecionada uma linha do arquivo <?php $file = fopen("test.txt", "r"); while(!feof($file)){ echo fgets($file). "<br />"; } fclose($file); ?>
  • 14.
    PHP – ManipulandoArquivos  podemos também ler um arquivo caractere por caractere com a função fgetc(); <?php $file=fopen("test.txt","r"); while (!feof($file)){ echo fgetc($file); } fclose($file); ?>
  • 15.
    PHP – ManipulandoArquivos  os dados podem ser escritos no arquivo usando fwrite(); <?php $file = fopen("test.txt","w"); echo fwrite($file,"Escrevendo!"); fclose($file); ?>
  • 16.
    PHP – ManipulandoArquivos  para excluir um arquivo, usa-se unlink(); <?php $file = "test.txt"; if (!unlink($file)) { echo ("Erro deletando $file"); } else { echo ("Deletado $file"); } ?>
  • 17.
    PHP – Exercícios 1 - montar um formulário/script para fazer o upload de uma imagem. e em seguida mostrar a imagem e seu nome.
  • 18.
    PHP – Exercícios 2 - usando a manipulação de arquivos, criar um arquivo de texto qualquer, abrir e ler seu conteúdo, e mostrar na tela.
  • 19.
    PHP – Exercícios 3 - escrever em um arquivo alguma coisa.
  • 20.
    PHP – Exercícios 4 - montar um formulário, escrever num arquivo os dados enviados por esse formulário, e então mostrar na tela.
  • 21.
    PHP – Exercícios 5 - montar um arquivo de Texto com os meses do ano, fazer upload desse arquivo, montar uma função para ler esse arquivo e armazenar os dados em um vetor (manter a função num arquivo para fazer um include) em seguida mostrar na tela todas as posições do Array usando o foreach. (para entregar, enviar por email para naerciof@ufpr.br ou naercio@funpar.ufpr.br)