Jogo da Velha utilizando jQuery e PHP

Autor: Amin Saeedi
Fonte: phpclasses.org

Download dos Arquivos: Aqui
Exemplo Funcionando: Aqui

Bom… não tem muito o que explicar…
O jogo é constituído de algumas classes em PHP e algumas libraries escritas em jQuery e Javascript.

A interação do jogo é feita através de requisições ($.post) do jQuery no arquivo (libs/TicTacToe.js) ao arquivo index.php

Arquivo: index.php

<?php
    set_time_limit(0);

    require 'Board.php';
    require 'TicTacToe.php';

    $board = explode(',', $_POST['board']);
    foreach ($board as $key => $b) {
        $board[$key] = intval($b);
    }

    $ttt = new TicTacToe();
    $response = $ttt->play($board);
    echo json_encode($response);
?>

O index.php recebe as posições que estão marcadas no quadro e efetua o cálculo para definir a próxima jogada.
O retorno é no formato JSON interpretado pela biblioteca Javascript…
Assim até o final…

Para alterar quem inicia o jogo basta alterar no arquivo (/libs/Position.js):

<?php
var Const = {
    HUMAN: 1,
    BLANK: 0,
    COM: -1,
    TURN: this.HUMAN
};
?>

Para:

<?php
var Const = {
    HUMAN: 1,
    BLANK: 0,
    COM: -1,
    TURN: this.COM
};
?>

Vale a pena percorrer as classes do jogo para entender o seu funcionamento.

Espero que gostem!

Até (:

Share Button

Como fazer diff entre strings em PHP

Autor: Jan Altensen
Fonte: phpclasses.org

Download dos Arquivos: Aqui
Exemplo Funcionando: Aqui

Com essa classe é possível fazer a comparação e o diff em strings.

Arquivo: index.php

<?php

    require_once("DiffUtil.class.php");

    $a = 'PHP Blog
        Teste para comparar Str
        Ultima Linha';

    $b = 'PHP Blog
        Teste para comparar String
        Ultima';

    //Resultado da comparação em raw
    echo print_R(DiffUtil::compare($a, $b, true));

    //Resultado da comparação no modo diff
    echo nl2br(DiffUtil::compare($a, $b));
?>

O terceiro parâmetro do método “compare” faz com que a função retorne a comparação no formato raw.
A ultima linha mostra o Diff entre as duas strings.

Interessante (:

Até !

Share Button

Como capturar o endereço IP do cliente utilizando PHP

Autor: Archzilon Eshun-Davies
Fonte: phpclasses.org

Exemplo Funcionando: Aqui

Este tutorial é composto apenas por uma classe que de forma bem simples detecta o IP do cliente que está acessando o script.

A classe pode também verificar a variável super-global pedido do servidor para ver se o usuário está acessando o site usando um proxy.
Caso esteja, ele retorna o endereço IP de usuário original exposto pelo servidor proxy.
Caso contrário, a classe retorna o endereço IP remoto atual conectando ao servidor HTTP.

Arquivo: cIP.php

<?php

    # Set to true if you want to test the class
    $TEST = false;

    interface iIP {
        public static function getusrip();
    }

    class cIP implements iIP {

        /**
         * Returns User IP Address
         * @params
         *        IN:  NONE
         *        OUT: ip address(0.0.0.0)
         */
        public static function getusrip() {
            $ip = null;
            if ((isset($_SERVER['HTTP_X_FORWARDED_FOR'])) &&
                    (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))) {
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
            }
            elseif ((isset($_SERVER['HTTP_CLIENT_IP'])) &&
                    (!empty($_SERVER['HTTP_CLIENT_IP']))) {
                $ip = explode(".", $_SERVER['HTTP_CLIENT_IP']);
                $ip = "{$ip[3]}.{$ip[2]}.{$ip[1]}.{$ip[0]}";
            }
            elseif ((!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) &&
                    (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) &&
                    (!isset($_SERVER['HTTP_CLIENT_IP'])) &&
                    (empty($_SERVER['HTTP_CLIENT_IP'])) &&
                    (isset($_SERVER['REMOTE_ADDR']))) {
                $ip = ($_SERVER['REMOTE_ADDR']);
            }
            else {
                // ip is null
            }
            return ($ip);
        }

    }

    if ($TEST) {
        $ip = cIP::getusrip();
        print "IP Capturado: $ip";
        exit();
    }
?>

Para testar a classe, basta alterar a variável “$TEST = false;” para “$TEST = true;”.

Até (:

Share Button

Tirar foto utilizando Webcam e PHP

Fonte: Aqui

Author: Vivek Moyal
Tradução e Ajustes: PHPBlog
Download dos Arquivos: Aqui

*Não colocarei o exemplo funcionando aqui pois não tenho como prever o conteúdo das fotos tiradas. ehehehehehehe

Para este tutorial, utilizaremos o webcam.js desenvolvido pelo Joseph Huckaby.
Disponível em: https://code.google.com/p/jpegcam/

Vamos as explicações.

No arquivo index.php encontramos:

<!DOCTYPE html>
<html>
<head>
<title>PHP Blog - Exemplo de utilização de Webcam com PHP</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<script type="text/javascript" src="webcam.js"></script>
<script type="text/javascript">
//Configurando o arquivo que vai receber a imagem
webcam.set_api_url('upload.php');

//Setando a qualidade da imagem (1 - 100)
webcam.set_quality(90);

//Habilitando o som de click
webcam.set_shutter_sound(true);

//Definindo a função que será chamada após o termino do processo
webcam.set_hook('onComplete', 'my_completion_handler');

//Função para tirar snapshot
function take_snapshot() {
document.getElementById('upload_results').innerHTML = '<h1>Uploading...</h1>';
webcam.snap();
}

//Função callback que será chamada após o final do processo
function my_completion_handler(msg) {
if (msg.match(/(http\:\/\/\S+)/)) {
var htmlResult = '<h1>Upload Successful!</h1>';
htmlResult += '<img src="'+msg+'" />';
document.getElementById('upload_results').innerHTML = htmlResult;
webcam.reset();
}
else {
alert("PHP Erro: " + msg);
}
}
</script>
</head>
<body>
<script type="text/javascript">
//Instanciando a webcam. O tamanho pode ser alterado
document.write(webcam.get_html(320, 240));
</script>
<form>
<input type=button value="Configurar" onClick="webcam.configure()">
&nbsp;&nbsp;
<input type=button value="Tirar Foto" onClick="take_snapshot()">
&nbsp;&nbsp;
<input type=button value="Reset" onClick="webcam.reset()">
</form>
<div id="upload_results"></div>
</body>
</html>

É basicamente composto por HTML e Javascript no qual vai instanciar a Webcam e habilitar algumas funcionalidades.

O PHP está no arquivo: upload.php

<?php
    session_start();

    $uploadDir = 'uploads';

    if(!is_dir($uploadDir)){
        if (!mkdir($structure, 0777, true)) {
            print "ERRO: Não foi possível criar o diretório [uploads]";
        }
    }

    if(!is_writable($uploadDir)){
        chmod($uploadDir, 0777);
    }

    $name = $uploadDir.'/image_'.date('YmdHis').'.jpg';
    $file = file_put_contents($name, file_get_contents('php://input'));
    if (!$file) {
        print "ERRO: Falha de escrita para o arquivo [$name], É necessário dar permissão de escrita na pasta [$uploadDir]\n";
        exit();
    }

    print 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']).'/'.$name;
?>

Este é o responsável por fazer o upload da imagem gerada e salvar na pasta definida na variável “$uploadDir”.

Vale lembrar que é preciso definir a permissão de escrita para a pasta definida. No caso do exemplo “uploads”.

Até (:

Share Button

Chat – Bate Papo utilizando PHP + jQuery Ajax

Download: Aqui

Faça então o download do código, execute o SQL para criação da tabela no Banco de Dados MySQL.
Vale lembrar de alterar as informações de conexão ao banco no arquivo: class/cChat.php

Seja Feliz ! (:

Share Button

RedBeanPHP – Mapeamento de Objeto Relacional em PHP

Este post marca o reinício das atividades no PHPBlog. Andei um pouco afastado porém estou de volta.

O RedbeanPHP é uma ferramenta ORM (Object Relational Mapping – Mapeamento de Objeto Relacional)100% completa para auxiliar no desenvolvimento de aplicações WEB utilizando linguagem de programação PHP OO.

Projeto: http://redbeanphp.com/
Documentação: http://redbeanphp.com/manual/

Usem e abusem!

Share Button

Criando captcha (imagem de segurança) utilizando PHP GD

Vamos então aos arquivos:

Arquivos: Aqui
Exemplo: Aqui

Com todos os arquivos em mãos vamos as explicações.

Arquivo: gera_captcha.php

//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.

Arquivo: index.php

$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.

Até!

Share Button

Autenticação de aplicações do Twitter utilizando OAuth

Resumidamente, este exemplo consiste em criar uma aplicação registrada em uma determinada conta no Twitter e utiliza-la através do protocolo OAuth.
Para isso, inicialmente precisaremos criar a aplicação desejada através do link:
http://dev.twitter.com/apps/new

Ao criar a aplicação, vale ressaltar que todos os campos deverão ser preenchidos, inclusive o campo Callback URL.
Em meu caso: http://www.phpblog.com.br/exemplos/oauth_twitter/callback.php

Após criar a aplicação, o twitter gerará uma série de códigos. Precisaremos dos seguntes:
Consumer key
Consumer secret

Vamos aos downloads:

Arquivos: Aqui
Exemplo: Aqui

Após realizar os downloads, vamos ao código:

Arquivo: config.php

define('CONSUMER_KEY', 'colocar_chave_gerada_pelo_twitter');
define('CONSUMER_SECRET', 'colocar_chave_gerada_pelo_twitter');
define('OAUTH_CALLBACK', 'http://localhost/oauth_twitter/callback.php');

Neste arquivo, iremos colocar as chaves geradas pelo Twitteer, inclusive o CALLBACK URL.
Após este passo, vamos ao nosso arquivo principal.

Arquivo: index.php

/* Carregando Classes. */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');
/* Verificando token */
if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) {
header('Location: ./clearsessions.php');
}
/* Capturando token da sessão. */
$access_token = $_SESSION['access_token'];
/* Criando o objeto passando os tokens como parâmentro. */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
/* Testando a chamada. */
$content = $connection->get('account/verify_credentials');
//Retorna o timeline completo
$timeline = $connection->get('statuses/user_timeline', array('screen_name' => 'blogphp'));
//Atualizar o status
//$connection->post('statuses/update', array('status' => 'Hello PHPBlog'));
print_r($timeline);

/*Outras Chamadas */
//$connection->get('users/show', array('screen_name' => 'abraham')));
//$connection->post('statuses/update', array('status' => date(DATE_RFC822)));
//$connection->post('statuses/destroy', array('id' => 5437877770));
//$connection->post('friendships/create', array('id' => 9436992)));
//$connection->post('friendships/destroy', array('id' => 9436992)));

Pronto.
Este arquivo contém as chamadas que podemos fazer utilizando a nossa classe.

Até Mais (:

Share Button

Enviando e-mails autenticados utilizando PHP (phpmailer)

Vamos aos arquivos

Download: Aqui

Com os arquivos em mãos, vamos a explicação:

Arquivo: index.php

<?php
//Incluindo a classe pgpmailer
require_once('class.phpmailer.php');
//Instanciando o objeto
$mail = new PHPMailer(true);
//Chamando o método que informa que o e-mail será enviado via SMTP
$mail->IsSMTP();
try
{
    //Define que o e-mail será enviado utilizando autenticação
    $mail->SMTPAuth   = true; 
    //Setando o servidor SMTP
    $mail->Host       = "mail.seuservidor.com.br";
    //Porta de saída
    $mail->Port       = 25;
    //Usuário
    $mail->Username   = "user@seuservidor.com.br";
    //Senha
    $mail->Password   = "suasenha";
    //Adicionando endereco de destino
    $mail->AddAddress('paraquemvai@servidor.com.br', 'Nome do Destinatário');
    //Adicionando o endereço de origem
    $mail->SetFrom('email@dequemenviou.com.br', 'Nome de quem Envou');
    //Adicionando o assunto
    $mail->Subject = '[CONTATO] - PHP Blog';
    //Criando a mensagem
    $msg    =    "********** E-MAIL ENVIADO **********

";
    $msg    .=    "Este é um teste de e-mail...";
    //Setando a mensagem ao objeto
    $mail->MsgHTML($msg);
    //Enviando e-mail
    $mail->Send();
} 
catch (phpmailerException $e) 
{
    //Capturando exceções da classe phpmailer
    echo $e->errorMessage();
}
catch (Exception $e) 
{
    //Capturando qualquer exceção
    echo $e->getMessage();
}    
?>

É claro que trata-se de um exemplo simples. Normalmente utilizamos este exemplo e esta classe aliado a algum formulário para capturar os dados do usuário e enviar.

Dúvidas? não? ehehe
Caso afirmativo é só perguntar.

Até!

Share Button

Como criar QRCode em PHP

Antes de mais nada, vamos as referências e créditos…

Fonte: phpclasses.org
Autor: Arturs Sosins – Latvia
Download: Aqui
Demonstração: Aqui

Vamos então a explicação.

Arquivo: index.php

<?
include(“qrcode.php”);

//Instanciando Objeto
$qr = new QRCode();

//Criando QRCode apontando para um link
$qr->createLink(“http://www.phpblog.com.br”);
echo “<p>Gerando Link: http://www.phpblog.com.br</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.

Espero que tenham gostado.

Até!

Share Button

Codificando dados no PHP utilizando a função base64_encode

A função que iremos abordar neste post é a base64_encode que trata-se de uma função capaz de codificar os dados.

Mais Informações: Aqui

Então vamos a utilização:

<?php
    $data = 'Bem Vindo ao PHP Blog - Descomplicando Tecnologias';
    $dadosCodificados = base64_encode($data);

    echo 'Dado Limpo: '.$data;
    echo '
';
    echo 'Dado Codificado: '.$dadosCodificados;
?>

Neste trecho de código temos a variável $data que contem o dado aberto.
Utilizando nossa função, transformamos o dado desta variável em outro codificado não decifrável pelo ser humano.

O resultado deste trecho será:

Dado Limpo: “Bem Vindo ao PHP Blog – Descomplicando Tecnologias”
Dado Codificado: “QmVtIFZpbmRvIGFvIFBIUCBCbG9nIC0gRGVzY29tcGxpY2FuZG8gVGVjbm9sb2dpYXM=”

Como trata-se de uma função de codificação, existe como decodificar esse dado.
Para isto, utilizamos a função base64_decode().

    $dataDec = base64_decode($dadosCodificados);
    echo $dataDec;

Com o trecho acima, decodificamos nossa variável.

Como e para que utilizar ?
Algumas muitas vezes (eheheh) precisamos trafegar dados pela URL (capturando variáveis via GET). Muitas das vezes fica fácil manipular e simular erros de página alterando esses dados passados via GET.

Desta forma, com o dado codificado, dificulta esse tipo de ação.

Dúvidas? Perguntem.

Até !

Share Button

Previsão do Tempo utilizando PHP + Yahoo Weather

Primeiramente, devemos pesquisar informações no próprio site do Yahoo.

Exemplo: Aqui

Vamos então a codificação que é muito simples:

<?php

    function retrieveYahooWeather($zipCode="BRXX3272") {
        //URL do yahoo
        $yahooUrl = "http://weather.yahooapis.com/forecastrss";
        //Região d consulta. No caso, Salvador/BA
        $yahooZip = "?p=BRXX3272&u=c";
        //Montando a URL
        $yahooFullUrl = $yahooUrl . $yahooZip;
        //Gerando o objeto utilizando a função do PHP curl_init() e passando a url montada
        $curlObject = curl_init();
        curl_setopt($curlObject,CURLOPT_URL,$yahooFullUrl);
        curl_setopt($curlObject,CURLOPT_HEADER,false);
        curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true);
        //Executando a função
        $returnYahooWeather = curl_exec($curlObject);
        curl_close($curlObject);
        //Retornando o objeto contendo as informações do tempo
        return $returnYahooWeather;
    }

    try{
        //Aqui está a chamada da função
        $localZipCode = "BRXX3272";
        $weatherXmlString1 = retrieveYahooWeather($localZipCode);
        //Criando o elemento XML de retorno
        $weatherXmlObject1 = new SimpleXMLElement($weatherXmlString1);
        //Capturando condições do tempo
        $currentCondition = $weatherXmlObject1->xpath("//yweather:forecast");
        $currentCondition2 = $weatherXmlObject1->xpath("//yweather:condition");
        //Capturando a temperatura mínima
        $minima = $currentCondition[0]["low"];
        //Capturando a temperatura máxima
        $maxima = $currentCondition[0]["high"];
        //Capturando o código da imagem
        $codeImage = $currentCondition2[0]["code"];
    }
    catch(Exception $e){
        //Realizar alguma coisa... provavelmente o reload
    }
?>

Pronto, feito isso vamos mostrar nossos dados personalizados:

<html>
<?=$maxima ?>ºC
<?=$minima ?>ºC
<img src=”http://l.yimg.com/a/i/us/we/52/<?=$codeImage;?>.gif” border=”0″ />
</html>

Claro que a formatação fica a cargo de cada um.
Lembrando também que a região pode ser passada por parâmetro para a função.

Até

Share Button

Integração do Twitter com PHP

Antes de começar, créditos ao desenvolvedor:

Simon Wippich, www.wippich.org

Vamos lá!

Download: Aqui

Como já havia dito, utilizando a classe twitter.class contida no pacote do download poderemos administrar todas as funções disponíveis no Twitter.

Explicarei algumas.

Arquivo: index.php

<?php
//Incluindo nossa classe
require_once('twitter.class.php');

//Conectando a API do twitter
$Twitter = Twitter::getInstance();
//Setando usuario e senha
$Twitter->setUser('usuario','senha_do_usuario');
//Inserindo novo Tweet
$Twitter->post($mensagemTw);
//Retornando os 10 ultimos tweets
$arrayRetorno = $Twitter->getUserTimeline(10);

//Exibindo o array de retorno
echo '<pre>';
print_r($arrayRetorno);
echo '</pre>';
?>

Vamos lá… Destrinchando o código:

1. Incluímos nossa classe
2. Conectamos a uma determinada conta
3. Após conectato, podemos realizar todas as ações que o twitter disponibiliza.

Neste exemplo, inserimos um novo tweet e retornamos os 10 últimos tweets do usuário.

Em breve mais…

Até !

Share Button

File Browser – Gerenciador de arquivos com PHP e Ajax

Fonte: phpclasses.org
Autor: Ahmed Zamouche – Suiça
Download: Aqui

Vamos lá.

Não vou explicar a classe toda pois o post teria que virar um livro. ehehehe
Vamos então direto ao assunto… como funciona.

Arquivo: browser.php

<?php

    session_start();
    // Desativando erros.
    error_reporting(2048);
    ini_set('display_errors',0);
    ini_set('track_errors',1);

    //Incluindo a classe
    require_once('fileBrowser.class.php');

    //Instanciando o objeto
    $fb = new fileBrowser("uploads","uploadstemp","browser.php",true,"browser_1","Portugues");

    //Setando erros para verdadeiro
    $fb->Errors_reporting = true;

    //Exibindo grid    
    echo $fb->draw();            
?>

Vale lembrar que neste caso, estou colocando a pasta uploads para ser a pasta padrão dos arquivos. Esta pasta precisa está com permissão 777 (permissão total de escrita e leitura) para que funcione.

Em alguns casos precisaremos colocar o caminho absoluto inteiro para funcionar. Vai depender de como o apache esteja configurado.

Abusem !

Até

Share Button

Capturando informações de vídeos do Youtube utilizando PHP

Referência: phpclasses.org
Desenvolvido por: Tiago Kinust Biage – Brasil

Download dos aquivos: Aqui

Com as classes na mão… vamos a explicação:

Arquivo: index.php

<?php
     ini_set('display_errors',1);     
     //Incluindo a classe     
     include "youtube_class.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Youtube Class</title>
</head>
<body>
<?
//Instanciando o objeto da classe
$obj = new youtube;
//Definindo a URL do vídeo do youtube
$obj->url = "http://www.youtube.com/watch?v=8B7s01DpBTg";
//Definindo altura e largura do vídeo
$obj->player("480","385");

//Capturando e imprimindo os dados referentes ao vídeo
print '<br>';
print $obj->url2id();
print '<br>';
print $obj->url2id_("http://www.youtube.com/watch?v=TNMpa5yBf5o&feature=channel");
print '<br>';
print $obj->thumb_url("maior");
print '<br>';
print $obj->thumb_url();
print '<br>';
print $obj->thumb();
print '<br>';
print $obj->thumb("maior");
print '<br>';
$info = $obj->info();
print $info["titulo"];
print '<br>';
print $info["descricao"];
print '<br>';
print $info["views"];
print '<br>';
print $info["tempo"];
print '<br>';
print $info["estrelas"];
print '<br>';

//Realizando busca nos vídeos do youtube
$busca = $obj->busca("alice wonders");
foreach($busca as $campo => $valor)
{
foreach($valor as $campo2 => $valor2)
{
print $campo2.' = '.$valor2.'<br>';
}
print '--------------<br>';
}

?>
</body>
</html>

Extremamente simples e útil para trabalhar em conjunto com um dos maiores portais de vídeos do mundo.

Espero que gostem !

Até

Share Button