Você está na página 1de 20

Ambiente de desenvolvimento

XAMPP
O XAMPP é um servidor apache para instalação local, ele contém o PHP na versão 7 e um
banco de dados, ideal para testar um sistema em PHP no seu computador antes da publicação
na web. Faça o download do XAMPP em https://www.apachefriends.org/download.html
Após o download, execute o arquivo de instalação, ao final da instalação abra o painel de
controle do XAMPP, clique em “start” para iniciar o serviço.

Os projetos deverão ser salvos na pasta “httdocs” dentro da pasta XAMPP e para acessar no
navegador bas acessar a url http://localhost/pasta/arquivo.php

Para acessar o phpmyadmin que é o gerenciador do banco de dados local, basta acessar
Pelo navegador a seguinte URL http://localhost/phpmyadmin/
Utilize o banco de dados “test” ou crie uma nova base de dados.

Para mais informações sobre o XAMPP acesse:


https://www.apachefriends.org/faq_windows.html

Sobre MVC
Os 13 frameworks MVC mais usados no mercado
https://mashable.com/2014/04/04/php-frameworks-build-applications/
O que é o MVC
https://pt.wikipedia.org/wiki/MVC
https://pt.slideshare.net/leopp/apresentao-mvc-13432782
https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308
Estrutura de um Controller
<?php namespace App\Controllers;

use App\Models\Usuarios;

class Usuarios extends BaseController


{
//Aqui ficam os seus métodos, exemplo:
Public function nomeDoMétodo()
{
//Instruções
}

//--------------------------------------------------------------------
}

Estrutura de um Model
<?php namespace App\Models;

use CodeIgniter\Model;

class Model_usuarios extends Model


