quarta-feira, 21 de março de 2012

Gerar QRCode com PHP


O QR Code (ou Código de Barras em 2D), é uma matriz ou código de barras bi-dimensional, criado pela empresa Japonesa Denso-Wave, em 1994. O QR vem de Quick Response, pois o código pode ser interpretado rapidamente, mesmo com imagens de baixa resolução, feitas por câmeras digitais em formato VGA, como as de celulares. O QR Code é muito usado no Japão. 



<?php
    include("qrcode.php");
    
    //Instanciando Objeto
    $qr = new QRCode();
    
    //Criando QRCode apontando para um link
    $qr->createLink("http://www.fb.com/OLeoArruda");
    echo "<p>Gerando Link: fb.com/OLeoArruda</p>";
    echo "<p><img src='".$qr->get_link()."' border='0'/></p>";
    
    //Criando QRCode para enviar SMS
    $qr->createSms("07188888888", "Estou ocupado !!!");
    echo "<p>Enviar SMS para 07188888888 com a mensagem: Estou Ocupado</p>";
    echo "<p><img src='".$qr->get_link()."' border='0'/></p>";
    
    //Criando QRCode para um telefone
    $qr->createPhone("07188888888");
    echo "<p>Número de telefone: 07188888888</p>";
    echo "<p><img src='".$qr->get_link()."' border='0'/></p>";

?>


Com o exemplo acima, criamos 3 QRCodes. Um contendo um link para http://www.phpblog.com.br, outro para enviar um SMS (mensagem de texto) para o telefone informado com a mensagem informada e o terceiro para realizar uma ligação para un determinado telefone.
A classe qrcode.php dispõe de outros exemplos de QRCode. 

Arrays Associativos

Arrays são váriáveis que guardam valores de forma constante na memória. Ou seja, 10 valores diferentes podem ser guardados em um único Array.
Para construir um Array basta usar a função array() do PHP
<?php
&vetor=array();
?>
<?php

&vetor = array(1, 1, 2, 3, 5, 8, 13 );

?>


Em PHP, podemos acessar o valor de uma posição específica através do índice do vetor que começa na posição 0.
Os índices são indicados por colchetes([]) que vem depois do nome da variável. Exemplo:
<?php

$vetor = array();

$vetor[1] = 540;

$vetor[3] = 8456;

?>

Gráfico demonstrando a atribuição de valores nos índices do array
Arrays Associativos
Nesses vetores, ao invés de se usar número como índice, usa-se Strings (palavras), assim fica mais fácil trabalhar com vetores.
<?php
$aluno['nome']="Leonardo Arruda";
$aluno['endereco']="Godric's Hollow";
?>

Para inicializar um Array usando associações devemos usar a seta (=>) para vinculá-los.
<?php
$aluno=array("nome"=>"Leonardo Arruda", "endereco"=>"Godric's Hollow");
?>

