Mostrando postagens com marcador codeigniter. Mostrar todas as postagens
Mostrando postagens com marcador codeigniter. Mostrar todas as postagens

domingo, 3 de janeiro de 2016

Precisa-se de Apoio!

Salve Geral!

Estou trazendo novamente a ativa um antigo projeto de jogo online.
É um jogo Web-browser desenvolvido em PHP (Codeigniter) + MySql.

E preciso de ajuda!

Infelizmente estou sem tempo para me dedicar ao desenvolvimento do jogo devido ao meu trabalho e por ser pai, marido e outras atividades.

Estou procurando por programadores e designer, inclusive o jogo não possui nem mesmo logo tipo.

Atividades para Programadores:

  • Ajudar no desenvolvimento das funcionalidades do jogo;
  • Desenvolvimento de backend em PHP com Codeigniter;
  • Desenvolvimento do frontend com Java Script e/ou HTML5;
  • Documentação dos fontes;
Atividades para Designers:
  • Elaborar a identidade visual do jogo;
  • Criar um logo;
  • Criar o dashboard do jogador;
O nome do jogo é The Presidents.
Este jogo tem como objetivo criar uma cidade e evoluir a uma grande nação.
O endereço do jogo é: http://www.the-presidents.net

Entrem em contato caso queira conhecer melhor o projeto.
Estou aberto a discussões,

Grande abraço!

Codeigniter - Como verificar a versão do framework

Salve!
Hoje me deparei com uma situação. Estava recuperando alguns projetos antigos e fiquei na dúvida de qual era a versão do Codeigniter que usava na época que iniciei o projeto.

Temos duas formas de verificar a versão do Codeigniter:

1 - Código

Basta colocar a seguinte linha em qualquer "view":

echo CI_VERSION;


2 - Verificar os arquivos de sistema do Codeigniter:

Procure o seguinte arquivo: /system/core/CodeIgniter.php
Abra este arquivo e procure por "Codeigniter Version".


sexta-feira, 31 de agosto de 2012

Codeigniter - Retirando a index.php da URL do site

Salve All!

Atendendo a pedidos, vou postar aqui o "esquema" para retirar o "index.php" da URL dos sites com Codeigniter.

Primeiro, preciso deixar claro que o "mod_rewrite" do Apache deve estar ativado e funcionando corretamente. Caso você não utilize o Apache como servidor HTTP, vá googar sobre o isso com o seu servidor HTTP.

Vamos precisar criar na raiz do FTP, geralmente na pasta "www/" um arquivo chamado ".htaccess" e colocar o seguinte conteúdo:


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 


Depois disso, será preciso editar o arquivo "config.php" do Codeigniter que está em: "application/config/config.php".

A linha que originalmente é:
$config['index_page'] = 'index.php';


Deverá ficar assim:
$config['index_page'] = '';


E pronto! Nada além disso...
Tenho essa configuração rodando no meu agregador de ofertas: http://www.armazemdasofertas.com.br

Duvidas?
Deixe um comentário.

terça-feira, 10 de julho de 2012

Bê-a-Bá do Codeigniter - Configurando Banco de Dados

Salve geral...

Dando continuidade à série de artigos básicos do Codeigniter, agora vamos configurar o acesso a banco de dados no codeigniter.

O primeiro passo é realizado no arquivo /application/config/database.php.

Obs. Considera-se que servidor de banco de dados esteja OK! Assim como o banco de dados e usuário e senha para acesso.


$db['default']['hostname'] = 'mysql.seusite.com.br';
$db['default']['username'] = 'usuario';
$db['default']['password'] = 'senha';
$db['default']['database'] = 'bancodedados';
$db['default']['dbdriver'] = 'mysql';


Então vamos explicar os campos "auto-explicativos":

hostname = Nome do servidor do banco de dados ou a URL de acesso ao banco de dados. Poderia ser "localhost" se o banco de dados estiver na mesma maquina que o Webserver. Caso você seja um servidor diferente, NUNCA coloque o "HTTP://" antes do URL.

username = É o usuário que tem acesso ao servidor e ao banco de dados. Esse usuário precisa ter as permissões para executar "queries" tipo SELECT, INSERT, UPDATE, DELETE e etc no banco de dados.

password = Senha...

