PHPThumb – Your GD installation does not support JPG image types

Category : PHP, Programação

Uma solução rápida para quem utiliza a PHPThumb em seus projetos e de uns tempos pra cá vem se deparando com mensagens semelhantes a esta:

Fatal error: Uncaught exception 'Exception' with message 'Your GD installation does not support JPG image types' in '(...)\phpthumb\ThumbBase.inc.php:165 Stack trace: #0 (...)\phpthumb\GdThumb.inc.php(1081): ThumbBase->triggerError('Your GD install...') #1 (...)\phpthumb\GdThumb.inc.php(101): GdThumb->verifyFormatCompatiblity() #2 (...)\phpthumb\ThumbLib.inc.php(127): GdThumb->__construct('D:/xampp/htdocs...', Array) #3 (...)\phpthumb\ThumbBase.inc.php on line 165

A solução é mais simples do que você pode imaginar. Se você tem certeza que sua biblioteca GD está instalada corretamente, tente o seguinte:

No arquivo GdThumb.lib.php, procure por volta da linha 1060 pelo método verifyFormatCompatiblity(). Substitua as linhas:

case 'JPG':
case 'PNG':
$isCompatible = $gdInfo[$this->format . ' Support'];
break;

Pelo código abaixo:

case 'JPG':
$isCompatible = (isset($gdInfo['JPG Support'])) ? $gdInfo['JPG Support'] : $gdInfo['JPEG Support'];
break;
case 'PNG':
$isCompatible = $gdInfo['PNG Support'];
break;

O método completo deverá ficar assim:

	protected function verifyFormatCompatiblity ()
	{
		$isCompatible 	= true;
		$gdInfo			= gd_info();

		switch ($this->format)
		{

			case 'GIF':
				$isCompatible = $gdInfo['GIF Create Support'];
				break;
      case 'JPG':
        $isCompatible = (isset($gdInfo['JPG Support'])) ? $gdInfo['JPG Support'] : $gdInfo['JPEG Support'];
        break;
      case 'PNG':
        $isCompatible = $gdInfo['PNG Support'];
        break;
      default:
				$isCompatible = false;
		}

		if (!$isCompatible)
		{
			$this->triggerError('Your GD installation does not support ' . $this->format . ' image types');
		}
	}

Salve o arquivo e teste.

Eclipse e o problema do AltGR

2

Category : Programação, Tutoriais

Alguns laptops fabricados recentemente tem um layout de teclado um pouco diferente dos desktop, onde o sinal de interrogação é feito pressionando-se a tecla AltGR + W. Quem tem um teclado com este layout corre um grande risco de ter problemas para programar, principalmente em PHP, dentro de alguns IDE’s baseados no Eclipse (Aptana, Flex, Zend, etc).

O problema acontece que, ao pressional o atalho AltGR+W, nada aparece. Isso porque o Eclipse tem, por padrão, um atalho associal ao comando CTRL + ALT + W. Se você testar no bloco de notas a combinação CTRL + ALT + W, verá que o resultado é o mesmo que AltGR + W. Quando pressionamos essa sequencia de teclas dentro do Eclipse, ele simplesmente irá entender que estamos tentando acionar o atalho, e ignora a impressão do caractere gráfico na tela.

Para resolver esse problema, abra o Eclipse (ou o IDE baseado nele), vá no menu “Window”, “Preferences”. No grupo “General”, pocure pela seção “Keys”. Altere o atalho associado a opção “Show Properties” para qualquer outro, ou simplesmente apague ele. Aplique as modificações e pronto! Problema resolvido.

Eclipse-Prob-AltGR

ASP.NET FORMS Authentication

Category : ASP.net, C Sharp, Programação, Tutoriais

Fonte: http://www.bufaloinfo.com.br/artigos/artigo1510.asp

O ASP.NET, conforme mencionamos em artigos anteriores, realiza por conta própria muitas tarefas que antes tinhamos que programar manualmente.

Uma destas tarefas é o controle de login. No ASP tradicional são necessários os seguintes passos para realizar o controle de login :

→ Continue

Ponto-netando e cê-sharpeando…

Category : .Net Framework, C Sharp, Programação

Desde que foi lançado o primeiro beta do .net framework, eu venho beiradeando essas ribanceiras e observando de longe toda a movimentação desse conceito de programação lançado pela Microsoft. A idéia é boa, mas como eu nunca fui muito fã de ASP e sempre defendi o PHP com unhas e dentes, não dei muita bola para o que estava acontecendo.

Há umas semanas atrás, fui visitar um cliente ao qual presto consultoria, e ele me mostrou um sistema que ele havia adquirido. Era um sistema de controle escolar para desktops, onde ele poderia lançar notas de alunos, registrar todo o movimento financeiro, entre muitas outras funções. Até aí nada de mais. O que me interessou foi quando ele me mostrou que tudo aquilo ainda poderia ser disponibilizado via internet. Resolvi investigar o sistema, e descobri que ele foi programado usando essa tecnologia .net. Muito interessante!

Pesquisei mais afundo, e então vi que a idéia da Microsoft de “frameworkar” o desenvolvimento desktop e web parece funcionar muito bem! O uso do .Net tira uma grande carga do ombro do programador, e torna a progamação tanto desktop, quanto web muito mais versátil!

