CodeIgniter - Guia Rápido

CodeIgniter é um framework de desenvolvimento de aplicativos, que pode ser usado para desenvolver sites, usando PHP. É uma estrutura de código aberto. Possui um conjunto muito rico de funcionalidades, o que aumentará a velocidade do trabalho de desenvolvimento de sites.

Se você conhece bem o PHP, então o CodeIgniter tornará sua tarefa mais fácil. Possui um conjunto muito rico de bibliotecas e auxiliares. Ao usar o CodeIgniter, você economizará muito tempo, se estiver desenvolvendo um site do zero. Além disso, um site construído no CodeIgniter também é seguro, pois tem a capacidade de prevenir vários ataques que ocorrem através de sites.

Recursos do CodeIgniter

Algumas das características importantes do CodeIgniter estão listadas abaixo -

  • Sistema Baseado em Model-View-Controller

  • Peso extremamente leve

  • Classes de banco de dados completas com suporte para várias plataformas.

  • Suporte de banco de dados do Query Builder

  • Validação de Formulário e Dados

  • Segurança e filtragem XSS

  • Gestão de Sessão

  • Aula de envio de email. Suporta anexos, e-mail HTML / texto, vários protocolos (sendmail, SMTP e Mail) e muito mais.

  • Biblioteca de manipulação de imagens (corte, redimensionamento, rotação, etc.). Suporta GD, ImageMagick e NetPBM

  • Classe de upload de arquivos

  • Aula FTP

  • Localization

  • Pagination

  • Criptografia de Dados

  • Benchmarking

  • Cache de página inteira

  • Registro de erros

  • Perfil de aplicativo

  • Aula de calendário

  • Classe de agente de usuário

  • Classe de codificação Zip

  • Classe de mecanismo de modelo

  • Classe Trackback

  • Biblioteca XML-RPC

  • Aula de teste de unidade

  • URLs amigáveis ​​para mecanismos de pesquisa

  • Roteamento URI Flexível

  • Suporte para ganchos e extensões de classe

  • Grande biblioteca de funções "auxiliares"

É muito fácil instalar o CodeIgniter. Basta seguir as etapas abaixo -

  • Step-1- Baixe o CodeIgniter do link CodeIgniter

  • Step-2 - Descompacte a pasta.

  • Step-3 - Envie todos os arquivos e pastas para o seu servidor.

  • Step-4 - Depois de enviar todos os arquivos para o seu servidor, visite o URL do seu servidor, por exemplo, www.domain-name.com.

Ao visitar o URL, você verá a seguinte tela -

A arquitetura do aplicativo CodeIgniter é mostrada abaixo.

  • Conforme mostrado na figura, sempre que uma solicitação chega ao CodeIgniter, ela irá primeiro para index.php página.

  • Na segunda etapa, Routing decidirá se passará esta solicitação para a etapa 3 para armazenamento em cache ou se passará esta solicitação para a etapa 4 para verificação de segurança.

  • Se a página solicitada já estiver em Caching, então Routing passará a solicitação para a etapa 3 e a resposta voltará para o usuário.

  • Se a página solicitada não existe em Caching, então Routing passará a página solicitada para a etapa 4 para Security Verificações.

  • Antes de passar o pedido para Application Controller, a Securitydos dados enviados é verificado. Depois deSecurity Verifica a Application Controller cargas necessárias Models, Libraries, Helpers, Plugins e Scripts e passá-lo para View.

  • o View irá renderizar a página com os dados disponíveis e passá-los para Caching. Como a página solicitada não foi armazenada em cache antes, desta vez ela será armazenada emCaching, para processar esta página rapidamente para solicitações futuras.

Estrutura de Diretório

A imagem abaixo mostra a estrutura de diretórios do CodeIgniter.

A estrutura de diretórios do CodeIgniter é dividida em 3 pastas -

  • Application
  • System
  • User_guide

Inscrição

Como o nome indica, a pasta do aplicativo contém todo o código do aplicativo que você está construindo. Esta é a pasta onde você desenvolverá seu projeto. A pasta do aplicativo contém várias outras pastas, que são explicadas a seguir -

  • Cache- Esta pasta contém todas as páginas em cache de seu aplicativo. Essas páginas em cache aumentarão a velocidade geral de acesso às páginas.

  • Config- Esta pasta contém vários arquivos para configurar o aplicativo. Com a ajuda deconfig.phparquivo, o usuário pode configurar o aplicativo. Usandodatabase.php arquivo, o usuário pode configurar o banco de dados do aplicativo.

  • Controllers- Esta pasta contém os controladores de seu aplicativo. É a parte básica do seu aplicativo.

  • Core - Esta pasta conterá a classe base de seu aplicativo.

  • Helpers - Nesta pasta, você pode colocar a classe auxiliar de sua aplicação.

  • Hooks - Os arquivos nesta pasta fornecem um meio de acessar e modificar o funcionamento interno da estrutura sem invadir os arquivos principais.

  • Language - Esta pasta contém arquivos relacionados ao idioma.

  • Libraries - Esta pasta contém arquivos das bibliotecas desenvolvidas para sua aplicação.

  • Logs - Esta pasta contém arquivos relacionados ao log do sistema.

  • Models - O login do banco de dados será colocado nesta pasta.

  • Third_party - Nesta pasta, você pode colocar quaisquer plug-ins, que serão usados ​​para sua aplicação.

  • Views - Os arquivos HTML do aplicativo serão colocados nesta pasta.

Sistema

Esta pasta contém os códigos principais do CodeIgniter, bibliotecas, auxiliares e outros arquivos, que ajudam a tornar a codificação fácil. Essas bibliotecas e auxiliares são carregados e usados ​​no desenvolvimento de aplicativos da web.

Esta pasta contém todo o código de consequência do CodeIgniter, organizado em várias pastas -

  • Core- Esta pasta contém a classe principal do CodeIgniter. Não modifique nada aqui. Todo o seu trabalho ocorrerá na pasta do aplicativo. Mesmo que sua intenção seja estender o núcleo do CodeIgniter, você precisa fazer isso com ganchos, e os ganchos ficam na pasta do aplicativo.

  • Database - A pasta do banco de dados contém drivers de banco de dados núcleo e outros utilitários de banco de dados.

  • Fonts - A pasta de fontes contém informações relacionadas às fontes e utilitários.

  • Helpers - A pasta helpers contém helpers padrão do CodeIgniter (como date, cookie e helpers URL).

  • Language- A pasta de idioma contém arquivos de idioma. Você pode ignorar por agora.

  • Libraries- A pasta de bibliotecas contém bibliotecas padrão do CodeIgniter (para ajudá-lo com e-mail, calendários, uploads de arquivos e muito mais). Você pode criar suas próprias bibliotecas ou estender (e até substituir) bibliotecas padrão, mas elas serão salvas noapplication/libraries para mantê-los separados das bibliotecas padrão do CodeIgniter salvas nesta pasta específica.

Guia de usuario

Este é o seu guia do usuário para o CodeIgniter. É basicamente a versão offline do guia do usuário no site do CodeIgniter. Usando isso, pode-se aprender as funções de várias bibliotecas, auxiliares e classes. É recomendável ler este guia do usuário antes de construir seu primeiro aplicativo da web no CodeIgniter.

Ao lado dessas três pastas, há mais um arquivo importante chamado “index.php”. Neste arquivo, podemos definir o ambiente do aplicativo e o nível de erro e podemos definir o sistema e o nome da pasta do aplicativo. É recomendável não editar essas configurações se você não tiver conhecimento suficiente sobre o que vai fazer.

CodeIgniter é baseado no Model-View-Controller (MVC) development pattern. MVC é uma abordagem de software que separa a lógica do aplicativo da apresentação. Na prática, permite que suas páginas da web contenham um mínimo de scripts, já que a apresentação é separada do script PHP.

  • o Modelrepresenta suas estruturas de dados. Normalmente, suas classes de modelo conterão funções que o ajudam a recuperar, inserir e atualizar informações em seu banco de dados.

  • o Viewsão informações que estão sendo apresentadas a um usuário. Uma visão normalmente será uma página da web, mas no CodeIgniter, uma visão também pode ser um fragmento de página como um cabeçalho ou rodapé. Também pode ser uma página RSS ou qualquer outro tipo de “página”.

  • o Controller serve como um intermediário entre o modelo, a visualização e quaisquer outros recursos necessários para processar a solicitação HTTP e gerar uma página da web.

Controladores

Um controlador é um arquivo de classe simples. Como o nome sugere, ele controla todo o aplicativo por URI.

Criação de um controlador

Primeiro, vá para application/controllerspasta. Você encontrará dois arquivos lá,index.html e Welcome.php. Esses arquivos vêm com o CodeIgniter.

Mantenha esses arquivos como estão. Crie um novo arquivo no mesmo caminho chamado “Test.php”. Escreva o seguinte código nesse arquivo -

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

o Test classe estende uma classe embutida chamada CI_Controller. Esta classe deve ser estendida sempre que você quiser fazer sua própria classe Controller.

Chamando um Controlador

O controlador acima pode ser chamado pelo URI da seguinte forma -

http://www.your-domain.com/index.php/test

Observe a palavra “test”No URI acima após index.php. Isso indica o nome da classe do controlador. Como demos o nome do controlador “Test", nós estamos escrevendo "test”Após o index.php. O nome da classe deve começar comuppercase letter mas precisamos escrever lowercase letterquando chamamos esse controlador por URI. A sintaxe geral para chamar o controlador é a seguinte -

http://www.your-domain.com/index.php/controller/method-name

Criando e chamando o método do construtor

Vamos modificar a classe acima e criar outro método chamado “olá”.

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Podemos executar o controlador acima das três maneiras a seguir -

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Depois de visitar o primeiro URI no navegador, obtemos a saída conforme mostrado na imagem abaixo. Como você pode ver, obtivemos a saída do método “index”, Embora não tenhamos passado o nome do método no URI. Usamos apenas o nome do controlador no URI. Em tais situações, o CodeIgniter chama o método padrão “index”.

Visitando o segundo URI no navegador, obtemos a mesma saída mostrada na imagem acima. Aqui, passamos o nome do método após o nome do controlador no URI. Como o nome do método é “index”, Estamos obtendo a mesma saída.

Visitando o terceiro URI no navegador, obtemos a saída conforme mostrado na imagem abaixo. Como você pode ver, estamos obtendo a saída do método “hello”Porque passamos“hello”Como o nome do método, após o nome do controlador“test”No URI.

Pontos para lembrar

  • O nome da classe do controlador deve começar com uma letra maiúscula.

  • O controlador deve ser chamado com letra minúscula.

  • Não use o mesmo nome do método que sua classe pai, pois isso substituirá a funcionalidade da classe pai.

Visualizações

Pode ser uma página da Web simples ou complexa, que pode ser acessada pelo controlador. A página da web pode conter cabeçalho, rodapé, barra lateral, etc. A visualização não pode ser chamada diretamente. Vamos criar uma visão simples. Crie um novo arquivo emapplication/views com o nome “test.php”E copie o código fornecido abaixo nesse arquivo.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Altere o código de application/controllers/test.php arquivo conforme mostrado abaixo.

Carregando a visualização

A visualização pode ser carregada pela seguinte sintaxe -

$this->load->view('name');

Onde name é o arquivo de visualização, que está sendo renderizado. Se você planejou armazenar o arquivo de visualização em algum diretório, pode usar a seguinte sintaxe -

$this->load->view('directory-name/name');

Não é necessário especificar a extensão como php, a menos que algo diferente de .php seja usado.

O método index () está chamando o método view e passando o “teste” como argumento para o método view () porque armazenamos a codificação html em “test.php”Arquivo em application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

Aqui está a saída do código acima -

O fluxograma a seguir ilustra como tudo funciona -

Modelos

As classes de modelos são projetadas para trabalhar com informações do banco de dados. Por exemplo, se você estiver usando o CodeIgniter para gerenciar usuários em seu aplicativo, você deve ter uma classe de modelo, que contém funções para inserir, excluir, atualizar e recuperar os dados de seus usuários.

Criando classe de modelo

Classes de modelo são armazenadas em application/modelsdiretório. O código a seguir mostra como criar uma classe de modelo no CodeIgniter.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Onde Model_name é o nome da classe de modelo que você deseja fornecer. Cada classe de modelo deve herdar a classe CI_Model do CodeIgniter. A primeira letra da classe do modelo deve ser maiúscula. A seguir está o código para a classe de modelo dos usuários.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

A classe de modelo acima deve ser salva como User_model.php. O nome da classe e o nome do arquivo devem ser iguais.

Carregando modelo

O modelo pode ser chamado no controlador. O código a seguir pode ser usado para carregar qualquer modelo.

$this->load->model('model_name');

Onde model_name é o nome do modelo a ser carregado. Depois de carregar o modelo, você pode simplesmente chamar seu método conforme mostrado abaixo.

$this->model_name->method();

Modelos de carregamento automático

Pode haver situações em que você deseja alguma classe de modelo em todo o seu aplicativo. Nessas situações, é melhor carregá-lo automaticamente.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first'); */ $autoload['model'] = array();

Conforme mostrado na figura acima, passe o nome do modelo no array que deseja carregar automaticamente e ele será carregado automaticamente, enquanto o sistema está no estado de inicialização e está acessível em todo o aplicativo.

Ajudantes

Como o nome sugere, ele o ajudará a construir seu sistema. Ele é dividido em pequenas funções para atender a diferentes funcionalidades. Vários auxiliares estão disponíveis no CodeIgniter, listados na tabela abaixo. Podemos construir nossos próprios ajudantes também.

Os ajudantes são normalmente armazenados em seu system/helpers, ou application/helpers directory. Assistentes personalizados são armazenados emapplication/helpers o diretório e os ajudantes dos sistemas são armazenados em system/helpersdiretório. CodeIgniter vai olhar primeiro em seuapplication/helpers directory. Se o diretório não existir ou o auxiliar especificado não for localizado, o CodeIgniter irá, em vez disso, procurar em seusystem/helpers/ directory. Cada assistente, seja ele personalizado ou do sistema, deve ser carregado antes de ser usado.

SN Nome e descrição do ajudante
1

Array Helper

O arquivo Array Helper contém funções que auxiliam no trabalho com arrays.

2

CAPTCHA Helper

O arquivo CAPTCHA Helper contém funções que auxiliam na criação de imagens CAPTCHA.

3

Cookie Helper

O arquivo Cookie Helper contém funções que auxiliam no trabalho com cookies.

4

Date Helper

O arquivo Date Helper contém funções que o ajudam a trabalhar com datas.

5

Directory Helper

O arquivo Directory Helper contém funções que auxiliam no trabalho com diretórios.

6

Download Helper

O Download Helper permite que você baixe dados para sua área de trabalho.

7

Email Helper

O Email Helper fornece algumas funções de assistência para trabalhar com Email. Para uma solução de e-mail mais robusta, consulte a Classe de e-mail do CodeIgniter.

8

File Helper

O arquivo File Helper contém funções que auxiliam no trabalho com arquivos.

9

Form Helper

O arquivo Form Helper contém funções que auxiliam no trabalho com formulários.

10

HTML Helper

O arquivo HTML Helper contém funções que auxiliam no trabalho com HTML.

11

Inflector Helper

O arquivo Inflector Helper contém funções que permitem que você altere palavras para plural, singular, caixa de camelo, etc.

12

Language Helper

O arquivo Language Helper contém funções que auxiliam no trabalho com arquivos de idioma.

13

Number Helper

O arquivo Number Helper contém funções que o ajudam a trabalhar com dados numéricos.

14

Path Helper

O arquivo Path Helper contém funções que permitem trabalhar com caminhos de arquivo no servidor.

15

Security Helper

O arquivo Security Helper contém funções relacionadas à segurança.

16

Smiley Helper

O arquivo Smiley Helper contém funções que permitem gerenciar smileys (emoticons).

17

String Helper

O arquivo String Helper contém funções que auxiliam no trabalho com strings.

18

Text Helper

O arquivo Text Helper contém funções que auxiliam no trabalho com texto.

19

Typography Helper

O arquivo Typography Helper contém funções que ajudam a formatar o texto de maneiras semanticamente relevantes.

20

URL Helper

O arquivo URL Helper contém funções que auxiliam no trabalho com URLs.

21

XML Helper

O arquivo XML Helper contém funções que auxiliam no trabalho com dados XML.

Carregando um Helper

Um auxiliar pode ser carregado conforme mostrado abaixo -

$this->load->helper('name');

Onde nome é o nome do ajudante. Por exemplo, se você deseja carregar o URL Helper, ele pode ser carregado como -

$this->load->helper('url');

Encaminhamento

O CodeIgniter possui um sistema de roteamento URI amigável, para que você possa facilmente redirecionar a URL. Normalmente, há um relacionamento um-para-um entre uma string de URL e sua classe / método de controlador correspondente. Os segmentos em um URI normalmente seguem este padrão -

your-domain.com/class/method/id/
  • o first segment representa a classe do controlador que deve ser chamada.

  • o second segment representa a função de classe, ou método, que deve ser chamado.

  • o third, e quaisquer segmentos adicionais, representam o ID e quaisquer variáveis ​​que serão passadas para o controlador.

Em algumas situações, você pode querer alterar esse mecanismo de roteamento padrão. CodeIgniter fornece facilidade através da qual você pode definir suas próprias regras de roteamento.

Personalizar regras de roteamento

Existe um arquivo específico onde você pode lidar com tudo isso. O arquivo está localizado em application / config / routes.php. Você encontrará um array chamado$route in which you can customize your routing rules. The key in the $a matriz de rota decidirá o que rotear e o valor decidirá para onde rotear. Existem três rotas reservadas no CodeIgniter.

SN Rotas reservadas e descrição
1

$route['default_controller']

Esta rota indica qual classe de controlador deve ser carregada, se o URI não contém dados, o que será o caso quando as pessoas carregarem sua URL raiz. Recomendamos que você tenha uma rota padrão, caso contrário, uma página 404 aparecerá por padrão. Podemos definir a página inicial do site aqui para que seja carregada por padrão.

2

$route['404_override']

Esta rota indica qual classe de controlador deve ser carregada se o controlador solicitado não for encontrado. Ele substituirá a página de erro 404 padrão. Não afetará oshow_404() função, que continuará carregando o padrão error_404.php arquivo em application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Como fica evidente pelo valor booleano, essa não é exatamente uma rota. Esta opção permite que você substitua automaticamente traços ('-') por sublinhados nos segmentos de URI do controlador e do método, poupando assim entradas de rota adicionais se você precisar fazer isso. Isso é necessário porque o traço não é uma classe válida ou caractere de nome de método e causará um erro fatal, se você tentar usá-lo.

As rotas podem ser personalizadas por wildcards ou usando regular expressions mas lembre-se de que essas regras personalizadas para roteamento devem vir depois das regras reservadas.

Curingas

Podemos usar dois caracteres curinga, conforme explicado abaixo -

  • (:num) - Corresponderá a um segmento contendo apenas números.

  • (:any) - Corresponderá a um segmento contendo qualquer caractere.

Example

$route['product/:num']='catalog/product_lookup';

No exemplo acima, se a palavra literal "produto" for encontrada no primeiro segmento da URL e um número for encontrado no segundo segmento, a classe "catálogo" e o método "produto_lookup" serão usados.

Expressões regulares

Como curingas, também podemos usar expressões regulares em $route array keyparte. Se algum URI corresponder à expressão regular, ele será roteado para a parte do valor definida no array $ route.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

No exemplo acima, um URI semelhante a produtos / sapatos / 123 chamaria de “shoes”Classe do controlador e“id_123”Método.

Depois de configurar o site, a próxima coisa que devemos fazer é configurar o site. A pasta application / config contém um grupo de arquivos que definem a configuração básica do seu site.

Configurando URL Base

A URL base do site pode ser configurada no arquivo application / config / config.php. É a URL para a raiz do CodeIgniter. Normalmente, este será o seu URL base, com uma barra final, por exemplo

http://example.com/

Se isso não for definido, então o CodeIgniter tentará adivinhar o protocolo, domínio e caminho para sua instalação. No entanto, você deve sempre configurar isso explicitamente e nunca depender do autoguessing, especialmente em ambientes de produção. Você pode configurar o URL base no array $ config com a chave “base_url” conforme mostrado abaixo -

$config['base_url'] = 'http://your-domain.com';

Configuração de banco de dados

O banco de dados do site pode ser configurado no arquivo application / config / database.php. Freqüentemente, precisamos configurar o banco de dados para ambientes diferentes, como desenvolvimento e produção. Com o array multidimensional fornecido no CodeIgniter, podemos configurar o banco de dados para diferentes ambientes. As definições de configuração são armazenadas na matriz conforme mostrado abaixo -

$db['default'] = array( 
   'dsn'   => '', 
   'hostname' => 'localhost', 
   'username' => 'root', 
   'password' => '', 
   'database' => 'database_name', 
   'dbdriver' => 'mysqli', 
   'dbprefix' => '', 
   'pconnect' => TRUE, 
   'db_debug' => TRUE, 
   'cache_on' => FALSE, 
   'cachedir' => '', 
   'char_set' => 'utf8', 
   'dbcollat' => 'utf8_general_ci',
   'swap_pre' => '', 
   'encrypt' => FALSE, 
   'compress' => FALSE, 
   'stricton' => FALSE, 
   'failover' => array() 
);

Você pode deixar algumas opções com seus valores padrão, exceto hostname, nome de usuário, senha, banco de dados e dbdriver.

  • hostname - Especifique a localização do seu banco de dados aqui, por exemplo, localhost ou endereço IP

  • username - Defina o nome de usuário do seu banco de dados aqui.

  • password - Defina aqui a senha do seu banco de dados.

  • database - Defina o nome do banco de dados aqui.

  • dbdriver - Defina o tipo de banco de dados que você está usando, por exemplo, MySQL, MySQLi, Postgre SQL, ODBC e MS SQL.

Alterando a chave do array $db, você pode definir outra configuração de banco de dados conforme mostrado abaixo. Aqui, definimos a chave para‘test’ para definir o banco de dados para o ambiente de teste, mantendo o outro ambiente de banco de dados como está.

$db['test'] = array( 
   'dsn'   => '', 
   'hostname' => 'localhost', 
   'username' => 'root', 
   'password' => '', 
   'database' => 'database_name', 
   'dbdriver' => 'mysqli', 
   'dbprefix' => '', 
   'pconnect' => TRUE, 
   'db_debug' => TRUE, 
   'cache_on' => FALSE, 
   'cachedir' => '', 
   'char_set' => 'utf8', 
   'dbcollat' => 'utf8_general_ci', 
   'swap_pre' => '', 
   'encrypt' => FALSE, 
   'compress' => FALSE, 
   'stricton' => FALSE, 
   'failover' => array()
);

Você pode simplesmente mudar para um ambiente diferente, alterando o valor de uma variável conforme mostrado abaixo -

$active_group = ‘default’; //This will set the default environment

$active_group = ‘test’; //This will set the test environment

Configuração de carregamento automático

Este arquivo especifica, por padrão, quais sistemas devem ser carregados. Para manter a estrutura o mais leve possível, apenas os recursos mínimos absolutos são carregados por padrão. Deve-se carregar automaticamente o sistema usado com frequência, em vez de carregá-lo no nível local, repetidamente. A seguir estão os itens que você pode carregar automaticamente -

  • Libraries- É uma lista de bibliotecas, que deve ser carregada automaticamente. Fornece uma lista de bibliotecas em um array, conforme mostrado abaixo, para serem carregadas automaticamente pelo CodeIgniter. Neste exemplo, estamos carregando banco de dados, e-mail e bibliotecas de sessão automaticamente.

$autoload['libraries'] = array('database', 'email', 'session');
  • Drivers- Essas classes estão localizadas em sistema / bibliotecas / ou em seu aplicativo / bibliotecas / diretório, mas também são colocadas em seu próprio subdiretório e estendem a classe CI_Driver_Library. Eles oferecem várias opções de driver intercambiáveis. A seguir está um exemplo para carregar automaticamente os drivers de cache.

$autoload['drivers'] = array('cache');
  • Helper files- É uma lista de arquivos auxiliares, a serem carregados automaticamente. Fornece uma lista de bibliotecas no array, conforme mostrado abaixo, para serem carregadas automaticamente pelo CodeIgniter. No exemplo dado, estamos carregando automaticamente ajudantes de URL e arquivo.

$autoload['helper'] = array('url', 'file');
  • Custom config files- Esses arquivos devem ser usados ​​apenas se você tiver criado arquivos de configuração personalizados. Caso contrário, deixe em branco. A seguir está um exemplo de como carregar automaticamente mais de um arquivo de configuração.

$autoload['config'] = array('config1', 'config2');
  • Language files- É uma lista de arquivos de idioma, que devem ser carregados automaticamente. Veja o exemplo abaixo. Fornece uma lista de idiomas em um array, conforme mostrado abaixo, para serem carregados automaticamente pelo CodeIgniter. Lembre-se de que não inclua a parte "_lang" de seu arquivo. Por exemplo, "codeigniter_lang.php" seria referenciado como array ('codeigniter');

  • Models- É um arquivo de lista de modelos, que deve ser carregado automaticamente. Fornece uma lista de modelos em uma matriz, conforme mostrado abaixo, para serem carregados automaticamente pelo CodeIgniter. A seguir está o exemplo de como carregar automaticamente mais de um arquivo de modelo.

$autoload['model'] = array('first_model', 'second_model');

Como qualquer outro framework, precisamos interagir com o banco de dados com muita frequência e o CodeIgniter facilita esse trabalho para nós. Ele fornece um rico conjunto de funcionalidades para interagir com o banco de dados.

Nesta seção, entenderemos como as funções CRUD (Criar, Ler, Atualizar, Excluir) funcionam com o CodeIgniter. Nós vamos usarstud tabela para selecionar, atualizar, excluir e inserir os dados em stud mesa.

Nome da tabela: stud
Núm. da lista int (11)
nome varchar (30)

Conectando-se a um banco de dados

Podemos nos conectar ao banco de dados das duas maneiras a seguir -

  • Automatic Connecting- A conexão automática pode ser feita usando o arquivo application / config / autoload.php. A conexão automática carregará o banco de dados para cada página. Precisamos apenas adicionar a biblioteca de banco de dados conforme mostrado abaixo -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Se você deseja conectividade de banco de dados para apenas algumas das páginas, podemos ir para a conexão manual. Podemos nos conectar ao banco de dados manualmente adicionando a seguinte linha em qualquer classe.

$this->load->database();

Aqui, não estamos passando nenhum argumento porque tudo está definido no arquivo de configuração do banco de dados application / config / database.php

Inserindo um Registro

Para inserir um registro no banco de dados, a função insert () é usada conforme mostrado na tabela a seguir -

Syntax

inserir ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( string ) - nome da tabela

  • $set( matriz ) - Uma matriz associativa de pares de campo / valor

  • $escape( bool ) - se deve escapar valores e identificadores

Returns

TRUE em caso de sucesso, FALSE em caso de falha

Return Type

bool

O exemplo a seguir mostra como inserir um registro em studmesa. O $ data é uma matriz na qual definimos os dados e para inserir esses dados na tabelastud, só precisamos passar esse array para a função de inserção no argumento.

$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);

Atualizando um registro

Para atualizar um registro no banco de dados, o update() função é usada junto com set() e where()funções conforme mostrado nas tabelas abaixo. oset() função irá definir os dados a serem atualizados.

Syntax

set ( $ key [, $ value = '' [, $ escape = NULL ]])

Parameters

  • $key( misto ) - nome do campo ou uma matriz de pares de campo / valor

  • $value( string ) - valor do campo, se $ key for um único campo

  • $escape( bool ) - se deve escapar valores e identificadores

Returns

Instância CI_DB_query_builder (encadeamento de método)

Return Type

CI_DB_query_builder

o where() função irá decidir qual registro atualizar.

Syntax

onde ( $ key [, $ value = NULL [, $ escape = NULL ]])

Parameters

  • $key( misto ) - nome do campo para comparar ou matriz associativa

  • $value( misto ) - se for uma única chave, em comparação com este valor

  • $escape( bool ) - se deve escapar valores e identificadores

Returns

Instância DB_query_builder

Return Type

objeto

finalmente, o update() função irá atualizar os dados no banco de dados.

Syntax

update ([ $ table = '' [, $ set = NULL [,$where = NULL[, $limite = NULL ]]]])

Parameters

  • $table( string ) - nome da tabela

  • $set( matriz ) - Uma matriz associativa de pares de campo / valor

  • $where( string ) - A cláusula WHERE

  • $limit( int ) - A cláusula LIMIT

Returns

TRUE em caso de sucesso, FALSE em caso de falha

Return Type

bool
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Excluindo um Registro

Para excluir um registro no banco de dados, a função delete () é usada conforme mostrado na tabela a seguir -

Syntax

delete ([ $ table = '' [, $ where = '' [,$limit = NULL[, $reset_data = TRUE ]]]])

Parameters

  • $table( misto ) - A (s) tabela (s) a ser excluída (s); string ou array

  • $where( string ) - A cláusula WHERE

  • $limit( int ) - A cláusula LIMIT

  • $reset_data( bool ) - TRUE para redefinir a cláusula de "gravação" da consulta

Returns

Instância CI_DB_query_builder (encadeamento de método) ou FALSE em caso de falha

Return Type

misturado

Use o seguinte código para excluir um registro no studmesa. O primeiro argumento indica o nome da tabela a ser excluída do registro e o segundo argumento decide qual registro excluir.

$this->db->delete("stud", "roll_no = 1");

Selecionando um Registro

Para selecionar um registro no banco de dados, o get função é usada, conforme mostrado na tabela a seguir -

Syntax

get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( string ) - A tabela para consultar a matriz

  • $limit( int ) - A cláusula LIMIT

  • $offset( int ) - A cláusula OFFSET

Returns

Instância CI_DB_result (encadeamento de método)

Return Type

CI_DB_result

Use o código a seguir para obter todos os registros do banco de dados. A primeira instrução busca todos os registros da tabela “stud” e retorna o objeto, que será armazenado em $ query object. A segunda declaração chama oresult() função com o objeto $ query para obter todos os registros como array.

$query = $this->db->get("stud"); $data['records'] = $query->result();

Fechando uma conexão

A conexão com o banco de dados pode ser fechada manualmente, executando o seguinte código -

$this->db->close();

Exemplo

Crie uma classe de controlador chamada Stud_controller.php e salve em application/controller/Stud_controller.php

Aqui está um exemplo completo, em que todas as operações mencionadas acima são realizadas. Antes de executar o exemplo a seguir, crie um banco de dados e uma tabela conforme as instruções no início deste capítulo e faça as alterações necessárias no arquivo de configuração do banco de dados armazenado emapplication/config/database.php

<?php 
   class Stud_controller extends CI_Controller {
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper('url'); $this->load->database(); 
      } 
  
      public function index() { 
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
			
         $this->load->helper('url'); $this->load->view('Stud_view',$data); } public function add_student_view() { $this->load->helper('form'); 
         $this->load->view('Stud_add'); } public function add_student() { $this->load->model('Stud_Model');
			
         $data = array( 'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') ); $this->Stud_Model->insert($data); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } public function update_student_view() { $this->load->helper('form'); 
         $roll_no = $this->uri->segment('3'); 
         $query = $this->db->get_where("stud",array("roll_no"=>$roll_no)); $data['records'] = $query->result(); $data['old_roll_no'] = $roll_no; $this->load->view('Stud_edit',$data); } public function update_student(){ $this->load->model('Stud_Model');
			
         $data = array( 'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') ); $old_roll_no = $this->input->post('old_roll_no'); $this->Stud_Model->update($data,$old_roll_no); 
			
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_student() { 
         $this->load->model('Stud_Model'); $roll_no = $this->uri->segment('3'); $this->Stud_Model->delete($roll_no); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); 
      } 
   } 
?>

Crie uma classe de modelo chamada Stud_Model.php e salve em application/models/Stud_Model.php

<?php 
   class Stud_Model extends CI_Model {
	
      function __construct() { 
         parent::__construct(); 
      } 
   
      public function insert($data) { 
         if ($this->db->insert("stud", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { if ($this->db->delete("stud", "roll_no = ".$roll_no)) { return true; } } public function update($data,$old_roll_no) { $this->db->set($data); $this->db->where("roll_no", $old_roll_no); $this->db->update("stud", $data); 
      } 
   } 
?>

Crie um arquivo de visualização chamado Stud_add.php e salve em application/views/Stud_add.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/add_student');
            echo form_label('Roll No.'); 
            echo form_input(array('id'=>'roll_no','name'=>'roll_no')); 
            echo "<br/>"; 
			
            echo form_label('Name'); 
            echo form_input(array('id'=>'name','name'=>'name')); 
            echo "<br/>"; 
			
            echo form_submit(array('id'=>'submit','value'=>'Add')); 
            echo form_close(); 
         ?> 
		
      </form> 
   </body>
	
</html>

Crie um arquivo de visualização chamado Stud_edit.php e salve em application/views/Stud_edit.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/update_student'); 
            echo form_hidden('old_roll_no',$old_roll_no); 
            echo form_label('Roll No.'); 
            echo form_input(array('id'⇒'roll_no',
               'name'⇒'roll_no','value'⇒$records[0]→roll_no)); echo " "; echo form_label('Name'); echo form_input(array('id'⇒'name','name'⇒'name', 'value'⇒$records[0]→name)); 
            echo "
            "; 

            echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); 
            echo form_close();
         ?> 
			
      </form> 
   </body>
	
</html>

Crie um arquivo de visualização chamado Stud_view.php e salve em application/views/Stud_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head>
	
   <body> 
      <a href = "<?php echo base_url(); ?>
         index.php/stud/add_view">Add</a>
		
      <table border = "1"> 
         <?php 
            $i = 1; echo "<tr>"; echo "<td>Sr#</td>"; echo "<td>Roll No.</td>"; echo "<td>Name</td>"; echo "<td>Edit</td>"; echo "<td>Delete</td>"; echo "<tr>"; foreach($records as $r) { echo "<tr>"; echo "<td>".$i++."</td>"; 
               echo "<td>".$r->roll_no."</td>"; echo "<td>".$r->name."</td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/edit/"
                  .$r->roll_no."'>Edit</a></td>"; echo "<td><a href = '".base_url()."index.php/stud/delete/" .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

Faça a seguinte alteração no arquivo de rota em application/config/routes.php e adicione a seguinte linha no final do arquivo.

$route['stud'] = "Stud_controller"; $route['stud/add'] = 'Stud_controller/add_student'; 
$route['stud/add_view'] = 'Stud_controller/add_student_view'; $route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; $route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';

Agora, vamos executar este exemplo visitando a seguinte URL no navegador. Substitua o yoursite.com pelo seu URL.

http://yoursite.com/index.php/stud

A parte essencial de um framework CodeIgniter são suas bibliotecas. Ele fornece um rico conjunto de bibliotecas, que aumentam indiretamente a velocidade de desenvolvimento de um aplicativo. A biblioteca do sistema está localizada em sistema / bibliotecas. Tudo o que precisamos fazer é carregar a biblioteca que queremos usar. A biblioteca pode ser carregada conforme mostrado abaixo -

$this->load->library('class name');

Onde class nameé o nome da biblioteca que queremos carregar. Se quisermos carregar várias bibliotecas, podemos simplesmente passar uma matriz como argumento paralibrary() função conforme mostrado abaixo -

$this->load->library(array('email', 'table'));

Aulas de biblioteca

As aulas da biblioteca estão localizadas em system/libraries. Cada aula possui várias funções para simplificar o trabalho de desenvolvimento. A tabela a seguir mostra os nomes da classe da biblioteca e sua descrição.

SN Classe e descrição da biblioteca
1

Benchmarking Class

A classe de benchmarking está sempre ativa, permitindo que a diferença de tempo entre quaisquer dois pontos marcados seja calculada.

2

Caching Class

Esta classe armazenará as páginas em cache, para acessar rapidamente a velocidade da página.

3

Calendaring Class

Usando esta classe, você pode criar calendários dinamicamente.

4

Shopping Cart Class

Usando esta classe, você pode adicionar ou remover um item do carrinho de compras. Os itens são salvos na sessão e permanecerão ativos até que o usuário navegue no site.

5

Config Class

As preferências de configuração podem ser recuperadas, usando esta classe. Esta classe é inicializada automaticamente.

6

Email Class

Esta classe fornece funcionalidades relacionadas a e-mail, como enviar ou responder a e-mails.

7

Encryption Class

Esta classe fornece funcionalidade de criptografia de dados bidirecional.

8

File Uploading Class

Esta classe fornece funcionalidades relacionadas ao upload de arquivos. Você pode definir várias preferências, como tipo de arquivo a ser carregado, tamanho dos arquivos etc.

9

Form Validation Class

Esta classe fornece várias funções para validar o formulário.

10

FTP Class

Esta classe oferece várias funções relacionadas ao FTP, como transferência de arquivos para remover servidor, movimentação, renomeação ou exclusão de arquivos no servidor.

11

Image Manipulation Class

A manipulação de imagens como redimensionar, criar miniaturas, recortar, girar, marca d'água pode ser feita com a ajuda desta classe.

12

Input Class

Esta classe pré-processa os dados de entrada por motivos de segurança.

13

Language Class

Esta classe é usada para internacionalização.

14

Loader Class

Esta classe carrega elementos como arquivos de visualização, drivers, auxiliares, modelos etc.

15

Migrations Class

Esta classe fornece funcionalidades relacionadas a migrações de banco de dados.

16

Output Class

Essa classe envia a saída para o navegador e também armazena em cache essa página da web.

17

Pagination Class

Esta classe adiciona funcionalidades de paginação à página da web.

18

Template Parser Class

A classe do analisador de modelo pode realizar a substituição de texto simples para pseudo-variáveis ​​contidas em seus arquivos de visualização. Ele pode analisar variáveis ​​simples ou pares de tags de variáveis.

19

Security Class

Esta classe contém funções relacionadas à segurança, como Filtragem XSS, CSRF etc.

20

Session Library

Esta classe fornece funcionalidades para manter a sessão de sua aplicação.

21

HTML Table

Esta classe é usada para gerar tabelas HTML automaticamente a partir de resultados de array ou banco de dados.

22

Trackback Class

A classe Trackback fornece funções que permitem enviar e receber dados Trackback.

23

Typography Class

A classe Typography fornece métodos que ajudam a formatar o texto.

24

Unit Testing Class

Esta classe fornece funcionalidades para testar a unidade de seu aplicativo e gerar o resultado.

25

URI Class

A classe URI fornece métodos que ajudam a recuperar informações de suas strings de URI. Se você usar o roteamento URI, também poderá recuperar informações sobre os segmentos redirecionados.

26

User Agent Class

A classe de agente de usuário fornece funções que ajudam a identificar informações sobre o navegador, dispositivo móvel ou robô visitando seu site. Além disso, você pode obter informações de referência, bem como idioma e informações de conjunto de caracteres compatíveis.

27

XML-RPC and XML-RPC Server Classes

As classes XML-RPC do CodeIgniter permitem que você envie solicitações a outro servidor ou configure seu próprio servidor XML-RPC para receber solicitações.

28

Zip Encoding Class

Esta classe é usada para criar arquivos zip de seus dados.

Criação de bibliotecas

CodeIgniter tem um rico conjunto de bibliotecas, que você pode encontrar em system/libraries pasta, mas o CodeIgniter não se limita apenas às bibliotecas do sistema, você também pode criar suas próprias bibliotecas, que podem ser armazenadas em application/librariespasta. Você pode criar bibliotecas de três maneiras.

  • Criar nova biblioteca
  • Amplie a biblioteca nativa
  • Substitua a biblioteca nativa

Criar nova biblioteca

Ao criar uma nova biblioteca, deve-se ter em mente o seguinte:

  • O nome do arquivo deve começar com uma letra maiúscula, por exemplo, Mylibrary.php
  • O nome da classe deve começar com uma letra maiúscula, por exemplo, class Mylibrary
  • O nome da classe e o nome do arquivo devem corresponder.

Mylibrary.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
   
   class Mylibrary {
	
      public function some_function() {
      }
   }
	
/* End of file Mylibrary.php */

Loading the Custom Library

A biblioteca acima pode ser carregada simplesmente executando a seguinte linha em seu controlador.

$this->load->library(‘mylibrary’);

mylibrary é o nome da sua biblioteca e você pode escrevê-lo em letras maiúsculas ou minúsculas. Use o nome da biblioteca sem a extensão “.php”. Depois de carregar a biblioteca, você também pode chamar a função dessa classe como mostrado abaixo.

$this->mylibrary->some_function();

Amplie a Biblioteca Nativa

Às vezes, você pode precisar adicionar sua própria funcionalidade à biblioteca fornecida pelo CodeIgniter. CodeIgniter fornece facilidade pela qual você pode estender a biblioteca nativa e adicionar suas próprias funções. Para conseguir isso, você deve estender a classe da classe da biblioteca nativa. Por exemplo, se você deseja estender a biblioteca de e-mail, isso pode ser feito conforme mostrado abaixo -

Class MY_Email extends CI_Email { 
}

Aqui, no exemplo acima, a classe MY_Email está estendendo a classe de email CI_Email da biblioteca nativa. Esta biblioteca pode ser carregada pela forma padrão de carregamento da biblioteca de e-mail. Salve o código acima no arquivo My_Email.php

Substitua a Biblioteca Nativa

Em algumas situações, você não deseja usar a biblioteca nativa da maneira que ela funciona e deseja substituí-la por sua própria maneira. Isso pode ser feito substituindo a biblioteca nativa. Para conseguir isso, você só precisa dar o mesmo nome de classe que é nomeado na biblioteca nativa. Por exemplo, se você deseja substituir oEmail classe, em seguida, use o código conforme mostrado abaixo. Salve seu nome de arquivo comEmail.php e dar um nome de classe para CI_Email.

Email.php

Class CI_Email { 
}

Muitas vezes, ao usar o aplicativo, encontramos erros. É muito irritante para os usuários se os erros não são tratados adequadamente. O CodeIgniter fornece um mecanismo de tratamento de erros fácil.

Você deseja que as mensagens sejam exibidas quando o aplicativo estiver no modo de desenvolvimento em vez de no modo de produção, pois as mensagens de erro podem ser resolvidas facilmente no estágio de desenvolvimento.

O ambiente de seu aplicativo pode ser alterado, alterando a linha fornecida abaixo de index.phpArquivo. Isso pode ser definido como qualquer coisa, mas normalmente existem três valores (desenvolvimento, teste, produção) usados ​​para essa finalidade.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Ambientes diferentes exigirão níveis diferentes de relatório de erros. Por padrão, o modo de desenvolvimento exibirá erros e testes e o modo ao vivo irá ocultá-los. O CodeIgniter fornece três funções, conforme mostrado abaixo, para lidar com erros.

  • show_error() A função exibe erros no formato HTML na parte superior da tela.

Syntax

show_error ( $ message,$status_code, $título = 'Foi encontrado um erro' )

Parameters

  • $message( misto ) - mensagem de erro

  • $status_code( int ) - código de status de resposta HTTP

  • $heading( string ) - título da página de erro

Return Type

misturado
  • show_404() A função exibe erro se você está tentando acessar uma página que não existe.

Syntax

show_404 ( $ page = '', $ log_error = TRUE )

Parameters

  • $page( string ) - string URI

  • $log_error( bool ) - se deve registrar o erro

Return Type

vazio
  • log_message()função é usada para escrever mensagens de log. Isso é útil quando você deseja escrever mensagens personalizadas.

Syntax

log_message ( $ level,$message, $php_error = FALSE )

Parameters

  • $level( string ) - Nível de log: 'erro', 'depuração' ou 'informação'

  • $message( string ) - Mensagem para registrar

  • $php_error( bool ) - se estamos registrando uma mensagem de erro PHP nativa

Return Type

vazio

O registro pode ser ativado em application/config/config.phpArquivo. Abaixo está a captura de tela do arquivo config.php, onde você pode definir o valor limite.

/*
|--------------------------------------------------------------------------------
|   Error Logging Threshold
|--------------------------------------------------------------------------------
| You can enable error logging by setting a threshold over zero. The 
| threshold determines what gets logged. Threshold options are:
|
|   0 = Disable logging, Error logging TURNED OFF
|   1 = Error Message (including PHP errors)
|   2 = Debug Message
|   3 = Informational Messages
|   4 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
|   array(2) = Debug Message, without Error Messages
| For a live site you'll usually only enable Errors (1) to be logged otherwise 
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

Você pode encontrar as mensagens de log em application/log/. Certifique-se de que este diretório seja gravável antes de ativar os arquivos de log.

Vários modelos para mensagens de erro podem ser encontrados em application/views/errors/cli ou application/views/errors/html.

Usando a classe File Uploading, podemos fazer upload de arquivos e também restringir o tipo e tamanho do arquivo a ser enviado. Siga as etapas mostradas no exemplo fornecido para entender o processo de upload de arquivo no CodeIgniter.

Exemplo

Copie o seguinte código e armazene-o em application/view/Upload_form.php.

<html>
 
   <head> 
      <title>Upload Form</title> 
   </head>
	
   <body> 
      <?php echo $error;?> 
      <?php echo form_open_multipart('upload/do_upload');?> 
		
      <form action = "" method = "">
         <input type = "file" name = "userfile" size = "20" /> 
         <br /><br /> 
         <input type = "submit" value = "upload" /> 
      </form> 
		
   </body>
	
</html>

Copie o código fornecido abaixo e armazene-o em application/view/Upload_success.php

<html>
 
   <head> 
      <title>Upload Form</title> 
   </head>
	
   <body>  
      <h3>Your file was successfully uploaded!</h3>  
		
      <ul> 
         <?phpforeach ($upload_data as $item => $value):?> 
         <li><?php echo $item;?>: <?php echo $value;?></li> 
         <?phpendforeach; ?>
      </ul>  
		
      <p><?php echo anchor('upload', 'Upload Another File!'); ?></p>  
   </body>
	
</html>

Copie o código fornecido abaixo e armazene-o em application/controllers/Upload.php. Crio "uploads”Pasta na raiz do CodeIgniter, ou seja, no diretório pai da pasta do aplicativo.

<?php
  
   class Upload extends CI_Controller {
	
      public function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('form', 'url')); } public function index() { $this->load->view('upload_form', array('error' => ' ' )); 
      } 
		
      public function do_upload() { 
         $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; 
         $config['max_size'] = 100; $config['max_width']     = 1024; 
         $config['max_height'] = 768; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('userfile')) {
            $error = array('error' => $this->upload->display_errors()); 
            $this->load->view('upload_form', $error); 
         }
			
         else { 
            $data = array('upload_data' => $this->upload->data()); 
            $this->load->view('upload_success', $data); 
         } 
      } 
   } 
?>

Faça a seguinte alteração no arquivo de rota em application/config/routes.php e adicione a seguinte linha no final do arquivo.

$route['upload'] = 'Upload';

Agora vamos executar este exemplo visitando a seguinte URL no navegador. Substitua o yoursite.com pelo seu URL.

http://yoursite.com/index.php/upload

Isso produzirá a seguinte tela -

Depois de enviar um arquivo com sucesso, você verá a seguinte tela -

Enviar email no CodeIgniter é muito mais fácil. Você também configura as preferências de e-mail no CodeIgniter. CodeIgniter fornece os seguintes recursos para envio de e-mails -

  • Vários protocolos - Mail, Sendmail e SMTP
  • Criptografia TLS e SSL para SMTP
  • Vários destinatários
  • CC e BCCs
  • HTML ou e-mail em texto simples
  • Attachments
  • Quebra de linha
  • Priorities
  • Modo de lote BCC, permitindo que grandes listas de e-mail sejam divididas em pequenos lotes BCC.
  • Ferramentas de depuração de e-mail

A classe Email possui as seguintes funções para simplificar o trabalho de envio de emails.

SN Sintaxe Parâmetros Retorna Tipo de Devolução
1 de ( $ from [, $ name = '' [, $ return_path = NULL ]])

$from( string ) - endereço de e-mail “De”

$name( string ) - nome de exibição “De”

$return_path( string ) - Endereço de e-mail opcional para redirecionar o e-mail não entregue

Instância CI_Email (encadeamento de método) CI_Email
2 reply_to ( $ replyto [, $ name = '' ])

$replyto( string ) - endereço de e-mail para respostas

$name( string ) - Nome de exibição para o endereço de e-mail de resposta

Instância CI_Email (encadeamento de método) CI_Email
2 para ( $ para )

$to( misto ) - string delimitada por vírgulas ou uma matriz de endereços de e-mail

Instância CI_Email (encadeamento de método) CI_Email
3 cc ( $ cc )

$cc( misto ) - string delimitada por vírgulas ou uma matriz de endereços de e-mail

Instância CI_Email (encadeamento de método) CI_Email
4 bcc ( $ bcc [, $ limit = '' ])

$bcc( misto ) - string delimitada por vírgulas ou uma matriz de endereços de e-mail

$limit( int ) - Número máximo de e-mails para enviar por lote

Instância CI_Email (encadeamento de método) CI_Email
5 assunto ( $ assunto )

$subject( string ) - linha de assunto do e-mail

Instância CI_Email (encadeamento de método) CI_Email
6 mensagem ( $ body )

$body( string ) - corpo da mensagem de e-mail

Instância CI_Email (encadeamento de método) CI_Email
7 set_alt_message ( $ str )

$str( string ) - corpo da mensagem de e-mail alternativo

Instância CI_Email (encadeamento de método) CI_Email
8 set_header ( $ header, $ value )

$header( string ) - nome do cabeçalho

$value( string ) - valor do cabeçalho

Instância CI_Email (encadeamento de método) CI_Email
9 limpar ([ $ clear_attachments = FALSE ])

$clear_attachments( bool ) - Se deve ou não limpar os anexos

Instância CI_Email (encadeamento de método) CI_Email
10 enviar ([ $ auto_clear = TRUE ])

$auto_clear( bool ) - se deseja limpar os dados da mensagem automaticamente

Instância CI_Email (encadeamento de método) CI_Email
11 attach ($ filename [, $disposition = ''[, $newname = NULL [, $ mime = '']]])

$filename( string ) - Nome do arquivo

$disposition( string ) - 'disposição' do anexo. A maioria dos clientes de email toma suas próprias decisões, independentemente da especificação MIME usada aqui. iana

$newname( string ) - Nome do arquivo personalizado para usar no e-mail

$mime( string ) - tipo MIME a ser usado (útil para dados em buffer)

Instância CI_Email (encadeamento de método) CI_Email
12 attach_cid ( $ filename )

$filename( string ) - Nome de arquivo de anexo existente

Anexo Content-ID ou FALSE se não encontrado corda

Enviando um e-mail

Para enviar um e-mail usando o CodeIgniter, primeiro você deve carregar a biblioteca de e-mail usando o seguinte -

$this->load->library('email');

Após carregar a biblioteca, basta executar as seguintes funções para definir os elementos necessários para enviar um e-mail. ofrom() função é usada para definir - de onde o e-mail está sendo enviado e to()função é usada - para quem o e-mail está sendo enviado. osubject() e message() função é usada para definir o assunto e a mensagem do e-mail.

$this->email->from('[email protected]', 'Your Name'); $this->email->to('[email protected]');
 
$this->email->subject('Email Test'); $this->email->message('Testing the email class.');

Depois disso, execute o send() função conforme mostrado abaixo para enviar um e-mail.

$this->email->send();

Exemplo

Crie um arquivo de controlador Email_controller.php e salve em application/controller/Email_controller.php.

<?php 
   class Email_controller extends CI_Controller { 
 
      function __construct() { 
         parent::__construct(); 
         $this->load->library('session'); 
         $this->load->helper('form'); } public function index() { $this->load->helper('form'); 
         $this->load->view('email_form'); } public function send_mail() { $from_email = "[email protected]"; 
         $to_email = $this->input->post('email'); 
   
         //Load email library 
         $this->load->library('email'); $this->email->from($from_email, 'Your Name'); $this->email->to($to_email); $this->email->subject('Email Test'); 
         $this->email->message('Testing the email class.'); //Send mail if($this->email->send()) 
         $this->session->set_flashdata("email_sent","Email sent successfully."); else $this->session->set_flashdata("email_sent","Error in sending Email."); 
         $this->load->view('email_form'); 
      } 
   } 
?>

Crie um arquivo de visualização chamado email_form.php e salve em application/views/email_form.php

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Email Example</title> 
   </head>
	
   <body> 
      <?php 
         echo $this->session->flashdata('email_sent'); 
         echo form_open('/Email_controller/send_mail'); 
      ?> 
		
      <input type = "email" name = "email" required /> 
      <input type = "submit" value = "SEND MAIL"> 
		
      <?php 
         echo form_close(); 
      ?> 
   </body>
	
</html>

Faça as alterações no routes.php arquivo em application/config/routes.php e adicione a seguinte linha no final do arquivo.

$route['email'] = 'Email_Controller';

Execute o exemplo acima visitando o seguinte link. Substitua o yoursite.com pelo URL do seu site.

http://yoursite.com/index.php/email

A validação é um processo importante durante a construção de um aplicativo da web. Ele garante que os dados que estamos obtendo são adequados e válidos para armazenar ou processar. O CodeIgniter tornou essa tarefa muito fácil. Vamos entender esse processo com um exemplo simples.

Exemplo

Criar um arquivo de visualização myform.php e salve o código abaixo em application/views/myform.php. Esta página exibirá um formulário onde o usuário pode enviar seu nome e nós validaremos esta página para garantir que ela não fique vazia durante o envio.

<html>
 
   <head> 
      <title>My Form</title> 
   </head>
	
   <body>
      <form action = "" method = "">
         <?php echo validation_errors(); ?>  
         <?php echo form_open('form'); ?>  
         <h5>Name</h5> 
         <input type = "text" name = "name" value = "" size = "50" />  
         <div><input type = "submit" value = "Submit" /></div>  
      </form>  
   </body>
	
</html>

Criar um arquivo de visualização formsuccess.php e salve em application/views/formsuccess.php. Esta página será exibida se o formulário for validado com sucesso.

<html>
 
   <head> 
      <title>My Form</title>
   </head> 
	
   <body>  
      <h3>Your form was successfully submitted!</h3>  
      <p><?php echo anchor('form', 'Try it again!'); ?></p>  
   </body>
	
</html>

Crie um arquivo de controlador Form.php e salve em application/controller/Form.php. Este formulário irá mostrar erros se não for validado corretamente ou redirecionado paraformsuccess.php página.

<?php
  
   class Form extends CI_Controller { 
	
      public function index() { 
         /* Load form helper */ 
         $this->load->helper(array('form'));
			
         /* Load form validation library */ 
         $this->load->library('form_validation'); /* Set validation rule for name field in the form */ $this->form_validation->set_rules('name', 'Name', 'required'); 
			
         if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); 
         } 
         else { 
            $this->load->view('formsuccess'); 
         } 
      }
   }
?>

Adicione a seguinte linha em application/config/routes.php.

$route['validation'] = 'Form';

Vamos executar este exemplo visitando a seguinte URL no navegador. Este URL pode ser diferente com base no seu site.

http://yoursite.com/index.php/validation

Isso produzirá a seguinte tela -

Adicionamos uma validação no controlador - Nameé um campo obrigatório antes de enviar o formulário. Portanto, se você clicar no botão enviar sem inserir nada no campo do nome, será solicitado que você insira o nome antes de enviar, conforme mostrado na tela abaixo.

Após inserir o nome com sucesso, você será redirecionado para a tela conforme mostrado abaixo.

No exemplo acima, usamos a configuração de regra necessária. Existem muitas regras disponíveis no CodeIgniter, que são descritas abaixo.

Referência de regra de validação

A seguir está uma lista de todas as regras nativas que estão disponíveis para uso -

Regra Parâmetro Descrição Exemplo

required

Não Retorna FALSE se o elemento do formulário estiver vazio.

matches

sim Retorna FALSE se o elemento do formulário não corresponder ao do parâmetro. corresponde a [form_item]

regex_match

sim Retorna FALSE se o elemento do formulário não corresponder à expressão regular. regex_match [/ regex /]

differs

sim Retorna FALSE se o elemento do formulário não for diferente daquele no parâmetro. difere [form_item]

is_unique

sim Retorna FALSE se o elemento do formulário não for exclusivo para a tabela e o nome do campo no parâmetro. Nota - Esta regra requer que o Query Builder esteja habilitado para funcionar. is_unique [table.field]

min_length

sim Retorna FALSE se o elemento do formulário for menor que o valor do parâmetro. comprimento_min [3]

max_length

sim Retorna FALSE se o elemento do formulário for maior que o valor do parâmetro. max_length [12]

exact_length

sim Retorna FALSE se o elemento do formulário não for exatamente o valor do parâmetro. comprimento_exato [8]

greater_than

sim Retorna FALSE se o elemento do formulário for menor ou igual ao valor do parâmetro ou não numérico. maior do que [8]

greater_than_equal_to

sim Retorna FALSE se o elemento do formulário for menor que o valor do parâmetro ou não numérico. maior_do_equal_to [8]

less_than

sim Retorna FALSE se o elemento do formulário for maior ou igual ao valor do parâmetro ou não numérico. menos do que [8]

less_than_equal_to

sim Retorna FALSE se o elemento do formulário for maior que o valor do parâmetro ou não for numérico. menos_que_equal_ a [8]

in_list

sim Retorna FALSE se o elemento do formulário não estiver em uma lista predeterminada. in_list [vermelho, azul, verde]

alpha

Não Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de caracteres alfabéticos.

alpha_numeric

Não Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de caracteres alfanuméricos.

alpha_numeric_spaces

Não Retorna FALSE se o elemento do formulário contém qualquer coisa diferente de caracteres alfanuméricos ou espaços. Deve ser usado após o corte para evitar espaços no início ou no final

alpha_dash

Não Retorna FALSE se o elemento do formulário contém algo diferente de caracteres alfanuméricos, sublinhados ou travessões.

numeric

Não Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de caracteres numéricos.

integer

Não Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de um inteiro.

decimal

Não Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de um número decimal.

is_natural

Não Retorna FALSE se o elemento do formulário contém algo diferente de um número natural - 0, 1, 2, 3, etc.

is_natural_no_zero

Não Retorna FALSE se o elemento do formulário contém qualquer coisa diferente de um número natural, mas não zero - 1, 2, 3, etc.

valid_url

Não Retorna FALSE se o elemento do formulário não contém um URL válido.

valid_email

Não Retorna FALSE se o elemento do formulário não contiver um endereço de e-mail válido.

valid_emails

Não Retorna FALSE se algum valor fornecido em uma lista separada por vírgulas não for um e-mail válido.

valid_ip

Não Retorna FALSE se o IP fornecido não for válido. Aceita um parâmetro opcional de 'ipv4' ou 'ipv6' para especificar um formato de IP.

valid_base64

Não Retorna FALSE se a string fornecida contiver qualquer coisa diferente de caracteres Base64 válidos.

Ao construir sites, muitas vezes precisamos rastrear a atividade e o estado do usuário e, para isso, temos que usar session. CodeIgniter tem aula de sessão para este propósito.

Inicializando uma Sessão

Os dados das sessões estão disponíveis globalmente por meio do site, mas para usar esses dados, primeiro precisamos inicializar a sessão. Podemos fazer isso executando a seguinte linha no construtor.

$this->load->library('session');

Depois de carregar a biblioteca de sessão, você pode simplesmente usar o objeto de sessão conforme mostrado abaixo.

$this->session

Adicionar dados da sessão

Em PHP, simplesmente usamos $_SESSION array para definir quaisquer dados na sessão, conforme mostrado abaixo.

$_SESSION[‘key’] = value;

Onde 'key'é a chave de array e value é atribuído no lado direito de igual ao sinal.

A mesma coisa pode ser feita no CodeIgniter conforme mostrado abaixo.

$this->session->set_userdata('some_name', 'some_value');

set_userdata()função leva dois argumentos. O primeiro argumento,some_name, é o nome da variável de sessão, sob a qual, some_value será armazenado.

set_userdata() A função também suporta outra sintaxe na qual você pode passar array para armazenar valores como mostrado abaixo.

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => '[email protected]', 
   'logged_in' => TRUE
);  

$this->session->set_userdata($newdata);

Remover os dados da sessão

No PHP, podemos remover dados armazenados na sessão usando o unset() função conforme mostrado abaixo.

unset($_SESSION[‘some_name’]);

Remover os dados da sessão no CodeIgniter é muito simples, conforme mostrado abaixo. A versão abaixo deunset_userdata() função irá remover apenas uma variável da sessão.

$this->session->unset_userdata('some_name');

Se você quiser remover mais valores da sessão ou remover um array inteiro, você pode usar a versão abaixo do unset_userdata() função.

$this->session->unset_userdata($array_items);

Buscar dados da sessão

Depois de definir os dados na sessão, também podemos recuperar esses dados conforme mostrado abaixo. Userdata()função será usada para este propósito. Esta função irá retornarNULL se os dados que você está tentando acessar não estiverem disponíveis.

$name = $this->session->userdata('name');

Exemplo

Crie uma classe de controlador chamada Session_controller.php e salve em application/controller/Session_controller.php.

<?php 
   class Session_controller extends CI_Controller {
	
      public function index() { 
         //loading session library 
         $this->load->library('session'); //adding data to session $this->session->set_userdata('name','virat');
			
         $this->load->view('session_view'); } public function unset_session_data() { //loading session library $this->load->library('session');
			
         //removing session data 
         $this->session->unset_userdata('name'); $this->load->view('session_view'); 
      } 
		
   } 
?>

Crie um arquivo de visualização chamado session_view.php e salve em application/views/session_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Session Example</title> 
   </head>
	
   <body> 
      Welcome <?php echo $this->session->userdata('name'); ?> 
      <br> 
      <a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
         Click Here</a> to unset session data. 
   </body>
	
</html>

Faça as alterações no routes.php arquivo em application/config/routes.php e adicione a seguinte linha no final do arquivo.

$route['sessionex'] = 'Session_Controller';

Execute o exemplo acima usando o seguinte endereço. Substituiryoursite.com com o URL do seu site.

http://yoursite.com/index.php/sessionex

Ao construir um aplicativo da web, precisamos armazenar alguns dados apenas uma vez e, depois disso, queremos remover esses dados. Por exemplo, para exibir alguma mensagem de erro ou mensagem informativa. Em PHP, temos que fazer isso manualmente, mas o CodeIgniter simplificou esse trabalho para nós. No CodeIgniter, flashdata só estará disponível até a próxima solicitação e será excluído automaticamente.

Adicionar Flashdata

Podemos simplesmente armazenar flashdata conforme mostrado abaixo.

$this->session->mark_as_flash('item');
  • mark_as_flash()A função é usada para este propósito, que leva apenas um argumento do valor a ser armazenado. Também podemos passar um array para armazenar vários valores.

  • set_flashdata()função também pode ser usada, que leva dois argumentos, nome e valor, conforme mostrado abaixo. Também podemos passar um array.

$this->session->set_flashdata('item','value');

Recuperar Flashdata

Flashdata pode ser recuperado usando a função flashdata () que pega um argumento do item a ser buscado conforme mostrado abaixo. A função flashdata () garante que você está obtendo apenas dados flash e não quaisquer outros dados.

$this->session->flashdata('item');

Se você não passar nenhum argumento, poderá obter um array com a mesma função.

Exemplo

Crie uma classe chamada FlashData_Controller.php e salve em application/controller/FlashData_Controller.php.

<?php 
   class FlashData_Controller extends CI_Controller {
	
      public function index() { 
         //Load session library 
         $this->load->library('session');
			
         //redirect to home page 
         $this->load->view('flashdata_home'); } public function add() { //Load session library $this->load->library('session'); 
         $this->load->helper('url'); //add flash data $this->session->set_flashdata('item','item-value'); 
   
         //redirect to home page 
         redirect('flashdata'); 
      } 
   } 
?>

Crie um arquivo de visualização chamado flashdata_home.php e salve em application/views/ flashdata_home.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Flashdata Example</title> 
   </head>
	
   <body> 
      Flash Data Example 
      <h2><?php echo $this->session->flashdata('item'); ?></h2> 
      <a href = 'flashdata/add'>Click Here</a> to add flash data. 
   </body>
	
</html>

Faça as alterações no routes.php arquivo em application/config/routes.php e adicione a seguinte linha no final do arquivo.

$route['flashdata'] = 'FlashData_Controller'; 
$route['flashdata/add'] = 'FlashData_Controller/add';

Execute o exemplo acima visitando o seguinte link. Substitua o yoursite.com pelo URL do seu site.

http://yoursite.com/index.php/flashdata

Após visitar o URL acima, você verá uma tela conforme mostrado abaixo.

Clique em "Click Here”Link e você verá uma tela conforme mostrado abaixo. Aqui, nesta tela, você verá um valor da variável de dados flash. Atualize a página novamente e você verá uma tela como a acima e a variável de dados flash será removida automaticamente.

Em algumas situações, onde você deseja remover os dados armazenados na sessão após algum período de tempo específico, isso pode ser feito usando tempdata funcionalidade no CodeIgniter.

Adicionar Tempdata

Para adicionar dados como tempdata, temos que usar mark_as_tempdata()função. Esta função leva dois itens de argumento ou itens a serem armazenados comotempdata e o tempo de expiração para esses itens são mostrados abaixo.

// 'item' will be erased after 300 seconds(5 minutes) 
$this->session->mark_as_temp('item',300);

Você também pode passar uma matriz para armazenar vários dados. Todos os itens armazenados abaixo irão expirar após 300 segundos.

$this->session->mark_as_temp(array('item','item2'),300);

Você também pode definir um tempo de expiração diferente para cada item, conforme mostrado abaixo.

// 'item' will be erased after 300 seconds, while 'item2' 
// will do so after only 240 seconds 

$this->session->mark_as_temp(array( 
   'item'=>300, 
   'item2'=>240 
));

Recuperar Tempdata

Podemos recuperar o tempdata usando tempdata()função. Esta função garante que você esteja obtendo apenas dados temporários e não quaisquer outros dados. Veja o exemplo abaixo para ver como recuperar tempdata.tempdata() função terá um argumento do item a ser obtido.

$this->session->tempdata('item');

Se você omitir o argumento, poderá recuperar todos os dados temporários existentes.

Remover Tempdata

Tempdata é removido automaticamente após seu tempo de expiração, mas se você quiser remover tempdata antes disso, você pode fazer conforme mostrado abaixo usando o unset_tempdata() função, que leva um argumento do item a ser removido.

$this->session->unset_tempdata('item');

Exemplo

Crie uma classe chamada Tempdata_controller.php e salve em application/controller/Tempdata_controller.php.

<?php 
   class Tempdata_controller extends CI_Controller {
	
      public function index() { 
         $this->load->library('session'); $this->load->view('tempdata_view'); 
      } 
  
      public function add() { 
         $this->load->library('session'); $this->load->helper('url'); 
   
         //tempdata will be removed after 5 seconds 
         $this->session->set_tempdata('item','item-value',5); 
   
         redirect('tempdata'); 
      } 
   } 
?>

Crie um arquivo chamado tempdata_view.php e salve em application/views/tempdata_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Tempdata Example</title> 
   </head>
	
   <body> 
      Temp Data Example 
      <h2><?php echo $this->session->tempdata('item'); ?></h2>
      <a href = 'tempdata/add'>Click Here</a> to add temp data. 
   </body>
	
</html>

Faça as alterações no routes.php arquivo em application / config / routes.php e adicione a seguinte linha no final do arquivo.

$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";

Execute o exemplo acima visitando o seguinte link. Substitua o yoursite.com pelo URL do seu site.

http://yoursite.com/index.php/tempdata

Após visitar o URL acima, você verá uma tela conforme mostrado abaixo.

Clique em “Click Here” link e você verá uma tela conforme mostrado abaixo.

Aqui, nesta tela, você verá um valor da variável de dados temp. Atualize a mesma página após cinco segundos novamente, pois definimos os dados de temperatura para cinco segundos e você verá uma tela como a acima e a variável de dados de temperatura será removida automaticamente após cinco segundos. Se você atualizar a mesma página antes de 5 segundos, os dados temporários não serão removidos, pois o período de tempo não acabou.

Destruindo uma Sessão

No PHP, estamos usando o session_destroy() função para destruir a sessão e no CodeIgniter podemos destruir a função como mostrado abaixo.

$this->session->sess_destroy();

Depois de chamar esta função, todos os dados da sessão, incluindo o flashdata e tempdata será excluído permanentemente e não poderá ser recuperado.

Cookie é um pequeno pedaço de dado enviado do servidor da web para armazenar no computador do cliente. CodeIgniter tem um helper chamado “Cookie Helper” para gerenciamento de cookies.

Syntax

set_cookie ( $ name [, $ value = '' [, $ expire = '' [, $ domain = '' [, $ path = '/' [, $ prefix = '' [, $ secure = FALSE [, $ Reply = FALSO ]]]]]]]])

Parameters

  • $name( misto ) - nome do cookie ou matriz associativa de todos os parâmetros disponíveis para esta função

  • $value( string ) - valor do cookie

  • $expire( int ) - Número de segundos até a expiração

  • $domain( string ) - Domínio do cookie (geralmente: .seudominio.com)

  • $path( string ) - Caminho do cookie

  • $prefix( string ) - Prefixo do nome do cookie

  • $secure( bool ) - se deve enviar apenas o cookie por meio de HTTPS

  • $httponly( bool ) - Se deve ocultar o cookie do JavaScript

Return Type

vazio

No set_cookie()função, podemos passar todos os valores de duas maneiras. Na primeira forma, apenas o array pode ser passado e, na segunda forma, parâmetros individuais também podem ser passados.

Syntax

get_cookie ( $ index [, $ xss_clean = NULL ]])

Parameters

  • $index( string ) - Nome do cookie

  • $xss_clean( bool ) - se a filtragem XSS deve ser aplicada ao valor retornado

Return

O valor do cookie ou NULL se não for encontrado

Return Type

misturado

o get_cookie() A função é usada para obter o cookie que foi definido usando a função set_cookie ().

Syntax

delete_cookie ( $ name [, $ domain = '' [, $ path = '/' [, $ prefix = '' ]]]])

Parameters

  • $name( string ) - Nome do cookie

  • $domain( string ) - Domínio do cookie (geralmente: .seudominio.com)

  • $path( string ) - Caminho do cookie

  • $prefix( string ) - Prefixo do nome do cookie

Return Type

vazio

o delete_cookie() função é usada para deletar o cookie ().

Exemplo

Crie um controlador chamado Cookie_controller.php e salve em application/controller/Cookie_controller.php

<?php 
   class Cookie_controller extends CI_Controller { 
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('cookie', 'url')); 
      } 
  
      public function index() { 
         set_cookie('cookie_name','cookie_value','3600'); 
         $this->load->view('Cookie_view'); } public function display_cookie() { echo get_cookie('cookie_name'); $this->load->view('Cookie_view');
      } 
  
      public function deletecookie() { 
         delete_cookie('cookie_name'); 
         redirect('cookie/display'); 
      } 
		
   } 
?>

Crie um arquivo de visualização chamado Cookie_view.php e salve em application/views/Cookie_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head> 
	
   <body> 
      <a href = 'display'>Click Here</a> to view the cookie.<br> 
      <a href = 'delete'>Click Here</a> to delete the cookie. 
   </body>
	
</html>

Altere o arquivo routes.php em application / config / routes.php para adicionar a rota para o controlador acima e adicione a seguinte linha no final do arquivo.

$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie"; 
$route['cookie/delete'] = "Cookie_controller/deletecookie";

Depois disso, você pode executar a seguinte URL no navegador para executar o exemplo.

http://yoursite.com/index.php/cookie

Ele produzirá uma saída conforme mostrado na imagem a seguir.

As funções da biblioteca CodeIgniter e funções auxiliares precisam ser inicializadas antes de serem usadas, mas existem algumas funções comuns, que não precisam ser inicializadas.

Essas funções comuns e suas descrições são fornecidas a seguir.

Sintaxe is_php ( $ version )
Parâmetros

$version( string ) - número da versão

Retorna TRUE se a versão do PHP em execução for pelo menos a especificada ou FALSE se não for
Tipo de Devolução vazio
Descrição Determina se a versão do PHP em uso é maior que o número da versão fornecida.
Sintaxe is_really_writable ( $ file )
Parâmetros

$file( string ) - caminho do arquivo

Retorna TRUE se o caminho for gravável, FALSE se não for
Tipo de Devolução bool
Descrição verifica se o arquivo é gravável ou não.
Sintaxe config_item ( $ key )
Parâmetros

$key( string ) - chave do item de configuração

Retorna Valor da chave de configuração ou NULL se não for encontrado
Tipo de Devolução misturado
Descrição Esta função é usada para obter o item de configuração
Sintaxe set_status_header ( $ code [, $ text = '' ])
Parâmetros

$code( int ) - código de status de resposta HTTP

$text( string ) - uma mensagem personalizada para definir com o código de status

Retorna
Tipo de Devolução vazio
Descrição Esta função permite que você defina manualmente um cabeçalho de status do servidor.
Sintaxe remove_invisible_characters ( $ str [, $ url_encoded = TRUE ])
Parâmetros

$str( string ) - string de entrada

$url_encoded( bool ) - Se deve remover caracteres codificados por URL também

Retorna Cordão higienizado
Tipo de Devolução corda
Descrição Esta função evita a inserção de caracteres NULL entre caracteres ASCII
Sintaxe html_escape ( $ var )
Parâmetros

$var( mista ) - Variável de escape (string ou matriz)

Retorna Cadeia (s) de escape de HTML
Tipo de Devolução misturado
Descrição Esta função atua como uma função htmlspecialchars () nativa do PHP.
Sintaxe get_mimes ()
Retorna Uma matriz associativa de tipos de arquivo
Tipo de Devolução matriz
Descrição Esta função retorna uma referência ao array MIMEs de application / config / mimes.php .
Sintaxe is_https ()

Retorna TRUE se estiver usando HTTP sobre SSL, FALSE se não estiver
Tipo de Devolução bool
Descrição Retorna TRUE se uma conexão segura (HTTPS) for usada e FALSE em qualquer outro caso (incluindo solicitações não HTTP).
Sintaxe is_cli ()
Retorna TRUE se estiver em execução no CLI, FALSE caso contrário
Tipo de Devolução bool
Descrição Retorna TRUE se o aplicativo for executado por meio da linha de comando e FALSE se não for.
Sintaxe function_usable ( $ function_name )
Parâmetros

$function_name( string ) - nome da função

Tipo de Devolução bool
Descrição Retorna TRUE se uma função existe e é utilizável, FALSE caso contrário.

Dada a seguir é um exemplo, que demonstra todas as funções acima.

Exemplo

Aqui, criamos apenas um controlador no qual usaremos as funções acima. Copie o código fornecido abaixo e salve-o em application/controller/CommonFun_Controller.php.

<?php 
   class CommonFun_Controller extends CI_Controller { 
	
      public function index() {
         set_status_header(200); 
         echo is_php('5.3')."<br>"; 
         var_dump(is_really_writable('./Form.php')); 
			
         echo config_item('language')."<br>"; 
         echo remove_invisible_characters('This is a ‌test','UTF8')."<br>"; 
			
         $str = '< This > is \' a " test & string'; 
         echo html_escape($str)."<br>"; 
         echo "is_https():".var_dump(is_https())."<br>"; 
         echo "is_cli():".var_dump(is_cli())."<br>"; 
			
         var_dump(function_usable('test'))."<br>"; 
         echo "get_mimes():".print_r(get_mimes())."<br>"; 
      } 
  
      public function test() { 
         echo "Test function"; 
      } 
		
   } 
?>

Mudar o routes.php em application / config / routes.php para adicionar a rota para o controlador acima e adicione a seguinte linha no final do arquivo.

$route['commonfunctions'] = 'CommonFun_Controller';

Digite o seguinte URL na barra de endereço do seu navegador para executar o exemplo.

http://yoursite.com/index.php/commonfunctions

Armazenar uma página em cache melhora a velocidade de carregamento da página. Se a página estiver armazenada em cache, ela será armazenada em seu estado totalmente renderizado. Da próxima vez, quando o servidor receber uma solicitação para a página armazenada em cache, ela será enviada diretamente para o navegador solicitado.

Os arquivos em cache são armazenados em application/cachepasta. O armazenamento em cache pode ser ativado por página. Ao habilitar o cache, precisamos definir o tempo, até o qual ele precisa permanecer na pasta em cache e após esse período, será excluído automaticamente.

Habilitar Cache

O cache pode ser habilitado executando a seguinte linha em qualquer método do controlador.

$this->output->cache($n);

Onde $n é o número de minutes, você deseja que a página permaneça em cache entre as atualizações.

Desativar cache

O arquivo de cache é excluído quando expira, mas quando você deseja excluí-lo manualmente, é necessário desativá-lo. Você pode desabilitar o cache executando a seguinte linha.

// Deletes cache for the currently requested URI 
$this->output->delete_cache();
  
// Deletes cache for /foo/bar 
$this->output->delete_cache('/foo/bar');

Exemplo

Crie um controlador chamado Cache_controller.php e salve em application/controller/Cache_controller.php

<?php 
   class Cache_controller extends CI_Controller { 
	
      public function index() { 
         $this->output->cache(1); 
         $this->load->view('test'); } public function delete_file_cache() { $this->output->delete_cache('cachecontroller'); 
      } 
   } 
?>

Crie um arquivo de visualização chamado test.php e salve em application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Mudar o routes.php arquivo em application/config/routes.php para adicionar rota para o controlador acima e adicionar a seguinte linha no final do arquivo.

$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';

Digite a seguinte URL no navegador para executar o exemplo.

http://yoursite.com/index.php/cachecontroller

Depois de visitar o URL acima, você verá que um arquivo de cache para isso será criado em application/cachepasta. Para excluir o arquivo, visite o seguinte URL.

http://yoursite.com/index.php/cachecontroller/delete

Durante a construção de um aplicativo da web, geralmente precisamos redirecionar o usuário de uma página para outra. O CodeIgniter facilita esse trabalho para nós. oredirect() função é usada para este propósito.

Syntax

redirecionar ($uri = '', $método = 'auto', $ code = NULL )

Parameters

  • $uri( string ) - string URI

  • $method( string ) - Método de redirecionamento ('auto', 'localização' ou 'atualização')

  • $code( string ) - código de resposta HTTP (geralmente 302 ou 303)

Return type

vazio

O primeiro argumento pode ter dois tipos de URI. Podemos passar o URL completo do site ou segmentos de URI para o controlador que você deseja direcionar.

O segundo parâmetro opcional pode ter qualquer um dos três valores de auto, localização ou atualização. O padrão é automático.

O terceiro parâmetro opcional está disponível apenas com redirecionamentos de local e permite enviar um código de resposta HTTP específico.

Exemplo

Crie um controlador chamado Redirect_controller.php e salve em application/controller/Redirect_controller.php

<?php 
   class Redirect_controller extends CI_Controller { 
	
      public function index() { 
         /*Load the URL helper*/ 
         $this->load->helper('url'); /*Redirect the user to some site*/ redirect('http://www.tutorialspoint.com'); } public function computer_graphics() { /*Load the URL helper*/ $this->load->helper('url'); 
         redirect('http://www.tutorialspoint.com/computer_graphics/index.htm'); 
      } 
  
      public function version2() { 
         /*Load the URL helper*/ 
         $this->load->helper('url'); 
   
         /*Redirect the user to some internal controller’s method*/ 
         redirect('redirect/computer_graphics'); 
      } 
		
   } 
?>

Mudar o routes.php arquivo em application/config/routes.php para adicionar rota para o controlador acima e adicionar a seguinte linha no final do arquivo.

$route['redirect'] = 'Redirect_controller'; 
$route['redirect/version2'] = 'Redirect_controller/version2'; $route['redirect/computer_graphics'] = 'Redirect_controller/computer_graphics';

Digite a seguinte URL no navegador para executar o exemplo.

http://yoursite.com/index.php/redirect

O URL acima o redirecionará para o site tutorialspoint.com e, se você visitar o seguinte URL, ele o redirecionará para o tutorial de computação gráfica em tutorialspoint.com.

http://yoursite.com/index.php/redirect/computer_graphics

Ao construir uma aplicação web, estamos muito preocupados com o desempenho do site em termos de quanto tempo o controlador leva para executar e quanta memória é usada. Não apenas o desempenho, mas também precisamos ver os insights de dados como dados POST, dados de consultas de banco de dados, dados de sessão etc. para fins de depuração durante o desenvolvimento de algum aplicativo. O CodeIgniter tornou esse trabalho mais fácil para nós, criando o perfil de um aplicativo.

Habilitar criação de perfil

Para habilitar o perfil de seu aplicativo, basta executar o comando fornecido abaixo em qualquer um dos métodos de seu controlador.

$this->output->enable_profiler(TRUE);

O relatório do perfil pode ser visto na parte inferior da página após habilitá-lo.

Desativar criação de perfil

Para desabilitar o perfil de seu aplicativo, basta executar o comando fornecido abaixo em qualquer um dos métodos de seu controlador.

$this->output->enable_profiler(FALSE);

Habilitar / Desabilitar Seção do Profiler

A criação de perfil pode ser feita com base na seção. Você pode habilitar ou desabilitar a criação de perfil de uma seção definindo um valor booleano TRUE ou FALSE. Se você deseja definir o perfil do aplicativo, você pode fazer em um arquivo localizado emapplication/config/profiler.php

Por exemplo, o comando a seguir habilitará consultas de criação de perfil para todo o aplicativo.

$config['queries'] = TRUE;

Na tabela a seguir, a chave é o parâmetro, que pode ser definido na matriz de configuração para habilitar ou desabilitar um determinado perfil.

Chave Descrição Padrão

benchmarks

Tempo decorrido de pontos de referência e tempo total de execução VERDADEIRO

config

Variáveis ​​CodeIgniterConfig VERDADEIRO

controller_info

A classe e o método do controlador solicitados VERDADEIRO

get

Quaisquer dados GET passados ​​na solicitação VERDADEIRO

http_headers

Os cabeçalhos HTTP para a solicitação atual VERDADEIRO

memory_usage

Quantidade de memória consumida pela solicitação atual, em bytes VERDADEIRO

post

Quaisquer dados POST passados ​​na solicitação VERDADEIRO

queries

Lista de todas as consultas de banco de dados executadas, incluindo o tempo de execução VERDADEIRO

uri_string

O URI da solicitação atual VERDADEIRO

session_data

Dados armazenados na sessão atual VERDADEIRO

query_toggle_count

O número de consultas após as quais o bloco de consulta ficará oculto por padrão. 25

O profiler definido no arquivo em application/config/profiler.php pode ser substituído usando o set_profiler_sections() função em controladores conforme mostrado abaixo.

$sections = array( 
   'config'  => TRUE, 
   'queries' => TRUE 
); 
 
$this->output->set_profiler_sections($sections);

Definindo pontos de referência

Se você deseja medir o tempo necessário para executar um conjunto de linhas ou uso de memória, você pode calculá-lo usando pontos de Benchmarking no CodeIgniter. Existe um “Benchmarking”Classe para este propósito no CodeIgniter.

Esta classe é carregada automaticamente; você não precisa carregá-lo. Ele pode ser usado em qualquer lugar em suas classes de controlador, visualização e modelo. Tudo que você precisa fazer é marcar um ponto inicial e um ponto final e, em seguida, executar oelapsed_time() entre esses dois pontos marcados e você pode obter o tempo que levou para executar esse código conforme mostrado abaixo.

<?php 
   $this->benchmark->mark('code_start'); // Some code happens here $this->benchmark->mark('code_end');
  
   echo $this->benchmark->elapsed_time('code_start', 'code_end'); 
?>

Para exibir o uso de memória, use a função memory_usage() conforme mostrado no código a seguir.

<?php 
   echo $this->benchmark->memory_usage(); 
?>

Exemplo

Crie um controlador chamado Profiler_controller.php e salve em application/controller/Profiler_controller.php

<?php 
   class Profiler_controller extends CI_Controller {
  
      public function index() {
	
         //enable profiler
         $this->output->enable_profiler(TRUE); $this->load->view('test'); 
      } 
  
      public function disable() {
	
         //disable profiler 
         $this->output->enable_profiler(FALSE); $this->load->view('test'); 
      }
		
   } 
?>

Crie um arquivo de visualização chamado test.php e salve em application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Altere o arquivo routes.php em application/config/routes.php para adicionar rota para o controlador acima e adicionar a seguinte linha no final do arquivo.

$route['profiler'] = "Profiler_controller"; $route['profiler/disable'] = "Profiler_controller/disable"

Depois disso, você pode digitar a seguinte URL na barra de endereço do seu navegador para executar o exemplo.

http://yoursite.com/index.php/profiler

O URL acima habilitará o criador de perfil e produzirá uma saída conforme mostrado na captura de tela a seguir.

Para desativar o perfil, execute o seguinte URL.

http://yoursite.com/index.php/profiler/disable

Adicionar arquivos JavaScript e CSS (Cascading Style Sheet) no CodeIgniter é muito simples. Você deve criar a pasta JS e CSS no diretório raiz e copiar todos os arquivos .js na pasta JS e os arquivos .css na pasta CSS, conforme mostrado na figura.

Por exemplo, vamos supor que você criou um arquivo JavaScript sample.js e um arquivo CSS style.css. Agora, para adicionar esses arquivos em suas visualizações, carregue o URL helper em seu controlador conforme mostrado abaixo.

$this->load->helper('url');

Depois de carregar o URL helper no controlador, simplesmente adicione as linhas fornecidas abaixo no arquivo de visualização, para carregar o arquivo sample.js e style.css na visualização, conforme mostrado abaixo.

<link rel = "stylesheet" type = "text/css" 
   href = "<?php echo base_url(); ?>css/style.css">

<script type = 'text/javascript' src = "<?php echo base_url(); 
   ?>js/sample.js"></script>

Exemplo

Crie um controlador chamado Test.php e salve em application/controller/Test.php

<?php 
   class Test extends CI_Controller {
	
      public function index() { 
         $this->load->helper('url'); 
         $this->load->view('test'); 
      } 
   } 
?>

Crie um arquivo de visualização chamado test.php e salve em application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
      <link rel = "stylesheet" type = "text/css" 
         href = "<?php echo base_url(); ?>css/style.css"> 
      <script type = 'text/javascript' src = "<?php echo base_url(); 
         ?>js/sample.js"></script> 
   </head>
	
   <body> 
      <a href = 'javascript:test()'>Click Here</a> to execute the javascript function. 
   </body>
	
</html>

Crie um arquivo CSS chamado style.css e salve em css/style.css

body { 
   background:#000; 
   color:#FFF; 
}

Crie um arquivo JS chamado sample.js e salve em js/sample.js

function test() { 
   alert('test'); 
}

Mudar o routes.php arquivo em application/config/routes.php para adicionar rota para o controlador acima e adicionar a seguinte linha no final do arquivo.

$route['profiler'] = "Profiler_controller"; 
$route['profiler/disable'] = "Profiler_controller/disable"

Use a seguinte URL no navegador para executar o exemplo acima.

http://yoursite.com/index.php/test

A classe de idioma no CodeIgniter fornece uma maneira fácil de oferecer suporte a vários idiomas para internacionalização. Até certo ponto, podemos usar arquivos de idiomas diferentes para exibir texto em muitos idiomas diferentes.

Podemos colocar arquivos de idiomas diferentes no diretório do aplicativo / idioma. Os arquivos de idioma do sistema podem ser encontrados no diretório sistema / idioma, mas para adicionar seu próprio idioma ao aplicativo, você deve criar uma pasta separada para cada idioma no diretório aplicativo / idioma.

Criação de arquivos Idioma

Para criar um arquivo de idioma, você deve terminá-lo com _lang.php. Por exemplo, se você deseja criar um arquivo de idioma para o idioma francês, deve salvá-lo comfrench_lang.php. Dentro deste arquivo, você pode armazenar todos os seus textos de idioma em combinação de chave e valor em$lang array conforme mostrado abaixo.

$lang[‘key’] = ‘val’;

Carregando arquivo de idioma

Para usar qualquer um dos idiomas em seu aplicativo, você deve primeiro carregar o arquivo desse idioma específico para recuperar vários textos armazenados nesse arquivo. Você pode usar o código a seguir para carregar o arquivo de idioma.

$this->lang->load('filename', 'language');
  • filename- É o nome do arquivo que você deseja carregar. Não use a extensão do arquivo aqui, mas apenas o nome do arquivo.

  • Language - É o conjunto de idiomas que o contém.

Buscando Texto do Idioma

Para obter uma linha do arquivo de idioma, basta executar o código a seguir.

$this->lang->line('language_key');

Onde language_key é o parâmetro chave usado para buscar o valor da chave no arquivo de idioma carregado.

Autoload Idiomas

Se você precisa de algum idioma globalmente, pode carregá-lo automaticamente em application/config/autoload.php arquivo como mostrado abaixo.

| -----------------------------------------------------------------------
|  Auto-load Language files
| -----------------------------------------------------------------------
| Prototype:
|   $autoload['config'] = array('config1', 'config2');
|
| NOTE: Do not include the "_lang" part of your file. For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();

Simplesmente, passe os diferentes idiomas a serem carregados automaticamente pelo CodeIgniter.

Exemplo

Crie um controlador chamado Lang_controller.php e salve em application/controller/Lang_controller.php

<?php
   class Lang_controller extends CI_Controller {

      public function index(){
         //Load form helper
         $this->load->helper('form');

         //Get the selected language
         $language = $this->input->post('language');
		
         //Choose language file according to selected lanaguage
         if($language == "french") $this->lang->load('french_lang','french');
         else if($language == "german") $this->lang->load('german_lang','german');
         else
         $this->lang->load('english_lang','english'); //Fetch the message from language file. $data['msg'] = $this->lang->line('msg'); $data['language'] = $language; //Load the view file $this->load->view('lang_view',$data);
      }
   }
?>

Crie um arquivo de visualização chamado lang_view.php e salve em application/views/ lang_view.php

<!DOCTYPE html>
<html lang = "en"> 

   <head>
      <meta charset = "utf-8">
      <title>CodeIgniter Internationalization Example</title>
   </head>
	
   <body>
      <?php
         echo form_open('/lang');
      ?>
		
      <select name = "language" onchange = "javascript:this.form.submit();">
         <?php
            $lang = array('english'=>"English",'french'=>"French",'german'=>"German");
				
            foreach($lang as $key=>$val) { if($key == $language) echo "<option value = '".$key."' selected>".$val."</option>"; else echo "<option value = '".$key."'>".$val."</option>"; } ?> </select> <br> <?php form_close(); echo $msg;
      ?>
		
   </body>
	
</html>

Crie três pastas chamadas Inglês, Francês e Alemão em application/language conforme mostrado na figura abaixo.

Copie o código fornecido abaixo e salve-o em english_lang.php arquivo em application/language/english pasta.

<?php
   $lang['msg'] = "CodeIgniter Internationalization example.";
?>

Copie o código fornecido abaixo e salve-o em french_lang.php arquivo em application/language/French pasta.

<?php
   $lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>

Copie o código fornecido abaixo e salve-o em german_lang.php arquivo em application/language/german pasta.

<?php
   $lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>

Mudar o routes.php arquivo em application/config/routes.php para adicionar rota para o controlador acima e adicionar a seguinte linha no final do arquivo.

$route['lang'] = "Lang_controller";

Execute a seguinte URL no navegador para executar o exemplo acima.

http://yoursite.com/index.php/lang

Ele produzirá uma saída conforme mostrado na imagem a seguir. Se você alterar o idioma na lista suspensa, o idioma da frase escrita abaixo da lista suspensa também será alterado de acordo.

Prevenção XSS

XSS significa script entre sites. CodeIgniter vem com segurança de filtragem XSS. Este filtro impedirá qualquer código JavaScript malicioso ou qualquer outro código que tente sequestrar o cookie e realizar atividades maliciosas. Para filtrar dados por meio do filtro XSS, use oxss_clean() método conforme mostrado abaixo.

$data = $this->security->xss_clean($data);

Você deve usar esta função apenas quando estiver enviando dados. O segundo parâmetro booleano opcional também pode ser usado para verificar se há ataque XSS no arquivo de imagem. Isso é útil para a facilidade de upload de arquivo. Se seu valor for verdadeiro, significa que a imagem é segura e não o contrário.

Prevenção de injeção de SQL

A injeção de SQL é um ataque feito na consulta de banco de dados. Em PHP, usamosmysql_real_escape_string() função para evitar isso junto com outras técnicas, mas CodeIgniter fornece funções embutidas e bibliotecas para evitar isso.

Podemos prevenir a injeção de SQL no CodeIgniter das três maneiras a seguir -

  • Consultas de escape
  • Query Biding
  • Classe Active Record

Consultas de escape

<?php
   $username = $this->input->post('username'); $query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
      $this->db->escape($email);
   $this->db->query($query);
?>

$this->db->escape() A função adiciona automaticamente aspas simples ao redor dos dados e determina o tipo de dados para que ele possa escapar apenas dos dados da string.

Query Biding

<?php
   $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
   $this->db->query($sql, array(3, 'live', 'Rick'));
?>

No exemplo acima, o ponto de interrogação (?) Será substituído pela matriz no segundo parâmetro da função query (). A principal vantagem de construir uma consulta dessa maneira é que os valores são automaticamente escapados, o que produz consultas seguras. O motor CodeIgniter faz isso para você automaticamente, então você não precisa se lembrar disso.

Classe Active Record

<?php
   $this->db->get_where('subscribers_tbl',array
      ('status'=> active','email' => '[email protected]'));
?>

Usando registros ativos, a sintaxe de consulta é gerada por cada adaptador de banco de dados. Também permite consultas mais seguras, já que os valores escapam automaticamente.

Escondendo Erros PHP

No ambiente de produção, muitas vezes não queremos exibir nenhuma mensagem de erro aos usuários. É bom se estiver habilitado no ambiente de desenvolvimento para fins de depuração. Essas mensagens de erro podem conter algumas informações, que não devemos mostrar aos usuários do site por motivos de segurança.

Existem três arquivos CodeIgniter relacionados a erros.

Nível de relatório de erros de PHP

Diferentes ambientes requerem diferentes níveis de relatório de erros. Por padrão, o desenvolvimento mostrará erros, mas o teste e a ativação os ocultarão. Existe um arquivo chamadoindex.phpno diretório raiz do CodeIgniter, que é usado para este propósito. Se passarmos zero como argumento paraerror_reporting() função então que irá esconder todos os erros.

Erro de banco de dados

Mesmo que você tenha desativado os erros do PHP, os erros do MySQL ainda estarão abertos. Você pode desligar isso emapplication/config/database.php. Colocou odb_debug opção em $db matriz para FALSE como mostrado abaixo.

$db['default']['db_debug'] = FALSE;

Log de erros

Outra forma é transferir os erros para arquivos de log. Portanto, ele não será exibido para os usuários no site. Simplesmente, defina olog_threshold valor em $config matriz para 1 em application/cofig/config.php arquivo como mostrado abaixo.

$config['log_threshold'] = 1;

Prevenção CSRF

CSRF significa falsificação de solicitação entre sites. Você pode evitar este ataque ativando-o noapplication/config/config.php arquivo como mostrado abaixo.

$config['csrf_protection'] = TRUE;

Quando você está criando um formulário usando form_open()função, ele irá inserir automaticamente um CSRF como campo oculto. Você também pode adicionar manualmente o CSRF usando oget_csrf_token_name() e get_csrf_hash()função. oget_csrf_token_name() função retornará o nome do CSRF e get_csrf_hash() retornará o valor hash de CSRF.

O token CSRF pode ser gerado novamente para envio ou você também pode mantê-lo durante toda a vida do cookie CSRF. Definindo o valorTRUE, na matriz de configuração com chave ‘csrf_regenerate’ irá regenerar o token conforme mostrado abaixo.

$config['csrf_regenerate'] = TRUE;

Você também pode colocar URLs na lista de permissões de proteção CSRF, definindo-o na matriz de configuração usando a chave ‘csrf_exclude_uris’como mostrado abaixo. Você também pode usar expressões regulares.

$config['csrf_exclude_uris'] = array('api/person/add');

Tratamento de senha

Muitos desenvolvedores não sabem como lidar com senhas em aplicativos da web, provavelmente por isso que vários hackers acham tão fácil invadir os sistemas. Deve-se ter em mente os seguintes pontos ao lidar com senhas -

  • NÃO armazene senhas em formato de texto simples.

  • Sempre hash suas senhas.

  • NÃO use Base64 ou codificação semelhante para armazenar senhas.

  • NÃO use algoritmos de hash fracos ou corrompidos, como MD5 ou SHA1. Use apenas algoritmos de hash de senha forte, como BCrypt, que é usado nas próprias funções de hash de senha do PHP.

  • NUNCA exiba ou envie uma senha em formato de texto simples.

  • NÃO coloque limites desnecessários nas senhas dos seus usuários.