[PHP] Download Conteúdo URL com cURL

A 16 de Novembro de 2009, categoria PHP, por Carlos Gonçalves
2

É comum na internet, fazer-se o download do conteúdo de uma URL específica, especialmente devido ao aumento da utilização de serviços web e as APIs oferecidas pelo Amazon, Alexa, Digg, etc…
A biblioteca cURL PHP, que muitas vezes vêm nas configurações dos hosts, permite aos programadores web realizar esta tarefa.

O Código PHP

/* Obtém o conteúdo do URL */
function obterConteudo($link)
{
	$curl= curl_init();
	$expira = 5;
        $agente = ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)’;
        curl_setopt($curl, CURLOPT_USERAGENT, $agente);
        curl_setopt($curl, CURLOPT_FAILONERROR, true);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($curl, CURLOPT_AUTOREFERER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
	curl_setopt($curl,CURLOPT_URL,$link);
	curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
	curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,$expira);
	$conteudo = curl_exec($curl);
	curl_close($curl);
	return $conteudo;
}

Como Usar

$conteudo_retornado = obterConteudo('http://cgoncalves.com');

Em alternativa, podes usar a remotamente a função file_get_contents, mas muitos hosts não permitem isso.


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

Editar Conteúdo com MooTools, PHP e MySQL

A 27 de Setembro de 2009, categoria JavaScript, MySQL, PHP, SGBD, por Carlos Gonçalves
6

Hoje em dia, todos os clientes querem ser capazes de editar o próprio conteúdos dos seus sites.
E por que não? Quer dizer, eles têm um orçamento de 500€, e até têm algum conhecimento em HTML / CSS. Ter um site que permita editar blocos de conteúdo, é o sonho de muitos clientes. Despendi algumas horas para desenvolver um sistema in-page para editar blocos de conteúdo.

botao demonstracao   Editar Conteúdo com MooTools, PHP e MySQL

O XHTML

<h1 class="editar" rel="32" title="Article Title">Titulo Editável</h1>
<p class="editar textarea" title="Conteúdo" rel="33">
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
</p>

De notar que qualquer área editável terá que ser da classe editar. O atributo “rel” reflecte a identificação do registo que será actualizado na base de dados. Além disso, se quisermos que o formulário passe a ser uma área de texto em vez de uma entrada de texto, vamos dar o elemento editar à classe textarea.

O CSS

