Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de PHP
SEÇÕES
Manuais relacionados
+Workshop de PHP
Categorias
+Scripts em PHP

Índice do Manual Workshop de PHP
+ Gestão de ficheiros através de PHP
+ Upload de ficheiros com PHP
+ Verificar a existência de uma URL
+ Leitura sequencial de ficheiros com PHP
+ Escritura em ficheiros com PHP
+ Gestão de directórios com PHP
+ Função que escreve um campo select com valores de uma base de dados
+ Receber o último ID de uma inserção com PHP e MySQL
+ Recolher dados de um Select Multiple com PHP
+ Enviar e-mails pelo PHP
+ Validar um endereço email em PHP
+ Loop para receber todas as variáveis por POST em PHP
+ Enviar um formulário por mail com PHP
+ Paginação de resultados com PHP e MySQL
+ Usuários ativos com PHP
+ Listas de elementos com cores alternas em PHP
+ Programas de livre distribuição em PHP
+ phpMyAdmin
+ Formatação de uma cadeia
+ Cálculo dos dias de um mês em PHP
+ Contador simples para páginas PHP
+ Avaliações dos usuários em PHP
+ Rastrear os robôs de buscadores
+ Recomendar um site usando PHP
+ Criação de um log de erros
+ Comprimir página PHP
+ Contador PHP com imagens
+ Editor PHP Maguma Studio
+ SiteMaps de Google em PHP
+ Teste de velocidade de conexão à Internet
+ Mostrar Conteúdo de acordo com o país em PHP
+ Conteúdos em banco de dados com PHP
+ Problemas com as datas em timestamp Unix de PHP
+ Contar o número de linhas e caracteres em arquivo PHP
+ Transformação Doc, Odt ou Rtf para PDF
+ Preencher um arquivo RTF e gerar o PDF
+ Converter arquivos ods ou xls para pdf
+ PHP isam, ferramenta Web para Arquivos Planos
+ Undefined variable ou Undefined index
+ Agregar carinhas ao sistema
+ Paginator, script para paginação com PHP e MySQL
+ Executar scripts PHP automaticamente através do cron com CURL
+ Uso do FTP com PHP
+ Instalação de One or Zero PHP Helpdesk
+ Portal PHP Nuke
+ Gerando feed RSS de notícias em PHP
+ Blasten blt-SEARCH 1.0.5
+ Classes e Objetos em PHP
+ Recuperando a qualidade de uma imagem JPEG
+ Comprovar se existe o domínio do correio
+ Tutorial de BBCode
+ Função em PHP para o cálculo de minutos transcorridos em duas horas dadas
+ Criação de gráficos em PHP com JpGraph
+ Gerar documentos de Word RTF com PHP
+ Introdução ao Symfony
+ Arredondar decimais em PHP
+ Envio de boletins a e-mails de um banco de dados MySQL
+ Htaccess e páginas dinâmicas
+ Criando imagens com PHP
+ Programar um buscador com PHP e MySQL
+ Loop para receber todos os dados de uma fila de um recordset com PHP
+ Criação de BBcode em PHP
+ Incluir feeds em sua web em 5 passos
+ Calcular dias entre duas datas com PHP
+ Exemplo de conexão com banco de dados Access em PHP
+ Utilizar Curl para copiar uma imagem de uma web em nosso disco rígido
+ Controle da saída em PHP
+ Controle de saída em PHP II
+ Mostrar código PHP de um arquivo com cores ressaltadas
+ Propagar o identificador de sessão de PHP por cookies ou URL
+ Como converter páginas com extensão .PHP à extensão que desejar

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net
- Codigo Fonte.net


Utilizar Curl para copiar uma imagem de uma web em nosso disco rígido

Vamos ver um exemplo de utilização da biblioteca CURL para copiar uma imagem que está em uma página web ao nosso disco rígido.


Vamos realizar um exemplo complexo de utilização de PHP, no qual nos conectamos com um servidor web para receber um arquivo de imagem que está hospedado em tal servidor. Para especificar a imagem que queremos extrair utilizamos a URL e logo especificamos outra rota dentro de nosso disco rígido, onde copiaremos a imagem que recebemos de tal URL.

Eu utilizei este código para facilitar a migração automática de um web site. O site novo tinha uma estrutura diferente e por isso tinham que receber as imagens para salvá-las em outros diretórios. Com esta função, e outras similares, pude extrair todas as imagens do site antigo e colocá-las nos diretórios corretos no site novo.

Como dizia, vamos a utilizar CURL para realizar esta tarefa. Com certeza existem outras maneiras de realizá-la, porém esta me pareceu bastante prática. Curl é uma biblioteca para trabalho e tratamento de informação em URLs, ou seja, para fazer coisas com endereços URL, como explorar o conteúdo que têm, copiar o conteúdo a outros lugares, comprovar a existência de uma URL. Tenho que admitir que não manejo muito a biblioteca Curl, mas poderia dizer que é bastante potente e complexa.