database = Aqui vai o nome do banco de dados criado no servidor que foi mencionado na linha do hostname. Sim!! O banco de dados já deve estar criado!!


dbdriver = Aqui fica a definição do driver do banco de dados que será utilizado. Uma das principais características do framework é a transparência na utilização de banco de dados. Os bancos de dados suportados atualmente pelo codeigniter são: MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, and ODBC.

Até aqui a configuração já está 100% pronta!
Porém será necessário inicializar a library de banco de dados sempre que for necessário. Para automatizar e deixar essa library sempre inicializada,  basta configurar no arquivo /application/config/autoload.php a seguinte linha:

$autoload['libraries'] = array('database');


Mais detalhes sobre a configuração do autoload no próximo post.

Duvidas? Deixe um comentário...

Bê-a-Bá do CodeIgniter - Configurando o config.php

Salve Geral!!

Começando a série de artigos sobre o CodeIgniter eu vou apresentar a configuração do arquivo application/config/config.php.

Obs. A configuração aqui apresentada não esgota as possibilidades de configurações, e apresenta aquilo que o blogueiro aqui considera necessário para uma boa utilização do Codeigniter.

Vamos a primeira parte.

$config['base_url'] = 'http://www.seusite.com.br/';


Essa linha define o URL ou o endereço do seu site.
Sim! Eu sempre utilizo a barra no final do URL. É a partir dessa barra que o CodeIgniter vai começar a trabalhar.
Quando você utilizar o helper "base_url()" o Codeigniter irá escrever exatamente o conteúdo desse parâmetro da configuração.
Existe uma forma de deixar esse campo automático mas nunca utilizei, é possível encontrar as informações para essa automatização em >> http://codeigniter.com/forums/viewthread/60181/

Segunda Parte.


$config['index_page'] = 'index.php';


Só altere essa linha se você mudar o nome desse arquivo que se encontra na raiz do diretório do seu site.
Ou então caso você utilize o mod_rewrite em um arquivo .htaccess, que eu irei fazer um artigo sobre isso mais para frente. E nesse caso de utilização do mod_rewrite, deixe em branco.

Terceira Parte.


$config['language'] = 'english';


Só altere isso caso você desejar criar... É MELHOR QUE VOCÊ NÃO ALTERE ESSA LINHA!!
Vai por mim...

Quarta Parte.


$config['charset'] = 'UTF-8';


Essa linha define o charset utilizado no site.
Eu sinceramente prefiro escrever "&aacute" que não dá tanto trabalho como alterar o charset para ISO.

Quinta Parte.


$config['encryption_key'] = 'chavedecriptografia';


Esse parâmetro é usado quando você utiliza sessões.
Por exemplo, se você fizer um sistema de login que utilize sessões, esse parâmetro deverá estar configurado.


E chega! Não mexa em mais nada nesse arquivo!
A não ser que você realmente saiba que o estiver fazendo...

Mas de forma geral, essas configurações são básicas para utilização do Codeigniter.
Muitos site que eu já fiz estão com essas configurações e funcionam normalmente.

Caso você tenha duvidas, deixe um comentário!

Bê-a-Bá do Codeigniter: Iniciando uma série de artigos

Salve All()!

Esse post será curto pois vou iniciar uma série de posts (artigos) sobre iniciação no framework Codeigniter.
Pra quem já é avançado isso não será de grande valia mas poderá acrescentar alguns detalhes valiosos.


Eu tentarei seguir a seguinte "ordem" de publicação nessa série:

  1. Configuração do Codeigniter
  2. Personalização do Codeigniter
  3. Introdução à POO com Codeigniter
  4. Talvez exista!
Para entender sobre o codeigniter, eu vou recomendar o site http://codeigniterbrasil.com/ que tem muito conteúdo sobre o Codeigniter.

domingo, 10 de junho de 2012

Sistema de Login Completo - PHP e CodeIgniter

Salve!

Estou postando um sistema de login que eu desenvolvi utilizando o CodeIgniter e MySql.
Depois de escrever várias vezes as mesmas funções eu resolvi criar esse sistema para implementar em todos os próximos sites que eu desenvolver.