.editar:hover	{ background:#eee; }
.textarea textarea{ height:200px; padding:3px; }
.editar-empty	{ background:#fffea1; padding:20px; border:1px dashed #fc0; }
.box		{ border:1px solid #ccc; padding:5px; display:block; width:95%; }

A “classe” box é aplicada tanto para inputs e textareas.

O MooTools

window.addEvent('domready', function() {
	//encontrar as áreas editáveis
	$$('.editable').each(function(el) {
		//adicionar duplo-clique
		el.addEvent('dblclick',function() {
			var before = el.get('html').trim();
			el.set('html','');
			//substituir o texto actual pelo conteúdo introduzido no input ou na textarea
			if(el.hasClass('textarea'))
			{
				var input = new Element('textarea', { 'class':'box', 'text':before });
			}
			else
			{
				var input = new Element('input', { 'class':'box', 'value':before });
				input.addEvent('keydown', function(e) { if(e.key == 'enter') { this.fireEvent('blur'); } });
			}
			input.inject(el).select();
			input.addEvent('blur', function() {
				val = input.get('value').trim();
				el.set('text',val).addClass(val != '' ? '' : 'editable-empty');

				var url = 'moo-editable-content.php?id=' + el.get('rel') + '&amp;content=' + el.get('text');
				var request = new Request({
					url:url,
					method:'post',
					onRequest: function() {
						alert('making ajax call :: ' + url);
					}
				}).send();
			});
		});
	});
});

Uma vez que o DOM estiver pronto, encontramos todos os elementos com a classe editar. Adicionamos um duplo clique para cada item que insere um elemento de entrada.

O PHP & MySQL

if($_SESSION['is_admin'] &amp;&amp; is_numeric($_POST['id']) &amp;&amp; isset($_POST['content']))
{
	$query = "UPDATE content_table SET content = '".mysql_real_escape_string(stripslashes($_POST['content']))."' WHERE content_id = ".(int)$_POST['id'];
	$result = mysql_query($query,$db_link);
}

Quando o PHP recebe a solicitação de $_POST, valida as credenciais e actualiza a Base de Dados com o novo conteúdo. Simples! Clica aqui para veres em acção.

botao demonstracao   Editar Conteúdo com MooTools, PHP e MySQL

Algumas notas sobre o código.
Em primeiro lugar, este sistema não foi criado para ser utilizado num site grande, pois exige que o conteúdo editável seja colocado dentro de uma base de dados com um ID único.
Segundo, a textarea não possui um editor WYSIWYG ligada a ela de modo que o cliente precisa ter algum conhecimento de HTML, se eles queriam adicionar links e tal.

Opinem! Digam de vossa justiça.


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

[CSS] Optimizar o Conteúdo do Site para Impressão

A 26 de Julho de 2009, categoria CSS, por Carlos Gonçalves
1

Como vimos no post anterior, [CSS] Optimizar a Estrutura do Site para Impressao, agora vamos optimizar o conteúdo para impressão, e uma vez que já isolámos parte do conteúdo da página, podemos avançar com a optimização do seu conteúdo para impressão. Lembra-te que incluímos o nosso CSS com “all”, o que significa que as propriedades vão transitar para impressão. Essencialmente, o que vamos fazer é reajustar as nossas definições de impressão. Legibilidade é o nosso objectivo principal.

CSS

Dicas

Ajustar a propriedade Head

Se optimizaste o teu site para para os motores de pesquisa, provavelmente estás a utilizar a tag “h” ao máximo.
Percebe que vais ter opções de cores quando o site está em modo de impressão – poucas pessoas imprimem a cores.
Recomendo que limites o teu heading entre “h1″ e “h3″. Depois de três posições, o resultado impresso irá perder alguma organização.
Padding, margin, border, e font-size serão importantes. Certifica-te que a tag “h1″ é grande o suficiente para facilmente perceber-se que é o assunto/titulo da página a imprimir.
Para a tag “h2″, recomendo utilizar a propriedade bottom-border para estabelecer a tag como o segundo heading.
O “h3″ será do mesmo tamanho ou ligeiramente maior do que o texto. Todas as tags estarão a negrito. Para tornar as coisas mais fáceis, recomendo utilizar margin e padding a 0 (ZERO), pois as duas propriedades controlam a mesma função para a impressão, e será mais fácil utilizar apenas um.
Recomendo que utilizem muito pouca margem abaixo do título, com excepção para a tag “h1″.

Eu uso o seguinte:

h1,h2,h3	{ font-weight:bold; }
h1		{ font-size:24px; }
h2		{ font-size:16px; border-bottom:1px solid #ccc; padding:0 0 2px 0; margin:0 0 5px 0; }
h3		{ font-size:13px; margin:0 0 2px 0; }

Ajustar os Parágrafos

A maioria das pessoas não modificam muito os parágrafos, mas existem algumas propriedades que podes optimizar.
O line-height, padding, e margin são as propriedades mais importantes. Também recomendo a configuração da margem inferior do parágrafo para um valor superior ao line-height. Por fim, ajustar o tamanho da fonte a um rácio razoável com os cabeçalhos e utilizar um padrão font-family, isto se já não o estiveres a utilizar. Eu uso o seguinte:

p { font-size:11px; font-family:times new roman, serif; margin:0 0 18px 0; }

Formatar os Links

A impressão não permite a formatação de links como vemos no monitor, então podemos fazer isto de forma simples, bastando para isso adicionar text-decoration:

a		{ text-decoration:underline; }

Formatação Avançada de Links

Chamo a este método avançado por algumas razões. Primeiro, porque à partida estás a confiar que o CSS não é suportado por todos os browsers – aqui o nosso adversário é o Internet Explorer 6, pois será completamente ignorado pelo IE6 e inferiores. Em segundo lugar, alguns programadores não gostam da ideia de conteúdo gerado pelo CSS. Puristas, por favor, ignorem esta secção.

Mostrar ao utilizador um link pode não ser suficientemente bom.
E se quiseres que eles saibam o URL do link? Basta adicionar o seguinte:

a:link:after,
a:visited:after { content: "(" attr(href) ")"; font-size: 90%; }

Ajustar qualquer Classe Personalizada

Olha para as tuas classes de CSS para teres a certeza que nenhuma das outras configurações desconfigurem a página.
O teu site está agora pronto para ser impresso!


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

Procuras alguma coisa?

Utiliza o formulário abaixo para pesquisares no meu site:


Ainda não encontraste o que procuravas? Deixa um comentário num post ou contacta-me para que te possa ajudar!

Arquivos

Ordenado de forma cronológica...