{
protected $table = 'marco_fin_users';
protected $allowedFields = ['id','nome','email','senha'];

public function getUsers($email, $senha)


{
return $this->asArray()->where(['email' => $email, 'senha' => $senha])->orderBy('nome',
'ASC')->first();
}

Estrutura de uma View


Uma View é igual a um HTML, tem o mesmo código, a diferença é que uma View deve ser
salva com a extensão .php e uma View suporta trechos de código PHP como o exemplo a
seguir onde o link exibe uma instrução PHP que retorna a URL base do app:
<div class="form-group mt-3">
<a href="<?=base_url('public/usuarios/cadastro_usuario')?>">REGISTRE-SE</a>
</div>

Codeigniter 4
O CodeIgniter 4 é um framework MVC de desenvolvimento em PHP com várias bibliotecas e
classes para diversas tarefas, para usar faça o download do CodeIgniter 4 em
https://codeigniter.com/
A pasta com os arquivos do framework deverão ser copiados para a pasta C:/xampp/httdocs
Esta pasta é o seu site. Renomeie a pasta de instalação do CodeIgniter para “financas”, esse é
o nome do projeto que vamos desenvolver.

Importante: O CodeIgniter 4 depende do PHP versão 7 ou maior e de algumas extensões do


PHP habilitadas, faça um teste carregando algum arquivo com a função phpinfo(); e veja se a
extensão INTL e o MySQLi estão habilitados.

Para Habilitar extensões e recursos do PHP:


Abra o arquivo de configuração php ( php.ini, ) geralmente na mesma pasta que o executável
php, ou seja na pasta xampp/php/ e descomente a linha ;extension=intl, basta remover o
caractere ";" Essa extensão ativa a internacionalização das aplicações, o CodeIgniter não
funciona sem essa extensão.

OPCIONAL: Criar Host Virtual No XAMPP


Abra o httpd-vhosts.conf arquivo Apache que está localizado em
C:\xampp\apache\conf\extra\httpd-vhosts.conf, adicione abaixo das linhas de código no final do
arquivo.
DocumentRoot "C:/xampp/htdocs/financas/public"
ServerName site-financas

Abra o arquivo hosts que está localizado em C:\Windows\System32\drivers\etc\hosts,


código adicionado abaixo neste arquivo no final.
127.0.0.1 site-financas

Abra o navegador e digite http://site-financas


Se aparecer a tela de boas vindas do CodeIgniter significa que deu tudo certo e que você pode
iniciar os trabalhos!
IMPORTANTE: NORMALIZAR UM SERVIDOR XAMPP PARA OUTROS PROJETOS
Quando você faz esses procedimentos para configurar o XAMPP para rodar um projeto em
CodeIgniter, o XAMPP fica exclusivo para esse projeto, se você tentar acessar outros projetos
digitando no campo URL do navegador localhost/nome-do-outro-projeto
Simplesmente não vai funcionar. Então recomendamos comentar as seguintes linhas no
arquivo C:\xampp\apache\conf\extra\httpd-vhosts.conf, conforme abaixo:
#DocumentRoot "C:/xampp/htdocs/financas/public"
#ServerName site-financas
Comente também a linha inserida no arquivo C:\Windows\System32\drivers\etc\hosts conforme
exemplo abaixo:
#127.0.0.1 site-financas
Quando quiser trabalhar novamente em seu projeto CodeIgniter, simplesmente descomente
essas linhas.

Sobre instalação do CodeIgniter 4 no Xampp, leia esse artigo:


https://www.phpflow.com/php/how-to-install-configure-codeigniter-4-in-xampp/

Projeto para desenvolver


CONTROLE FINANCEIRO PESSOAL - Com Login email / senha acessa o web app para
cadastrar receitas e despesas e visualizar o extrato com as movimentações.
Wireframe

Etapas do projeto - após preparação do ambiente de desenvolvimento


1. Criação das tabelas do banco de dados - Com o servidor XAMPP em execução, pelo
navegador acesse localhost/phpmyadmin e crie um novo banco de dados com nome
“financas”
a. TABELA fin_users | campos: id (chave primária), nome, email, senha
b. TABELA fin_movimento | campos: id (chave primária), id_user, descricao,
valor, tipo, data

2. Configuração do projeto - Abra o visual code e abra a pasta do projeto


xampp/htdocs/financas
a. Abra o arquivo App na pasta app/config e informe a URL do projeto
http://localhost/financas/public/ essa URL deverá ser modificada quando o
projeto for publicado num servidor da internet.
b. Renomeie o arquivo env para .env - Nesse arquivo oculto você pode
especificar uma série de configurações do ambiente, isso é muito útil para
projetos que ficarão publicados no Github, as informações sensíveis como
conexão a banco de dados não ficarão disponíveis. Recomendamos fortemente
colocar as definições de banco de dados neste arquivo ao invés de inserir essas
informações no arquivo Database.php
c. Deixe as configurações de banco de dados no arquivo .env como o exemplo
abaixo:
database.default.hostname = localhost
database.default.database = financas
database.default.username = root
# database.default.password = root
database.default.DBDriver = MySQLi

d. No arquivo .env insira a seguinte linha para habilitar a depuração de erros


durante o desenvolvimento:
CI_ENVIRONMENT = development

IMPORTANTE: Essas configurações de banco de dados, ambiente de


desenvolvimento e URL base deverão ser modificadas quando o projeto for
migrado para um servidor de produção.

3. Models, Controllers e Views para a página de login - a página de login estará


associada ao index do site, é a página exibida quando o site for acessado. No modelo
MVC a primeira página carregada é definida pelo Controller default, essa informação é
definida no arquivo App/Config/Routes.php nesta linha
$routes->setDefaultController('Home');
a. Abra o Controller Home na pasta App/Controllers
b. Modifique o método index do Controller Home conforme o código abaixo:
public function index()
{
helper(‘form’);
echo view('header');
echo view('login');
echo view('footer');
}

Este código vai carregar a view “login” ao invés da página de boas vindas
padrão. As views header e footer estão separadas para facilitar o
desenvolvimento, o header e o footer serão utilizados em várias páginas
sem a necessidade de repetir o mesmo código em todas as páginas.

c. Na pasta App/Views inclua os arquivos header.php e footer.php


Código da view header:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<title>FINANÇAS</title>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>

<link
rel="stylesheet"

href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"

integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYp
YcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA=="
crossorigin="anonymous"
/>
<!-- Bootstrap CSS -->
<link
rel="stylesheet"

href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"

integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr
7x9JvoRxT2MZw1T"
crossorigin="anonymous"
/>
<link rel="stylesheet" href="./css/lightbox.css" />
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet" />
<link rel="stylesheet" href="./css/estilos.css" />
</head>

<body>

Código da view login (observe o trecho destacado):


<div class="col-md-6 offset-md-3 mt-5">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><strong>Suas Finanças - Login </strong></h3>
</div>
<div class="panel-body">
<?php
$attributes = ['class' => 'form-control', 'id' => 'frm-login'];
echo form_open('usuarios/login', $attributes);
?>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email"
placeholder="seu email">
</div>
<div class="form-group">
<label for="senha">Senha</label>
<input type="password" class="form-control" id="senha"
name="senha" placeholder="sua senha">
</div>
<button type="submit" class="btn btn-sm btn-primary">Entrar</button>
<div class="form-group mt-3">
<a href="#">Não tem conta? REGISTRE-SE</a>
</div>
</form>
</div>
</div>
</div>

OBSERVAÇÃO: Veja que não é utilizado a tag form, o código utilizado vai
renderizar a tag form da seguinte forma:
<form action="http://localhost/financas/index.php/usuarios/login" class=""
id="frm-login" method="post" accept-charset="utf-8">
O CodeIgniter trabalha dessa forma para que você não precise reescrever as
tags form do seu app se você habilitar algum recurso de segurança como o
CRSF ou outro, dessa forma esses atributos serão inseridos automaticamente.

Código da View footer:

<!-- Optional JavaScript -->


<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script

src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"

integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwr
nQq4sF86dIHNDz0W1"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"

integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x
0xIM+B07jRM"
crossorigin="anonymous"
></script>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>

<script>
//Custom JS

</script>

</body>
</html>

OBSERVAÇÃO: Todo link no sistema é um controller, assim como os atributos


“action” dos formulários. Para organizar o desenvolvimento, vamos criar um
controller para trabalhar todas as rotinas de usuários.

4. Models, Controllers e Views para a página de login


a. Mensagens na página de login para erros de senha ou login:
Inclua uma DIV vazia, um alert do Bootstrap logo acima da abertura do
formulário como esse:
<div class="alert alert-warning" role="alert"></div>

b. O controller usuario/login fará o teste de login e o envio da mensagem de erro


para a view login, veja abaixo o código comentado do model e view.
c. Model Model_usuario.php
<?php namespace App\Models;

use CodeIgniter\Model;

class Model_usuarios extends Model


{
//Definição da tabela e proteção dos campos
protected $table = 'fin_users';
protected $allowedFields = ['id','nome','email','senha'];
public function getUsers($email, $senha)
{
//Retorna consulta para a tabela de usuários
return $this->asArray()->where(['email' => $email, 'senha' =>
$senha])->orderBy('nome', 'ASC')->first();
}

d. Controller usuario/login com código comentado:


//processa o login na página de entrada
public function login()
{
helper('form');
//Variáveis $email e $senha com os campos do formulário
$email = $this->request->getPost('email');
$senha = md5($this->request->getPost('senha'));
$usuarios = new Model_usuarios(); //inicializa o model
//retorna os dados na variável $dadosuser
$dadosuser = $usuarios->getUsers($email, $senha);
//Se nada retornar, usuário não está cadastrado
if($dadosuser == null)
{
$data['msg'] = 'Email ou Senha não conferem.';
echo view('header');
//carrega a view login passando a mensagem
echo view('login', $data);
echo view('footer');
}else{
echo 'Deu certo, carrega o aplicativo';
}
}

e. Inclua a seguinte alteração na view login para que a mensagem de erro seja
exibida APENAS SE FOR NECESSÁRIO:
<?php if(isset($msg)): ?>
<div class="alert alert-warning" role="alert"><?= $msg ?></div>
<?php endif; ?>

f. Faça um teste com um usuário inexistente e depois experimente usar um


usuário válido, veja que será exibido a mensagem “Deu certo, carrega o
aplicativo”.

5. Controllers e View para a página de cadastro de usuário


Métodos para o cadastro de usuário no Controller Usuario:
//Carrega as views de usuário
public function cadastro_usuario()
{
helper('form');
helper('date');

echo view('header');
echo view('cadastro_usuario');
echo view('footer');
}

//Insere novo usuário na tabela através do model de usuários


//e retorna para a página de login
public function novo_usuario()
{
$usuarios = new Model_usuarios();
$usuarios->save([
'nome' => $this->request->getPost('nome'),
'email' => $this->request->getPost('email'),
'senha' => md5($this->request->getPost('senha'))
]);
return redirect()->to(base_url('home/index'));
}

View da página de cadastro de usuário:


<div class="col-md-6 offset-md-3 mt-5">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><strong>Suas Finanças - Novo usuário </strong></h3>
</div>
<div class="panel-body">
<?php
$attributes = ['class' => '', 'id' => 'frm-cadastro-user'];
echo form_open('usuarios/novo_usuario', $attributes);
?>
<div class="form-group">
<label for="nome">Nome</label>
<input type="text" class="form-control" id="nome" name="nome"
placeholder="seu nome">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email"
placeholder="seu email">
</div>
<div class="form-group">
<label for="senha">Senha</label>
<input type="password" class="form-control" id="senha" name="senha"
placeholder="sua senha">
</div>
<button type="submit" class="btn btn-sm btn-primary">Cadastrar</button>
</form>
</div>
</div>
</div>

6. Models, Controllers e Views para a página de consulta (extrato)


Para uma melhor organização dos códigos vamos separar toda a lógica da página com
o extrato e os movimentos num controller com nome Extrato
a. Código inicial do controller Extrato:
<?php namespace App\Controllers;

use App\Models\Model_usuarios;

class Extrato extends BaseController


{
public function index()
{
//Modelo para as views: https://bootsnipp.com/snippets/Q0dAX
echo view('header');
echo view('sidebar');
echo view('extrato');
echo view('footer');
}

//--------------------------------------------------------------------
}

b. Alteração no controller Usuarios/login


Ao efetuar o login o novo controller Extrato/index precisará ser carregado, o
Codeigniter faz isso com o redirecionamento. Modifique o trecho
echo 'Deu certo, carrega o aplicativo';
Por
return redirect()->to(base_url('Extrato/index'));

c. Incluir o seguinte CSS deste modelo https://bootsnipp.com/snippets/Q0dAX


na view header.php dentro de tags <style></style>

d. Código inicial da view sidebar.php


<div class="page-wrapper chiller-theme toggled">
<a id="show-sidebar" class="btn btn-sm btn-dark" href="#">
<i class="fas fa-bars"></i>
</a>
<nav id="sidebar" class="sidebar-wrapper">
<div class="sidebar-content">
<div class="sidebar-brand">
<a href="#">suas finanças</a>
<div id="close-sidebar">
<i class="fas fa-times"></i>
</div>
</div>
<div class="sidebar-header">
<div class="user-pic">
<img class="img-responsive img-rounded"
src="https://raw.githubusercontent.com/azouaoui-med/pro-sidebar-template/gh-p
ages/src/img/user.jpg"
alt="User picture">
</div>
<div class="user-info">
<span class="user-name">Olá fulano</span>
</div>
</div>
<!-- sidebar-header -->
<div class="sidebar-menu">
<ul>
<li class="header-menu">
<span>Opções</span>
</li>
<li class="sidebar-dropdown">
<a href="#">
<i class="fa fa-tachometer-alt"></i>
<span>Seus dados</span>
</a>
</li>
<li class="sidebar-dropdown">
<a href="#">
<i class="fa fa-tachometer-alt"></i>
<span>Nova entrada</span>
</a>
</li>
<li class="sidebar-dropdown">
<a href="#">
<i class="fa fa-tachometer-alt"></i>
<span>Extrato</span>
</a>
</li>
</ul>
</div>
<!-- sidebar-menu -->
</div>
</nav>
<!-- sidebar-wrapper -->

e. Código inicial para a view extrato.php


<main class="page-content">
<!-- Conteúdo -->
<div class="container-fluid">

<!-- Cabeçalho da página -->


<h1 class="h3 mb-4 text-gray-800">Extrato - saldo R$<span
class="valor">9999,00</span></h1>

<div class="row">
<!-- Coluna de receitas -->
<div class="col-md-6">
<p><strong>Receitas - total R$ 9999,00</strong></p>
<div class="card p-1 mb-2">
<div class="row">
<div class="col-3">
<small>10/12/2020</small>
</div>
<div class="col-4">
Movimento
</div>
<div class="col-3">
R$ 9000,00
</div>
<div class="col-2">
<i class="fas fa-edit editar"></i>
&nbsp; <i class="fas fa-trash-alt deletar"></i>
</div>
</div>
</div>
</div>

<!-- Coluna de despesas -->


<div class="col-md-6">
<p><strong>Receitas - total R$ 9999,00</strong></p>
<div class="card p-1 mb-2">
<div class="row">
<div class="col-3">
10/12/2020
</div>
<div class="col-4">
Movimento
</div>
<div class="col-3">
R$ 9000,00
</div>
<div class="col-2">
<i class="fas fa-edit editar"></i>
&nbsp; <i class="fas fa-trash-alt deletar"></i>
</div>
</div>
</div>
</div>

</div>
<!-- /.container-fluid -->
</main>

</div>

f. Faça um login e experimente o carregamento das views.

g. Transportando os dados do usuário para o controller Extrato/index


O transporte de dados para as views é feita através de variáveis mas isso não
funciona entre controllers, nesse caso usaremos variáveis de sessão, que são
acessadas em qualquer controller enquanto a seção estiver ativada. Abra o
controller Usuario e acrescente a função construtora logo no início do controller
function __construct()
{
$this->session = \Config\Services::session();
$this->session->start();
}
A função construtora pode ser utilizada para o carregamento de recursos que
serão usados por vários métodos, neste caso o recurso de seções está sendo
carregado para uso no método login. Modifique a estrutura IF do método login
conforme abaixo:
if($dadosuser == null)
{
$data['msg'] = 'Email ou Senha não conferem.';
echo view('header');
//carrega a view login passando a mensagem
echo view('login', $data);
echo view('footer');
}else{
$this->session->set('id', $dadosuser['id']);
$this->session->set('nome', $dadosuser['nome']);
return redirect()->to(base_url('Extrato/index'));
}

No exemplo acima, duas variáveis de sessão iid e nome foram criadas utilizando
os dados do usuário para que sejam utilizadas em qualquer método do controller
Usuario.

h. Utilizando as variáveis de sessão: Modifique o controller Extrato conforme o


exemplo abaixo:
<?php namespace App\Controllers;

use App\Models\Model_usuarios;

class Extrato extends BaseController


{
function __construct()
{
$this->session = \Config\Services::session();
$this->session->start();
}

public function index()


{
//Modelo para as views: https://bootsnipp.com/snippets/Q0dAX
$data['id'] = $this->session->get('id');
$data['nome'] = $this->session->get('nome');
echo view('header');
echo view('sidebar', $data);
echo view('extrato', $data);
echo view('footer');
}

//--------------------------------------------------------------------
}

i. Abra a view sidebar.php para usarmos os dados do controller Extrato/index.


j. Modifique o trecho
<span class="user-name">Olá Fulano</span>
para
<span class="user-name">Olá <?= $nome ?></span>

k. Faça um login novamente e veja se o seu nome é exibido.

7. Models, Controllers e Views para a página de adição de despesas e receitas


a. View do formulário - salve como “novomovimento.php”:
<div class="col-md-6 offset-md-3 mt-5">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><strong>Suas Finanças - Incluir movimento
</strong></h3>
</div>
<div class="panel-body">
<?php
$attributes = ['class' => '', 'id' => 'frm-novo-movimento'];
echo form_open('extrato/processa_movimento', $attributes);
?>
<div class="form-group">
<label for="movimento">Movimento</label>
<input type="text" class="form-control" id="movimento"
name="movimento" placeholder="Movimento" required>
</div>

<div class="form-check form-check-inline">


<input class="form-check-input" type="radio" name="tipo"
id="opcao1" value="Despesa">
<label class="form-check-label" for="opcao1">Despesa</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="tipo"
id="opcao2" value="Receita">
<label class="form-check-label" for="opcao2">Receita</label>
</div>

<div class="form-group">
<label for="valor">Valor</label>
<input type="Number" class="form-control" id="valor"
name="valor" required>
</div>

<div class="form-group">
<label for="data">Valor</label>
<input type="datetime" class="form-control" id="data"
name="data" required>
</div>

<input type="hidden" name="id_user" value="">

<button type="submit" class="btn btn-sm


btn-primary">Inserir</button>
</form>
</div>
</div>
</div>

b. Controller para exibição da inclusão de novo movimento - Controller Extrato


public function novo_movimento()
{
helper('form');
helper('date');

$data['id'] = $this->session->get('id');
$data['nome'] = $this->session->get('nome');
echo view('header');
echo view('sidebar', $data);
echo view('frm_novomovimento', $data);
echo view('footer');
}
c. Experimente acessar site-financas/novo_movimento e veja se o formulário é
carregado.

8. Processo de migração, como publicar o projeto e o banco de dados no


servidor web -
a. Faça a importação do banco de dados criado localmente para a o banco de
dados da sua hospedagem, utilize o phpMyadmin da sua hospedagem ou o
Workbench no seu computador.
b. Faça o upload dos arquivos da pasta “financas” para a raiz da sua hospedagem
ou para uma pasta na sua hospedagem dependendo da sua necessidade.
c. No diretório public /, copie index.php e .htaccess para o diretório raiz do projeto.
No diretório raiz do projeto, abra index.php e edite a seguinte linha:
index.php -> $ pathPath = FCPATH. '../app/Config/Paths.php';
para
index.php => $ pathPath = FCPATH. 'app / Config / Paths.php';

PROJETO COM TODOS OS CÓDIGOS FINALIZADOS, PODE SER BAIXADO NESTE


LINK:
https://drive.google.com/drive/folders/1ZRacmlIudzS__M_MrdPlJdgNlMmZaCVh?usp=s
haring

DICAS - Links:
Excelente vídeo-aula sobre um pequeno CRUD no CodeIgniter
https://www.youtube.com/watch?v=6e3KG8NrHOM&t=137s

CLASSE QUERY BUILDER - VANTAGENS


● Simplicidade, em alguns casos poucas linhas de código uma ou duas
● Permite uma única sintaxe para qualquer banco de dados
● consultas mais seguras, os valores são tratados automaticamente pelo sistema

Documentação: https://www.codeigniter.com/user_guide/database/query_builder.html

Para recarregar uma View que utiliza formulários não deve esquecer de adicionar ao
controller o carregamento dos recursos de formulários
Echo helper('form');

CSRF - Recurso para aumentar a segurança dos formulários do site.


Abaixo um exemplo de configuração no arquivo .env
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'nomedoseutoken;
$config['csrf_cookie_name'] = 'nomedoseucookie';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

Na VIEW que contém o formulário basta usar a função form_open('controller/método')


que será adicionado um campo oculto ao formulário com o token.

● EXEMPLO DE CONTROLLER RETORNANDO JSON:


Este controller inicia com verificação de usuário logado.

public function eleitores_json()


{
if ($this->ion_auth->logged_in())
{
$eleitores = $this->eleitores_model->get_eleitores();
return $this->output
->set_content_type('application/json')
->set_output(json_encode($eleitores));
}
else
{
redirect('ion_autentic/index', 'refresh');
}
}

● USO DO PLUGIN JQUERY DATATABLE: Perfeito para quantidade pequena / média de


dados. Para grande quantidade recomenda-se o uso de Ajax.
SOLUÇÃO: Paginação do Codeigniter.

Você também pode gostar