Esse sistema conta com as seguintes características:

  • Registro de usuário Simples
    • Dados: Nome, E-mail, Senha (grava a data do cadastro)
    • Validação dos dados do formulário (através do CodeIgniter)
    • Checagem de e-mail já cadastrado no banco de dados
    • Envia e-mail de confirmação com link para ativação do cadastro
    • Ativa o cadastro do usuário através de link
  • Login / Logoff de usuário
    • Logon com sessão
    • Valida se o usuário e senha são válidos e autentica o usuário
    • Cria variáveis de sessão para identificação do usuário
    • Faz Logoff do usuário
  • Reset de Senha
    • O usuário deve informar o e-mail cadastrado
    • Gera uma nova senha e envia para o e-mail cadastrado
Observações:
  • O login não depende da ativação, ou seja, o usuário poderá se autenticar mesmo sem ativar o cadastro.
  • As senhas são criptografadas com MD5
  • O arquivo contém todos os arquivos do CodeIgniter
  • O banco de dados está em estrutura no arquivo "bancodedados.txt"

Altere a vontade!!

Duvidas?? Deixe um comentário...

segunda-feira, 28 de maio de 2012

Codeigniter - Validando CPF em Formulários

Salve, salve...
E para fechar a série de validações em formulários, só falta a validação de CPF.

Essa função deve ser inserida no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"


Obs: Nessa função, o formato do CNPJ deve ser: 000.000.000-00
Sem os pontos, barra e traço apresentará erro!!


Função:
     /**
      * Verifica se o CPF informado é valido
      * @param     string
      * @return     bool
      */
     function valid_cpf($cpf)
     {
         // Verifiva se o número digitado contém todos os digitos
         $cpf = str_pad(preg_replace('/[^0-9]/', '', $cpf), 11, '0', STR_PAD_LEFT);

         // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
         if (strlen($cpf) != 11 ||
             $cpf == '00000000000' ||
             $cpf == '11111111111' ||
             $cpf == '22222222222' ||
             $cpf == '33333333333' ||
             $cpf == '44444444444' ||
             $cpf == '55555555555' ||
             $cpf == '66666666666' ||
             $cpf == '77777777777' ||
             $cpf == '88888888888' ||
             $cpf == '99999999999') {
             return FALSE;
         } else {
             // Calcula os números para verificar se o CPF é verdadeiro
             for ($t = 9; $t < 11; $t++) {
                 for ($d = 0, $c = 0; $c < $t; $c++) {
                     $d += $cpf{$c} * (($t + 1) - $c);
                 }

                 $d = ((10 * $d) % 11) % 10;
                 if ($cpf{$c} != $d) {
                     return FALSE;
                 }
             }
             return TRUE;
         }
     }

     // --------------------------------------------------------------------

Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários:
$lang['valid_cpf'] = "O campo %s não é um CPF válido. Use o formato 000.000.000-00";

Para chamar a validação do formulário em um controller, utilize e seguinte linha:
$this->form_validation->set_rules('cpf', 'CPF', 'required|valid_cpf');

Duvidas?? Deixe um comentário...

Codeigniter - Validando CNPJ em formulários

Salve!

Segue agora uma função para validar CNPJ em formulários com o Codeigniter.
Essa função deve ser inserida no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"


Obs: Nessa função, o formato do CNPJ deve ser: 00.000.000/0000-00
Sem os pontos, barra e traço apresentará erro!!


Função:
 /**
      * Verifica se o CNPJ é valido
      * @param     string
      * @return     bool
      */
     function valid_cnpj($str)
     {
         if (strlen($str) <> 18) return FALSE;
         $soma1 = ($str[0] * 5) +
                 ($str[1] * 4) +
                 ($str[3] * 3) +
                 ($str[4] * 2) +
                 ($str[5] * 9) +
                 ($str[7] * 8) +
                 ($str[8] * 7) +
                 ($str[9] * 6) +
                 ($str[11] * 5) +
                 ($str[12] * 4) +
                 ($str[13] * 3) +
                 ($str[14] * 2);
         $resto = $soma1 % 11;
         $digito1 = $resto < 2 ? 0 : 11 - $resto;
         $soma2 = ($str[0] * 6) +
                 ($str[1] * 5) +
                 ($str[3] * 4) +
                 ($str[4] * 3) +
                 ($str[5] * 2) +
                 ($str[7] * 9) +
                 ($str[8] * 8) +
                 ($str[9] * 7) +
                 ($str[11] * 6) +
                 ($str[12] * 5) +
                 ($str[13] * 4) +
                 ($str[14] * 3) +
                 ($str[16] * 2);
         $resto = $soma2 % 11;
         $digito2 = $resto < 2 ? 0 : 11 - $resto;
         return (($str[16] == $digito1) && ($str[17] == $digito2));
     }

     // --------------------------------------------------------------------



Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários:

$lang['valid_cnpj'] = "O campo %s nao e um CNPJ valido. Use o formato 00.000.000/0000-00";


Para chamar a validação do formulário em um controller, utilize e seguinte linha:

$this->form_validation->set_rules('cnpj', 'CNPJ', 'required|valid_cnpj');




Duvidas?? Deixe um comentário...

Codeigniter - Validando Datas e Horas em formulários

De volta do submundo dos sumidos...

Eu vou mostrar aqui duas funções para validar Datas e Horas em formulários utilizando o Codeigniter.
Essas funções devem ser inseridas no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"

Segue as funções:

     /**
      * Verifica se a data informada é valida, formato padrão dd/mm/yyyy
      * caso precise validar em outros formatos adicione nessa função
      * ex: mm/yyyy, mm/yy, etc
      * @param     string
      * @return     bool
      */
     function valid_date($date, $format = 'dd/mm/yyyy')
     {

         $dateArray = explode("/", $date); // slice the date to get the day, month and year separately

         $d = 0;
         $m = 0;
         $y = 0;
         if (sizeof($dateArray) == 3) {
             if (is_numeric($dateArray[0]))
                 $d = $dateArray[0];
             if (is_numeric($dateArray[1]))
                 $m = $dateArray[1];
             if (is_numeric($dateArray[2]))
                 $y = $dateArray[2];
         }

         return checkdate($m, $d, $y) == 1;
     }

     // ---
  
  // --------------------------------------------------------------------

     /**
      * Verifica se a hora informada é valida, formato padrão HH:ii
      * caso precise validar em outros formatos adicione nessa função
      * 
      * @param     string
      * @return     bool
      */
     function valid_hour($hour)
     {
   if(preg_match("/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/", $hour)){
   return TRUE;
  }else{
   return FALSE;
  }

     }

     // ---

Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários.

//---
$lang['valid_date'] = "O campo %s nao e uma data (dd/mm/yyyy) valida.";
$lang['valid_hour'] = "O campo %s nao e uma hora (hh/mm) valida.";

/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */


Para chamar a validação do formulário em um controller, utilize e seguinte linha:
//----
$this->form_validation->set_rules('data', 'Data', 'required|valid_date');
//---


Duvidas?? Deixe um comentário...

sexta-feira, 25 de novembro de 2011

CodeIgniter - Usando CSS e Imagens

Hello World!

Esse tópico pode parecer "meio" sem sentido, mas aqui explicarei um pouco sobre a utilização de CSS e Imagens com o CodeIgniter e onde colocar as imagens e o CSS.

Esse tópico será útil para que pretende trabalhar com Templates no CodeIgniter. E em breve colocarei um tópico sobre o uso de templates com CodeIgniter.

Muitos que estão começando a programar com o CodeIgniter acabam tendo duvidas sobre onde colocar o arquivo CSS e a pasta das imagens do site.

Para resolver esse problema, coloque o arquivo CSS diretamente no pasta raiz do site e carregue o arquivo assim:

<link href="style.css" rel="stylesheet" type="text/css" />

Pronto! Isso resolve o seu problema.
Para as imagens é a mesma coisa, crie a pasta de imagens na raiz do site e irá funcionar.

Agora, se você pretende usar templates para o site, a conversa muda de rumo.

Para fazer algo minimamente organizado, você deve armazenar todos os arquivos do template na mesma pasta das Views, correto?

Exemplo:
Template 1: /application/view/template1
Template 2: /application/view/template2

E dentro dessas pastas de templates as imagens e o CSS.

Por tanto, para carregar por exemplo o CSS, a tag deveria ser assim:

<link href="http://site/application/views/template1/style.css" rel="stylesheet" type="text/css" />

Parece simples se o CodeIgniter não bloqueasse esse acesso.
Sem mexer na configuração do CodeIgniter, isso não irá funcionar. Pelo menos nas versões 2.x do CI.

Para resolver isso você precisa mudar a configuração do arquivo .htaccess que está DENTRO da pasta "application".

O arquivo .htaccess deve ficar assim:

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Feito isso, seus arquivos de CSS e imagens que estão na pasta "views" estarão acessíveis.

Duvidas? Deixe um comentário.

CodeIgniter - Executando Subqueries

Hi!

Hoje eu vou mostrar uma biblioteca bem interessante que eu encontrei enquanto procurava uma forma de realizar subqueries com o Active Record do CodeIgniter.

Antes de mais nada, eu vou explicar o motivo dessa subquery:

Quando se usa o SELECT SUM() do Mysql junto com LIMIT, você precisa usar subquery para o SUM() somar apenas aquilo que foi determinado no LIMIT.

Vamos ao exemplo que NÃO funciona:

SELECT SUM('campo_numerico') FROM tabela LIMIT 25

Isso definitivamente não irá funcionar corretamente e a soma do campo numerico será realizada sobre toda a clausula WHERE (se existir) e não apenas dentro do que foi determinado no LIMIT 25.

Para funcionar, a query deve ser assim:

SELECT SUM('campo_numerico') FROM (SELECT campo_numerico FROM tabela LIMIT 25) AS subquery;

Ai sim você terá o resultado da soma do campo numerico apenas daquilo que foi determinado no LIMIT.

Nessa bibliteca, é possível realizar essa subquery usando Active Record do CodeIgniter.
https://github.com/NTICompass/CodeIgniter-Subqueries

Vejam como essa subquery ficaria com essa biblioteca em uma Model:

$this->db->select_sum('campo_numerico');

$sub = $this->subquery->start_subquery('from');
$sub->select('campo_numerico');
$sub->from('tabela');
$sub->limit(25);
$this->subquery->end_subquery('campo_numerico');

$sql = $this->db->get();
return $sql->result();


Simples não?
Isso funcionou perfeitamente bem no meu servidor local, já no meu servidor WEB deixou a desejar e não funcionou... Ainda não descobri o porque mas assim que resolver eu posto a solução.

Mas a biblioteca é muito boa!
Vale a pena conferir!

CodeIgniter - Upload de Imagem

Salve, salve!

Agora eu vou mostrar como fazer Upload de imagem usando o CodeIgniter.
Quanto a View, ela pode ter o mesmo formulário utilizado no exemplo anterior de upload de imagem com PHP.

Para fazer o upload, coloque o seguinte código dentro do Controller que receberá os dados do formulário:


$config['upload_path'] = './upload/imagem/';//Caminho onde será salvo
$config['allowed_types'] = 'gif|jpg|png';//Tipos de imagem aceito
$config['max_size'] = '2048';//Tamanho - Aqui aceitamos até 2 Mb
$config['overwrite']  = FALSE;//Não irá sobre-escrever o arquivo
$config['encrypt_name'] = TRUE;//Trocará o nome do arquivo para um HASH


$field_name1 = "photo";// Nome do campo INPUT do formulário $this->load->library('upload'); $this->upload->initialize($config); 

//Faz o upload if(!$this->upload->do_upload($field_name1)) {     $error = array('erro' => $this->upload->display_errors()); }else{     $upload_data = $this->upload->data();     $nome_do_arquivo_gravado = $upload_data['file_name'];  } //Fim - Upload da Imagem

sábado, 19 de novembro de 2011

Importar Informações de XML Utilizando o CodeIgniter

Salve, salve!

Agora vamos comentar um pouco sobre a importação de XML para aplicações desenvolvidas utilizando o CodeIngiter.

O CodeIgniter por si só, não oferece grandes recursos para XML até por ser uma tarefa extremamente simples! Usando funções do próprio PHP como o “Simple XML” com o CodeIgniter fica muito simples.

Vamos ao XML:

<?xml version="1.0" encoding="utf-8"?>
<lista>

<produto>
<nome>Produto Numero 1</nome>
<tipo>Tipo 1</tipo>
<valor>100,00</valor>
</produto>

<produto>
<nome>Produto Numero 2</nome>
<tipo>Tipo 2</tipo>
<valor>50,00</valor>
</produto>

</lista>



Agora o Controler, na função que recebe e carrega o arquivo.

$url_xml = $this->input->post('xml');//http://www.site.com.br/arquivo.xml
if($xml_content['xml'] = simplexml_load_file($url_xml)){
$this->load->view('mostra_xml_view', $xml_content);
}else{
$this->load->view('xml_error_view');
}


A View, que irá mostrar o conteúdo do arquivo.

for($i=0; $i < count($xml->produto); $i++) {
echo "Nome: ", $xml->produto->nome, "<br />";
echo "Tipo: ", $xml->produto->tipo, "<br />";
echo "Valor: ", $xml->produto->valor, "<br />";
echo "<br />";
}


Isso deve resolver muitos problemas considerando que esse código da View poderia de utilizado no Controler para incluir os dados no banco de dados.

Duvidas? Deixe um comentário…

CodeIgniter – Traduzindo as Mensagens de Erro na Validação de Formulários

Salve!

O CodeIgniter tem uma biblioteca para validação de formulários chamada: form_validation

Para traduzir as mensagens de erro, localize o arquivo chamado “form_validation_lang”. Este arquivo deve ser encontrado em: /system/language/english/.

Veja a estrutura do arquivo:

<?php
$lang['required'] = "O campo %s &eacute; requerido."; $lang['isset'] = "The %s field must have a value."; $lang['valid_email'] = "O campo de %s precisa conter um endere&ccedil;o de e-mail v&aacute;lido."; $lang['valid_emails'] = "The %s field must contain all valid email addresses."; $lang['valid_url'] = "O campo %s precisa conter uma URL v&aacute;lida."; $lang['valid_ip'] = "The %s field must contain a valid IP."; $lang['min_length'] = "O Campo %s precisa ter pelo menos %s caracteres."; $lang['max_length'] = "O Campo %s pode ter no maximo %s caracteres."; $lang['exact_length'] = "O Campo %s precisa ter exatamente %s caracteres."; $lang['alpha'] = "The %s field may only contain alphabetical characters."; $lang['alpha_numeric'] = "O Campo %s s&oacute; pode conter caracteres alpha-num&eacute;ricos."; $lang['alpha_dash'] = "The %s field may only contain alpha-numeric characters, underscores, and dashes."; $lang['numeric'] = "O Campo %s s&oacute; pode conter numeros."; $lang['is_numeric'] = "The %s field must contain only numeric characters."; $lang['integer'] = "O campo %s precisa conter um numero inteiro."; $lang['regex_match'] = "The %s field is not in the correct format."; $lang['matches'] = "O Campo %s n&atilde;o confere com o campo %s."; $lang['is_natural'] = "The %s field must contain only positive numbers."; $lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero."; $lang['decimal'] = "The %s field must contain a decimal number."; $lang['less_than'] = "The %s field must contain a number less than %s."; $lang['greater_than'] = "The %s field must contain a number greater than %s."; $lang['valid_cnpj'] = "O campo %s n&atilde;o &eacute; um CNPJ v&aacute;lido. Use o formato 00.000.000/0000-00"; $lang['valid_cpf'] = "O campo %s n&atilde;o &eacute; um CPF v&aacute;lido. Use o formato 000.000.000-00"; $lang['valid_date'] = "O campo %s n&atilde;o &eacute; uma data (dd/mm/yyyy) v&aacute;lida."; $lang['valid_hour'] = "O campo %s n&atilde;o &eacute; uma hora (hh/mm) v&aacute;lida.";
/* End of file form_validation_lang.php */ /* Location: ./system/language/english/form_validation_lang.php */

Como você pode notar, algumas mensagens já foram traduzidas. E é muito simples!

CodeIgniter e PagSeguro – Retorno Automático



Salve!

Vamos falar um pouco sobre a integração do UOL PagSeguro com aplicações desenvolvidas utilizando o CodeIgniter como framework.

Após muitos testes, buscas pela internet, perguntas em Fórum de discussão, eu consegui fazer pelos meus próprios meios. E compartilho aqui pois acredito que outras pessoas estejam com o mesmo problema.

Enviar as informações de pagamento para o PagSeguro é muito fácil e eu não preciso comentar nada por aqui. O grande “vilão” dessa conversa é o Retorno Automático.

Vamos começar pelo Controler.
Obs. Imagine que essa função seria exatamente a informada nas configurações de retorno do PagSeguro (http://www.seusite.com.br/retorno_automatico).


public function retorno_pagseguro(){

if (count($_POST) > 0) {

// POST recebido, indica que é a requisição do NPI.
//$npi = new PagSeguroNpi();
$this->load->library(PagSeguroNpi);//Carrega a library
$result = $this->PagSeguroNpi->notificationPost();

$transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';

if ($result == "VERIFICADO") {
//O post foi validado pelo PagSeguro.
$source = array('.', ',');
$replace = array('', '.');
$pagamento['TransacaoID'] = $_POST['TransacaoID'];
$pagamento['Referencia'] = $_POST['Referencia'];
$pagamento['TipoPagamento'] = $_POST['TipoPagamento'];
$pagamento['StatusTransacao'] = $_POST['StatusTransacao'];
$pagamento['Anotacao'] = $_POST['Anotacao'];
$pagamento['DataTransacao'] = $_POST['DataTransacao'];
$pagamento['ProdValor_1'] = str_replace($source, $replace, $_POST['ProdValor_1']);
$this->load->model('financeiro_model');//Carrega a Model
$this->financeiro_model->GravaRetorno($pagamento);//Grava os dados recebido
if($_POST['StatusTransacao'] == 'Aprovado'){
$histpagto = $this->financeiro_model->GetPagtoByID($_POST['Referencia']);
$pag['valor'] = $histpagto[0]->nu_valor;
$pag['idanunciante'] = $histpagto[0]->id_anunciante;
$this->financeiro_model->AtualizaCredito($pag);
$pag['idtransacao'] = $_POST['TransacaoID'];
$pag['idpagto'] = $_POST['Referencia'];
$this->financeiro_model->AtualizaHistPag($pag);
$informacao['status'] = '1';
}elseif($_POST['StatusTransacao'] == 'Em Análise'){
$informacao['status'] = '2';
}elseif($_POST['StatusTransacao'] == 'Aguardando Pagto'){
$informacao['status'] = '3';
}elseif($_POST['StatusTransacao'] == 'Completo'){
$informacao['status'] = '4';
}elseif($_POST['StatusTransacao'] == 'Cancelado'){
$informacao['status'] = '5';
}
} else if ($result == "FALSO") {
//O post não foi validado pelo PagSeguro.
$informacao['status'] = '1000';
} else {
//Erro na integração com o PagSeguro.
$informacao['status'] = '3';
}

} else {
// POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
// No término do checkout o usuário é redirecionado para este bloco.
$informacao['status'] = '3';
}

$this->load->view('header_interna_view', $page_infos);//Carrega o cabeçalho
$this->load->view('empresa/sidebar_view');//Carrega a Sidebar
$this->load->view('financeiro/retorno_view', $informacao);//Carrega a view de conteudo

$this->load->view('footer_view');//carrega do rodapé

}


Agora a library:

<?php

header('Content-Type: text/html; charset=ISO-8859-1');

define('TOKEN', '2EEF70CFFCB547DBA7823F19C7D17F24');

class PagSeguroNpi {

private $timeout = 20; // Timeout em segundo

public function notificationPost() {
$postdata = 'Comando=validar&Token='.TOKEN;
foreach ($_POST as $key =>$value) {
$valued = $this->clearStr($value);
$postdata .= "&$key=$valued";
}
return $this->verify($postdata);
}

private function clearStr($str) {
if (!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
return $str;
}

private function verify($data) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = trim(curl_exec($curl));
curl_close($curl);
return $result;
}

}

?>


Testem! Qualquer problema, sugestão ou qualquer outra coisa, deixe um comentário.

Codeigniter: Pegando o ID auto-gerado depois de executar um INSERT



Olá,

Aqui vai uma dica simples mas que eu quebrei a cabeça quando comecei a utilizar o CodeIgniter.

Como pegar o ID auto-gerado pelo banco de dados depois de executar uma query INSERT?
Muito simples! Veja o exemplo a baixo:


$var['nome'] = $this->input->post('nome');
$var['email'] = $this->input->post('email');
//Recebendo os valores do formulário e armazenando em um array

$this->load->module('modulo_db');//Carrega a Model
if($this->modulo_db->grava_form($var)){
$id_auto_gerado = $this->db->insert_id();//Pega o ID auto-gerado e armazena na variavel
}

Simples não?

Este código deve ser utilizado em Controler.