Eu analisei os prós e contras, e para alguns projetos que pretendo tocar, acredito que a solução .Net vai me ajudar bastante, já que um deles é justamente um projeto de integração entre software desktop e interface web. Eu estava pensando em utilizar Delphi para o Desktop e PHP com o framework Code Igniter para a a interface Web. Até agora, nada decidido ainda. Estou buscando agora saber mais sobre o .net, e estudando o C#. Já até consegui fazer uma lista de tarefas em C# seguindo um tutotial no site Asp.net.

Para me aprofundar mais, vou lançar daqui algumas semanas um projeto que já há tempos eu tenho idealizado. Será uma boa oportunidade de colocar em prática os conhecimentos adquiridos com o C# e o .net!

Simplificando…

1

Category : Programação

Programo em PHP há 6 anos. Me lembro que, quando estudava os primeiros comandos e aprendia a sintaxe do if, lí em algum lugar uma maneira de preencher os valores de um formulário, desde que esses valores existissem. Seria algo mais ou menos assim:

<form id=”form1″ name=”form1″ method=”post” action=”cadastrar.php”>

<label for=”nome”>Nome:</label><br />

<input id=”nome” name=”nome” type=”text” value=”<?php if(isset($nome)){ print($nome); } ?>” />

<label for=”nome”>Idade:</label><br />

<input id=”idade” name=”idade” type=”text” value=”<?php if(isset($nome)){ print($idade); } ?>” />

</form>

Perceberam a lógica do formulário acima? Caso exista a variável $nome, ele irá predefinir o valor do input com a variável $nome. Isso pode ser muito útil para se fazer formulários que devem editar dados já existentes.

É duro quando as vezes descobrimos soluções simples, que facilitam bastante  a nossa vida, e então pensamos “uau! como eu não pensei nisso antes??”.

No PHP existe um operador que, por muito é esquecido pela maioria dos programadores. Trata-se to @.

O que ele faz de tão importante? Simples: Ele apenas diz pro interpretador do PHP “calar a boca”, ou em termos mais polidos, ele indica ao interpretador que, mesmo que o comando que precede a ele retorne um erro (não importa qual o grau do erro), ele não deverá ser exibido ao usuário. Já vi muito esse operador aplicado em conjunto com funções de acesso a banco de dados

$conn=@mysql_connect($hostname, $username, $pass);

Com isso, se a função mysql_connect() retornar algum erro, esse não será exibido, graças ao @ que precede o comando.

Desde o inicio, eu sempre conheci esse operador, mas nunca me emprenhei a procurar uma maneira mais útil de empregá-lo nos meus projetos. Esta semana, enquanto estudava um método de utilizar Ajax para validar meus formulários, vi uma maneira bastante criativa de utilizar o @ para verificar a existência de uma variável.

Se eu utilizasse, em vez da maneira tradicional, a seguinte forma:

<input id=”idade” name=”idade” type=”text” value=”<?= $idade;  ?>” />

Isso me daria, sem sombra de dúvidas, um código muito mais limpo e facil de compreender. Mas traria um problema: Caso a variável $idade não tenha sido definida, ele iria preencher o valor do campo com um erro de “variable is not set”. Qual seria a solução? Usar o metodo de validação de variável como fiz acima? Ou talvez criar um código que setasse a variável $idade com um valor em branco no inicio do formulário?

Não. Existe uma forma muuuuito mais simples: Utilize o operador @!

<input id=”idade” name=”idade” type=”text” value=”<?= @$idade;  ?>” />

Caso a variável $idade estiver setada, o seu valor será impresso. Caso contrário, o operador @ irá se encarregar de ocultar a mensagem de erro gerada, nada será impresso, e seu código ficará muito mais limpo! ;-)

Fácil ou não?

Ignição: Codificar!

Category : Code Igniter, Programação


Há algum tempo eu estou me deliciando com as facilidades oferecidas pelos frameworks. Comecei a estudar PHP desde 2004, mas comecei a me aprofundar mais apenas em 2005 com o lançamento do carro-chefe dos meus projetos para web. Desde então eu venho estudando vários métodos, e há pouco mais de um ano conheci as facilidades que o framework oferece. Já passei pelo CakePHP, Zend Framework, e finalmente parei no Code Igniter.

O Code Igniter é uma verdadeira mão na roda para aqueles que não gostam de perder tempo “reinventando a roda”. Trata-se de um framework que trabalha com conceitos Model-View-C ontroller (MVC).

Model-view-controller (MVC) é um padrão de arquitetura de software. Isso significa que ele separa o processamento dos dados da aplicação/website do layout. Desta forma, alterações feitas no layout não afetam a manipulação dos dados, e estes poderão ser reorganizados sem alterar o layout.

Em resumo, para se ter uma simples página que mostre os registros guardados numa tabela mySQL, vc precisaria de três arquivos, que trabalhando em conjunto, resultariam na saída para o usuário.

Talvez possa parecer um tanto assustador no inicio, como foi para mim, mas logo esse conceito de programação MVC é digerido e tudo se torna muito claro.

O CodeIgniter é um framework que vale a pena ser estudado. Diferente de outros frameworks, ele é capaz de facilitar a vida do programador, sem forçá-lo a aprender e seguir novas regras de programação (caso muito comum em muitos frameworks existentes).

Para ajudar:

Manual do CodeIgniter (em Português)
Página do CodeIgniter em Português
Página oficial do CodeIgniter (em Inglês)
Assinar a lista de discussão do CodeIgniter (Português)

Switch to our mobile site