CURL se encontra em PHP

Segundo a informação que tenhamos de PHP teremos disponíveis, ou não, as funções da biblioteca CURL. A melhor maneira de saber se dispomos de Curl em nossa instalação PHP é invocar uma de suas funções. Se nos mostra um erro de função não existente, é que não temos possibilidade de usar Curl. O próprio manual de PHP especifica o que devemos fazer para poder utilizar as bibliotecas.

Para poder usar estas funções, deve-se compilar PHP adicionando o parâmetro --with-curl[=DIR], onde DIR aponta ao diretório que contém os diretórios lib e include da biblioteca. No diretório include, deve existir uma pasta chamada "curl" e que contém os arquivos easy.h e curl.h. Ademais, deve existir um arquivo chamado libcurl.a no diretório "lib". A partir da versão de PHP 4.3.0 se pode configurar que PHP faça uso de CURL para o manejo das conexões com URLs, mediante a opção --with-curlwrappers.

Nota para os usuários de plataformas Windows: Para ativar este módulo em ambientes Windows, deve-se copiar os arquivos libeay32.dll e ssleay32.dll que se encontram na pasta DLL do diretório PHP/Win32 à pasta SYSTEM de Windows, que normalmente se encontra em C:\WINNT\SYSTEM32 ou C:\WINDOWS\SYSTEM.

Não obstante, em meu computador local utilizo Easy PHP, que é um pacote que instala o conjunto Apache-PHP-MySQL em seu sistema Windows, sem que tenha que fazer nada, nem aprender a configurar os distintos sistemas. Easy PHP não dispõe por padrão de suporte para Curl, porém mudando uma linha do arquivo de configuração de PHP (o arquivo php.ini) poderemos dar suporte a Curl. A linha teoricamente é:

;extension=php_curl.dll

Esta linha à princípio está comentada, por isso começa por ";". Simplesmente há que tirar o "ponto e vírgula" para que EasyPHP disponha de suporte Curl. Mesmo que não utilize EasyPHP prove tirar o comentário desta linha, se é que você na dispõe de suporte para CURL.

Função para obter uma imagem de uma URL determinada

Vamos tratar já do objetivo final do artigo, que é trazer uma imagem hospedada em uma web ao nosso disco rígido. Para isso, criamos uma função que recebe dois parâmetros. O primeiro é a URL da imagem que desejamos obter e o segundo é o nome do arquivo que queremos gerar no disco rígido, onde copiaremos a imagem. O nome do arquivo destino é relativo ao documento, podendo indicar uma rota relativa, composta por vários diretórios e um nome de arquivo.

function recebe_imagem ($url_origem,$arquivo_destino){
$minha_curl = curl_init ($url_origem);
$fs_arquivo = fopen ($arquivo_destino, "w");
curl_setopt ($minha_curl, CURLOPT_FILE, $fs_arquivo);
curl_setopt ($minha_curl, CURLOPT_HEADER, 0);
curl_exec ($minha_curl);
curl_close ($minha_curl);
fclose ($fs_arquivo);
}


Nesta função há que registrar uma sessão CURL, com curl_init($url_origem), em onde passamos a URL a qual desejamos acessar.

Logo, utilizamos as funções do sistema de arquivos de PHP para criar um novo arquivo no disco rígido do computador. Se observarmos, se indica o arquivo destino e o parâmetro "w" que quer dizer que a conexão com o arquivo é para escritura.

Em seguida, indicamos um par de opções na sessão CURL.

curl_setopt ($minha_curl, CURLOPT_FILE, $fs_arquivo);
curl_setopt ($minha_curl, CURLOPT_HEADER, 0);

A mais importante é a primeira, na que se indica o valor CURLOPT_FILE, onde se atribui o arquivo no qual se salvará os dados da URL. O parâmetro $fs_arquivo deve ser um recurso de tipo stream ou fluxo de dados. Neste caso é o arquivo destino, conectado com o sistema de arquivos do servidor anteriormente na mesma função.

A segunda opção definida faz com que o cabeçalho não se inclua na saída.

Para continuar, executamos a conexão CURL com curl_exec() e por último, se fecham tanto a conexão CURL como o arquivo onde salvamos a imagem.

Conclusão

CURL é uma biblioteca muito potente. Esta é só uma das utilidades da biblioteca, que pode servir de exemplo para entender o uso e dar pé a outras utilidades interessantes. Poderia ter complicado um pouco o script simplesmente comprovando que a URL indicada no parâmetro é correta ou realizando outros tipos de ações de validação ou tratamento da imagem recebida na URL.

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Workshop de PHP

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em Scripts em PHP


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
Acrescentar um comentário do artigo Acrescentar um comentário do artigo



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites