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 |
|
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 2º 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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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/sessionexAo 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 |
|
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 |
|
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 |
|
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 |
|
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.