Matrizes (Arrays Multidimensionais)
Os índices de uma matriz segue a mesma característica dos índices vistos até agora, podendo ser numérico ou associativo.
Segue o exemplo:
<?php
  $aluno = array("Leonardo Arruda" => array("endereco" => "Rua das Oliveiras", "telefone" => "33223322"),
         ("Matheus Strik" => array("endereco" => "Rua das Bananeiras", "telefone" => "33226322"),
  echo("Pessoas cadastradas..." .

       "<BR><BR>Leonardo: " .
       "<BR>Endereco: " . $m['Leonardo Arruda']['endereco'] .
       "<BR>Telefone: " .$m['Leonardo Arruda']['telefone']

       "<BR><BR>Matheus: " .
       "<BR>Endereco: " . $m['Matheus Strik']['endereco'] .
       "<BR>Telefone: " . $m['Matheus Strik']['telefone'] .

?>


quarta-feira, 14 de março de 2012

Gerar imagem CAPTCHA em PHP

CAPTCHA é um acrônimo da expressão "Completely Automated Public Turing test to tell Computers and Humans Apart" (teste de Turing  público completamente automatizado para diferenciação entre computadores e humanos): um teste de desafio cognitivo, utilizado como ferramenta anti-spam, desenvolvido pioneiramente na universidade de Carnegie-Mellon. Como o teste é administrado por um computador, em contraste ao teste de Turing padrão que é administrado por um ser humano, este teste é na realidade corretamente descrito como um teste de Turing reverso.

//Definindo o formato do arquivo
header("Content-type: image/jpeg");
//Capturando o código passado via GET
$authCode = $_GET['code'];
//Criando a imagem 70x35 px
$imagem = imagecreate(70, 35);
//Definindo a cor de fundo da imagem
$fundo = imagecolorallocate($imagem, 242, 242, 236);
//Definindo a cor da fonte
$fonte = imagecolorallocate($imagem, 0, 0, 0);
//Gerando imagem
imagestring($imagem, 10, 10, 10, $authCode, $fonte);
//Renderizando a imagem
imagepng($imagem);


Este é o aquivo que vai criar efetivamente a imagem de acordo com o código passado por parâmentro.
Para exibição, vamos ao outro arquivo.
$code = rand(100000,999999);
No arquivo acima, geraremos um código randômico e passaremos como parâmetro no "src" da imagem.
<img src="gera_captcha.php?code=<?=$code ?>" />
Este é um exemplo simples que ajuda a entender o funcionamento desse modelo de segurança altamente utilizado em formulários web.

terça-feira, 13 de março de 2012

Framework


Um framework captura a funcionalidade comum a várias aplicações.
As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmo domínio de problema

O Que é Framework
Ele provê uma solução para uma famílias de problemas semelhantes usando um conjunto de classes e interfaces que mostra como decompor essa família de problemas e como objetos dessas classes colaboram para cumprir suas responsabilidades. O conjunto de classes deve ser flexível e extensível para permitir a construção de várias aplicações com pouco esforço, especificando apenas as particularidades de cada aplicação

Diferenças entre Biblioteca de Classes e Framework



Características Básicas de Frameworks
Um framework deve ser reusável, e para isso deve primeiro ser usável, ou seja, bem documentado e fácil de utilizar.
Deve ser extensível: O framework contém funcionalidade abstrata (sem implementação) que deve ser completada.
Deve ser de uso seguro: O desenvolvedor de aplicações não pode destruir o framework
Deve ser eficiente: Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência
Deve ser completo: Para endereçar o domínio do problema pretendido

CodeIgniter
CodeIgniter é framework para quem constrói aplicações web usando PHP. Seu objetivo é permitir que você desenvolva projetos mais rapidamente do que você poderia se você estivesse escrevendo código a partir do zero, proporcionando um rico conjunto de bibliotecas para as tarefas mais comuns necessárias, bem como uma interface simples e uma estrutura lógica para acessar essas bibliotecas. Mercante permite que você mantenha o foco em seu projeto minimizando a quantidade de código necessário para uma dada tarefa.
Pontos fortes: É grátis, rápido, gera URLs simples e é completamente documentado

CakePHP
CakePHP é gratuito, de código aberto, um framework em PHP para desenvolvimento ágil. É uma estrutura fundamental para programadores criarem aplicações web. O principal objetivo é permitir que você trabalhe em uma estrutura que possa programar de forma rápida e sem a perda de flexibilidade.
CakePHP joga fora a monotonia do desenvolvimento web. Ele oferece todas as ferramentas que você precisa para começar programando o que realmente deseja: a lógica específica da sua aplicação. Em vez de reinventar a roda cada vez que se constrói um novo projeto, é pego uma cópia do CakePHP onde se começa a construir sua carruagem real da sua aplicação.
Pontos fortes: Ativo e com comunidade amigável, Licença flexíve e Compatibilidade com PHP 4 e PHP 5.

Referências
http://book.cakephp.org/1.3/pt/view/880/O-que-%C3%A9-CakePHP-Por-que-usar
http://codeigniter.com/user_guide/overview/at_a_glance.html
http://www.phpframeworks.com/
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/oque.htm

quarta-feira, 7 de março de 2012

CRIPTOGRAFIA EM PHP


MD5 
A criptografa MD5 gera um código de 128 bits (32 caracteres alfa-numéricos). Não importa se você está gerando o MD5 de duas letras ou de um texto com 500 linhas o código MD5 gerado será de 32 caracteres.
O MD5 é usado na hora de salvar um dado sigiloso, como uma senha no banco por exemplo, assim ningué tem acesso à senha original do cliente. Depois é só comparar o MD5 do que foi digitado no campo senha com o código já salvo no banco, se for igual, a senha é correta.
O MD5 tem um problema, que é quando dois códigos MD5 ficam iguais, tem pouca chance de acontecer, mas ainda é possível.
Para usar o MD5 em PHP é só usar da seguinte forma:
$string = 'O rato reu a ropa do rei de Roma';

$codificada = md5($string);

echo "Resultado da codificação usando md5: " . $codificada;

// 54cf74d1acdb4037ab956c269b63c8ac

SHA1
Essa criptografia é identica ao MD5, só que tem 160 bits, gerando uma string com 40 caracteres alfa-numericos.
Uma vantagem é que usando 160 bits ela tem menos chances de gerar duas strings iguais do que a de 128 bit.
Usar o SHA1 é a mesma cooisa que usar o MD5, só que mudando o nome da função:
$string = 'O rato reu a ropa do rei de Roma';
$codificada = sha1($string);
echo "Resultado da codificação usando sha1: " . $codificada;
// b186b709f7cf5a1d98d413379a66e511df8d59a4

BASE64
É um método para codificação dos dados para transferência na Internet. Ela é uma codificação de mão dupla (ao contrário da anteriores que eram mão única), e usando uma segunda função você pode descobrir a string original de uma string codificada.
 $string = 'O rato reu a ropa do rei de Roma';
$codificada = base64_encode($string);
echo "Resultado da codificação usando base64: " . $codificada;
// TyByYXRvIHJldSBhIHJvcGEgZG8gcmVpIGRlIFJvbWE=
echo "

"; $original = base64_decode($codificada); echo "Resultado da decodificação usando base64: " . $original; // O rato reu a ropa do rei de Roma // Note que $original vai ser idêntica a $string



quinta-feira, 1 de março de 2012

Sobrecarga em PHP

Sobrecarga significa que um elemento pode se comportar como outros e desempenhar várias funções.
PHP não implementa a sobrecarga por causa de sua natureza bastante dinâmica combinado com sua tipagem fraca.
O PHP nos dá três métodos que “auxiliam” a criação de uma sobrecarga. Ela não é natural, mas ainda assim pode ser realizada. Os métodos são: func_get_arg, func_get_args, func_num_args.
func_get_arg
Esta função permite que você recupere o valor de um argumento passado como parâmetro na chamada do método.
 public function sobrecarga() {
return $argumento = func_get_arg(0);
}

func_get_args
Esta função retorna um vetor com todos os argumentos passados como parâmetro na chamada do método.
public function sobrecarga() {
var_dump(func_get_args());
}
func_num_args
Esta função retorna um inteiro que representa a quantidade de argumentos passados como parâmetro ao seu método.
public function sobrecarga() {
return $quantidade = func_num_args();
}

Sobrecarga por Quantidade

Para implementar este tipo de sobrecarga, basta escrever um método (sem argumentos) e na implementação deste método o método func_num_args será chamado para verificarmos com quantos parâmetros estamos trabalhando.
Nesse exmplo, dentro da função sobrecargaUm é chamada a função func_num_args() para saber o número de argumentos e depois é usado a função func_get_arg(0) para adicionar o valor do argumento à variável.

class Sobrecarga {

    public function sobrecargaUm() {
        if (func_num_args() == 2) {
            $this->_metodoChamadoComDoisArgumenos(
                func_get_arg(0), func_get_arg(1)
            );
        } else if (func_num_args() == 3) {
            $this->_metodoChamadoComTresArgumentos(
                func_get_arg(0), func_get_arg(1), func_get_arg(2)
            );
        } else {
            throw new Exception("Número de argumentos inválido");
        }
    }
}
$sobrecarga = new Sobrecarga();
$sobrecarga->sobrecargaUm("Hello","World");
$sobrecarga->sobrecargaUm("Hello","World", "Again");
Sobrecarga por Tipo Para implementar este tipo de sobrecarga basta recuperar os argumentos passados por parâmetros e testar o tipo de cada um deles. Nesse exemplo, ele usa o método is_numeric() para saber o tipo do argumento
class Sobrecarga {
    public function sobrecargaDois() {
        if (func_num_args() == 1) {
            if (is_numeric(func_get_arg(0)) {
                $this->_metodoSeArgumentoNumerico(func_get_arg(0));
            } else {
                $this->_metodoSeArgumentoString(func_get_arg(0));
            }
        } else {
            throw new Exception("Número de argumentos inválido");
        }
    }
}
$sobrecarga = new Sobrecarga();
$sobrecarga->sobrecargaDois("Hello");
$sobrecarga->sobrecargaDois(21);

quinta-feira, 23 de fevereiro de 2012

Primeira Postagem - História do PHP

Esse blog foi criado com o objetivo de estudo da linguagem PHP.
Através dele será divulgado matérias, sites, outros blogs, vídeos, imagens e tutoriais sobre essa linguagem muito utilizada para gerar conteúdo dinâmico na World Wide Web (rede mundial de computadores - internet).


História do PHP
PHP/FI
O mascote do PHP é um elefante
 porque as três letras formam o
desenho desse mamífero
A linguagem foi concebida em 1995, por Rasmus Lerdorf que criou o PHP/FI (Personal Home Page/ Forms Interpeter). Ele usou vários scripts Perl em seu site pra rastrear quem estava visitando suas páginas.
O PHP/FI incluía algumas funcionalidades básicas do PHP, variáveis em Perl, interpretações automáticas de variáveis e sintaxe embutida no HTML.

PHP/FI 2
O PHP cresceu de uma maneira incrível ainda em 1995, quando foi revbatizado como PHP/FI versão 2. Na nova versão, foram incluídos um engine que entendia algumas macros principais e uma série de utilitários.

PHP 3
Em 1997, o PHP foi escrito do zero por Andi Gutmans e Zeev Suraski. Uma grande quantidade de código da versão anterior foi aproveitada, enquanto a outra parte foi totalmente reescrita.
Em 1998, acumulava milhares de usuários e contribuintes para a linguagem e após meses de testes públicos, em junho do mesmo ano o PHP 3 foi finalmente lançado.

PHP 4
Surgiu a necessidade do uso de novas funcionalidades que suportam variedade de bases de dados de terceiros, além de APIs.
O PHP 3 não era capaz de lidar com programas complexos. Assim, o engine chamado Zend Engine foi projetado para superar esses problemas. Esse evento deu origem ao PHP 4, em maio de 2000.

PHP 5
Depois de longa pesquisa e desenvolvimento, o PHP 5 foi lançado em julho de 2004, baseado no Zend Engine 2.0 e contando com várias novas funcionalidades.
Pontos principais de otimização do PHP 5 em relação a versão anterior:
>>Programação orientada a objetos
>>MySQL
>>XML
>>Suporte ao SQLite, oferecendo aos desenvolvedores um banco de dados que funciona em todas as cinco instalações PHP
>>Modelo completamente diferente da verificação de erro, chamado exception handling. Utilizando esta funcionalidade, você tem liberdade para verificar o valor de retorno de cada função do seu código.

Referências:
A História do PHP e projetos relacionados
 
Design by Scooby Doo jogos