Escolar Documentos
Profissional Documentos
Cultura Documentos
2 - Guia do Usurio
Sumrio
Code Igniter URLs .......................................................................................................................................................................... 4 Model-View-Controller ................................................................................................................................................................ 5 Pontap Inicial ................................................................................................................................................................................ 5 Controllers ....................................................................................................................................................................................... 6 Views ................................................................................................................................................................................................12 Models .............................................................................................................................................................................................16 Funes Assistentes (Helpers) ................................................................................................................................................19 Plugins .............................................................................................................................................................................................20 Utilizando as Bibliotecas do Code Igniter...........................................................................................................................21 Criando Bibliotecas .....................................................................................................................................................................21 Criando Classes do Ncleo do Sistema ...............................................................................................................................25 Ganchos - Estendendo o Ncleo do Framework .............................................................................................................27 Recursos de Autocarregamento ............................................................................................................................................29 Scaolding .....................................................................................................................................................................................30 Roteamento URI ...........................................................................................................................................................................31 Tratamento de Erros ...................................................................................................................................................................33 Cache de Pgina ..........................................................................................................................................................................34 Gerenciando suas Aplicaes .................................................................................................................................................35 Sintaxe PHP Alternativa para arquivos de Visualizao (View les) ..........................................................................36 Segurana ......................................................................................................................................................................................37 Classe Benchmarking.................................................................................................................................................................40 Classe Calendar ............................................................................................................................................................................42 Classe Cong .................................................................................................................................................................................45 Classe Email ...................................................................................................................................................................................47 Classe Criptograa ......................................................................................................................................................................51 Classe Upload de Arquivo ........................................................................................................................................................53 Guia de Referncia ......................................................................................................................................................................56 Classe FTP.......................................................................................................................................................................................59 Referncia da Funo .................................................................................................................................................................60 Classe Tabela HTML ....................................................................................................................................................................62 Referncia da Funo .................................................................................................................................................................64 Classe Manipulao de Imagem ............................................................................................................................................66 Marca-dgua ................................................................................................................................................................................71 Classe Input ...................................................................................................................................................................................73 Classe Loader ...............................................................................................................................................................................76 Classe Idioma ................................................................................................................................................................................77 Classe Output ..............................................................................................................................................................................78 Classe Paginao ........................................................................................................................................................................79 Classe Sesso ................................................................................................................................................................................82 Classe Trackback ..........................................................................................................................................................................85 Classe Template Parser ..............................................................................................................................................................88 Classe Unit Testing ......................................................................................................................................................................90 Classe URI .......................................................................................................................................................................................92 Classe User Agent........................................................................................................................................................................94 Referncias de Funes .............................................................................................................................................................95 Validao de Formulrio ...........................................................................................................................................................97 Classes XML-RPC e Servidor de XML-RPC ....................................................................................................................... 106 XML-RPC funo referncia .................................................................................................................................................. 111 Classe codicao ZIP ............................................................................................................................................................ 113 Function Reference .................................................................................................................................................................. 113 Classe banco de dados .......................................................................................................................................................... 117 2 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio Query ............................................................................................................................................................................................ 122 Resultado Helper funes .................................................................................................................................................... 125 Query Helper funes ............................................................................................................................................................ 125 Active Record classe ............................................................................................................................................................... 127 Transaes (Transactions) ..................................................................................................................................................... 134 Campo de dados (Field Data)............................................................................................................................................... 135 Funo convites personalizados (Custom Function Calls): ...................................................................................... 137 Database Utility Class ............................................................................................................................................................ 137 Classe Database caching ...................................................................................................................................................... 141 Funo Referncia .................................................................................................................................................................... 142 Assistente de Array .................................................................................................................................................................. 145 Assistente de Cookie ............................................................................................................................................................... 146 Assistente de Data ................................................................................................................................................................... 147 Assistente de Diretrio ........................................................................................................................................................... 151 Assistente de Download ........................................................................................................................................................ 152 Assistente de Arquivo ............................................................................................................................................................. 152 Assistente de Formulrio ....................................................................................................................................................... 153 Assistente de HTML ................................................................................................................................................................. 158 Assistente de Segurana........................................................................................................................................................ 160 Assistente de Smiley ............................................................................................................................................................... 161 Referncia da Funo .............................................................................................................................................................. 163 Assistente de String ................................................................................................................................................................. 163 Assistente de Texto .................................................................................................................................................................. 164 Assistente de Tipograa ......................................................................................................................................................... 166 Assistente de URL ..................................................................................................................................................................... 167 Assistente de XML .................................................................................................................................................................... 170
Segmentos URI
Os segmentos na URL, de acordo com a abordagem Model-View-Controller, geralmente representam: www.seu-site.com/classe/funcao/ID O primeiro segmento representa a classe controller que ser invocada. O segundo segmento representa a classe funo, ou mtodo, que ser chamada. O terceiro, e qualquer outro subseqente, representa o ID ou qualquer outra varivel que sero passados com controller. A Classe URI e o Assistente URL contm funes que facilitaro o trabalho com seus dados URI. Alm disto, suas URLs podem ser remapeadas usando a caracterstica URI Routing, proporcionando mais exibilidade.
Model-View-Controller
O Code Igniter baseado no padro de desenvolvimento Model-View-Controller. A MVC uma abordagem de software que separa a lgica da aplicao de sua apresentao. Em prtica, ela permite que suas pginas web contenham o mnimo de scripts j que a apresentao separa do cdigo PHP. O Model representa suas estruturas de dados. Tipicamente, suas classes model iro conter funes que lhe ajudaro a buscar, inserir e substituir informaes em sua bando de dados.. A View a informao que ser apresentada ao usurio. A View ser normalmente uma pgina web, mas no Code Igniter, uma view pode ser tambm um fragmento de pgina como um cabealho ou rodap. Ela pode ser tambm uma pgina RSS, ou qualquer outro tipo de pgina. O Controller serve como um intermedirio entre o Model, a View, e qualquer outro recurso necessrio para processar a requisio HTTP e gerar a pgina web. O Code Igniter tem uma abordagem mais solta em relao ao MVC, j que Models no so obrigatrios. Se voc no precisa desta facilidade, ou acha que manter models gerar mais complexidade que voc quer, pode ignor-las e construir sua aplicao apenas usando Controllers e Views. Code Igniter tambm proporciona que voc incorpore seus prprios scripts, ou mesmo desenvolva bibliotecas para o sistema, lhe possibilitando trabalhar de um jeito que faa mais sentido para voc.
Pontap Inicial
Qualquer software demanda certo esforo em seu aprendizado. Ns zemos nosso melhor para minimizar a curva de aprendizado mantendo o processo o mais aprecivel possvel. O primeiro passo instalar o Code Igniter e ento ler todos os tpicos na seo Introduo deste Guia. Em seguida, leia cada um dos Assuntos Gerais na ordem em que esto listados. Cada assunto se baseia no anterior e inclui exemplos de cdigo que voc encorajado a experimentar. Quanto compreender o bsico, voc est pronto a explorar as pginas das Referncias de Classes e as Referncias de Assistentes para aprender a utilizar as bibliotecas e arquivos assistentes nativos. Fique a vontade para aproveitar nosso Frum Comunitrio se tiver dvidas ou problemas e nosso Wiki para ver exemplos de cdigo postados por outros usurios.
Code Igniter Verso 1.5.2 - Guia do Usurio O Code Igniter opcionalmente suporta esta capacidade, que pode ser habilitada no arquivo application/ cong.php. Se voc abrir seu arquivo de congurao ver estes itens: $cong[enable_query_strings] = FALSE; $cong[controller_trigger] = c; $cong[function_trigger] = m; Se voc alterar enable_query_strings para TRUE, este recurso ser ativado. Seus controles e funes sero ento acessados usando palavras gatilho que voc congurar para invocar seus controllers e mtodos: index.php?c=controller&m=metodo Por favor, note: Se voc est usando query strings, ter que construir suas prprias URLs, ao invs de utilizar os assistentes URL (e outros assistentes que geral URLs, como alguns dos assistentes de formulrio) j que eles foram projetados para trabalhar com URLs segmentadas.
Controllers
Controllers so o corao da sua aplicao, pois determinam como as requisies HTTP devem ser tratadas.
O que um Controler?
Um Controller simplesmente um arquivo de classe que nomeado de uma forma em que possa ser associado a uma URI. Considere este URI: www.seu-site.com/index.php/blog/ No exemplo acima, o Code Igniter tentar encontrar um controller chamado blog.php e o carregar. Quando um nome de um controller bate com o primeiro segmento do URI, ele ser carregado.
Code Igniter Verso 1.5.2 - Guia do Usurio Note: Nomes de Classes devem comear com uma letra maiscula. Em outras palavras, isto vlido: <?php class Blog extends Controller { } ?> E isto no vlido: <?php class blog extends Controller { } ?> E tambm sempre tenha certeza que seu controller estenda o controller pai para que possa herdar todas as funes deste.
Funes
No exemplo acima, o nome da funo index(). A funo index sempre carregada por default se o segundo segmento do URI estiver vazio. Outro jeito de mostrar sua mensagem Hello World poderia ser este: www.seu-site.com/index.php/blog/index/ A segunda parte do segmento do URI determina qual funo no controller chamada. Vamos tentar isto. Adicione uma nova funo ao seu controller: <?php class Blog extends Controller { function index() { echo Hello World!; } function comments() { echo Olher para isto!; } } ?>
Code Igniter Verso 1.5.2 - Guia do Usurio Carregue agora a seguinte URL para ver a funo comment: www.seu-site.com/index.php/blog/comments/ Voc dever ver sua nova mensagem.
Code Igniter Verso 1.5.2 - Guia do Usurio Importante: Se seu controller contm uma funo chamada _remap(), ela sempre ser chamada independente do seu URI contenha. Ela sobrepe o comportamente normal no qual o URI determina qual funo ser chamada, permitindo que voc dena suas prprias regras de roteamento de funes. A chamada de funo sobreposta (tipicamente o segundo segmento do URI) ser passado como um parmetro funo _remap(): function _remap($metodo) { if ($metodo == algum_metodo) { $this->$metodo(); } else { $this->metodo_default(); } }
Processando a Sada
O Code Igniter tem uma classe de sada que toma conta de enviar os dados renderizado nais ao web browser automaticamente. Mais informaes sobre isto pode ser encontrado nas pginas Views e Classe Sada. Em alguns casos, no entanto, voc pode preferir ps-processar os dados nalizdos e ento enviar para o browser voc mesmo. Code Igniter permite que voc adicione uma funo chamada _output() em seu controller que ir receber os dados de sada nalizados. Importante: Se seu controller contm uma funo chamada _output(), ela sempre ser chamada pela classe Sada no lugar de dar echo diretamente nos dados nalizados. O primeiro parmetro desta funo conter a sada nalizada. Aqui est um exemplo: function _output($output) { echo $output; } Por favor, note que sua funo _output() ir receber os dados em seu estado nal. Benchmark e dados de uso de memria sero renderizados, arquivos de cache sero escritos (se o cache estiver habilitado) e cabealhos sero enviados (se voc usar tal recurso) antes que sejam entregues funo _output(). Se voc est usando este recurso, o temporizador de execuo da pgina e as estatsticas de uso de memria podero no ser perfeitamente precisos pois eles no sero consideraro qualquer processamento adicional que voc zer. Para uma forma alternativa de controlar a sada antes que qualquer processamento nal feito, por favor veja os mtodos disponveis na Classe Output. Diagramado por: edson jr - edsonthadeu@hotmail.com 9
Funes Privadas
Em alguns casos, voc pode querer que certas funes no sejam acessas publicamente. Para fazer uma funo privada, simplesmente adicione um underscore como prexo do nome e ela no ser servida via requisao URL. Por exemplo, se voc tiver uma funo como esta: function _utility() { // algum cdigo } Tentar acess-la via URL, da seguinte forma, no funcionar: www.seu-site.com/index.php/blog/_utility/
Construtores de Classes
Se voc pretende usar um construtor em algum de seus Controllers, voc DEVE colocar a seguinte linha de cdigo nele: parent::Controller(); A razo para esta linha ser necessria porque seu construtor local ir sobrepor aquele na classe controller pai, por isto precisamos cham-la manualmente. Se voc no est familirizado com construtores (constructors), em PHP 4, um construtor simplesmente uma funo que tem o mesmo nome da classe: <?php class Blog extends Controller { function Blog() { } ?> 10 Diagramado por: edson jr - edsonthadeu@hotmail.com parent::Controller(); }
Code Igniter Verso 1.5.2 - Guia do Usurio Em PHP 5, construtores usam a seguinte sintaxe: <?php class Blog extends Controller { function __construct() { parent::Controller(); } } ?> Construtores so teis se voc precisa denir alguns valores default, ou rodar um processo default enquanto sua classe instanciada. Construtores no podem retornar um valor, mas podem executar algum trabalho default.
Views
Uma view simplesmente uma pgina ou um fragmento de pgina, como um cabealho, um rodap, uma coluna lateral etc. Alis, views podem tambm ser embutidas dentro de outras views se voc precisar. Views nunca so chamadas diretamente, elas precisam ser carregadas por um controller. Lembre-se que num framework MVC, o Controller atua como um guarda de trnsito, sendo responsvel por controlar o trfego de dados e chamar a view quando preciso. Se voc ainda no leu a pgina Controllers, o faa antes de continuar lendo isto. Usando o controller de exemplo que voc criou na pgina controller, vamos adicionar uma view a ele.
12
Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Blog extends Controller { function index() { $this->load->view(blogview); } } ?> Se visitar seu site usando aquela mesma URL de antes, dever ver sua nova view. A URL era similar a esta: www.seu-site.com/index.php/blog/
13
Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Blog extends Controller { function index() { $data[title] = Meu ttulo real; $data[heading] = Meu cabealho real; $this->load->view(blogview, $data); } } ?> Agora, abra seu arquivo view e altere o texto para variveis que correspondem as chaves (keys) da array em seus dados: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> <head> <title><?=$title;?></title> </head> <body> <h1><?=$heading;?></h1> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> </html> Carrega a pgina usando a URL costumeira e voc dever ver as variveis substitudas. Note: Voc notar que no exemplo acima estamos usando a sintaxe alternativa do PHP. Se voc no est familiarizado com ela, leia isto.
Criando Loops
A array de dados que voc passa a seus arquivos view no limitada a simples variveis. Voc pode passar arrays multidimensionais, que podem se repetir em loop para gerar mltiplas linhas. Por exemplo, se voc puxar alguma informao de seu banco de dados, ela geralmente vir na forma de uma array multidimensional. Aqui vai um simples exemplo. Adicione isto em seu controller: 14 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Blog extends Controller { function index() { $data[afazeres] = array(Limpar a Casa, Ligar pra a mame, Jogar uma pelada); $data[title] = Meu ttulo real; $data[heading] = Meu cabealho real; $this->load->view(blogview, $data); } } ?> Abra agora seu arquivo view e crie um loop: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> <head> <title><?=$title;?></title> </head> <body> <h1><?=$heading;?></h1> <h3>Meus Afazeres</h3> <ul> <?php foreach($afazeres as $item):?> <li><?=$item;?></li> <?php endforeach;?> </ul> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> </html>
15
Models
Models esto opcionalmente disponveis para aqueles que quiserem usar a abordagem MVC mais tradicional.
O que um Model?
Models so classes PHP projetadas para trabalhar a informao em seu banco de dados. Por exemplo, digamos que voc use o Code Igniter para gerenciar um blog. Voc poderia ter uma classe model contendo funes para inserir, atualizar e buscar seus dados do banco. Mais abaixo, um exemplo de como se parece uma classe Model: class Blogmodel extends Model { var $title = ; var $content = ; var $date = ; function Blogmodel() { // Chama o construtor do Model parent::Model(); } function get_last_ten_entries() { $query = $this->db->get(entries, 10); return $query->result(); } function insert_entry() { $this->title = $_POST[title]; $this->content = $_POST[content]; $this->date = time(); $this->db->insert(entries, $this); } function update_entry() { $this->title = $_POST[title]; $this->content = $_POST[content]; 16 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio $this->date = time(); $this->db->update(entries, $this, array(id, $_POST[id])); } } Note: As funes do exemplo acima usam as funes Active Record para banco de dados.
Anatomia de um Model
Classes Model so armazenadas em seu diretrios application/models/. Elas podem ser aninhadas em subdiretrios se voc preferir. O prottipo bsico para uma classe Model este: class Model_name extends Model { function Model_name() { parent::Model(); } } Onde Model_name o nome da sua classe. Nomes de Classes devem ter inicial maiscula. Tenha certeza que sua classe estende a classe Model bsica. O nome do arquivo ser o nome da classe todo em minsculas. Por exemplo, se sua classe essa: class User_model extends Model { function User_model() { parent::Model(); } } Ento seu arquivo ser: application/models/user_model.php
17
Carregando um Model
Seus models sero tipicamente carregados e chamados dentro das funes de seus controller. Para carregar um model, voc usar a seguinte funo: $this->load->model(Model_name); Se seu model estiver em um subdiretrio, inclua o caminha relativo para sua diretrio. Po exemplo, se voc tem um model localizado em application/models/blog/queries.php voc o carregar usando: $this->load->model(blog/queries); Uma vez carregado, voc acessar as funes de seu model utilizando um objeto como o mesmo classe que havia criado: $this->load->model(Model_name); $this->Model_name->function(); Se voc quiser atribuire seu model a um objeto de nome diferente, pode especicar isto atravs do segundo parmetro da funo de carregamento: $this->load->model(Model_name, fubar); $this->fubar->function(); Abaixo um exemplo de um controller, que carrega um model e ento serve uma view: class Blog_controller extends Controller { function blog() { $this->load->model(Blog); $data[query] = $this->Blog->get_last_ten_entries(); $this->load->view(blog, $data); } }
18
Carregando um Assistente
Carregar um arquivo assistente bem simples utilizando-se a funo: $this->load->helper(name); Onde name o nome do arquivo do assistente, sem a extenso .php ou a parte helper aparecendo. Por exemplo, para carregar o Assistente de URL, que chamado url_helper.php, voc deveria fazer isto: $this->load->helper(url); Um assistente pode ser carregado em qualquer lugar dentro de suas funes do controller (ou at dentro de seus arquivos View, embora esta no seja uma boa prtica), desde que voc o carregue antes de usar. Voc pode carregar seus assistentes em seu construtor controller para que eles se tornem disponveis automaticamente a qualquer funo, ou voc pode apenas carreg-los diretamente na funo que o requer.
19
Code Igniter Verso 1.5.2 - Guia do Usurio Note: A funo de carregamento de um Assistente no retorna um valor, por isso no tente atribu-la a uma varivel. Ento s a use como mostrado.
Usando um Assistente
Carregado o arquivo assistente que contm a funo que voc pretende usar, voc dever cham-lo da mesma forma que chamaria uma funo PHP. Por exemplo, para criar um link utilizando a funo anchor() em uma de suas views, faa o seguinte: <?=anchor(blog/comments, Clique Aqui);?> Onde Clique aqui o texto do link e blog/comments o URI para o controller/funo que que ser linkado.
E agora?
Na listagem de Contedos voc ir encontrar uma lista de todos os Assistentes disponveis. Navegue por todos para descubrir o que eles fazem.
Plugins
Plugins trabalham de forma praticamente idntica aos Assistentes. A principal diferena que um plugin geralmente prov uma simples funo, enquanto o assistente geralmente uma coleo de funes. Assistentes so tambm considerados uma parte do ncleo do sistema; A idia que os plugins sejam criados e compartilhados por nossa comunidade.. Plugins deveriam ser salvos em seu diretrio system/plugins mas voc pode criar um diretrio chamado plugins dentro do seu application e guard-los l. Code Igniter ir primeiro procur-los em seu diretrio system/application/plugins. Se o diretrio no existir ou se o plugin no for localizado l, o CI procurar ento em seu diretrio global system/plugins.
Carregando um Plugin
Carregar um plugin bem simples. Utilize a seguinte funo: $this->load->plugin(name); Onde name o nome do arquivo do plugin, sem a extenso .php ou plugin. Por exemplo, para carregar o plugin Captcha, cujo nome captcha_pi.php, voc dever fazer isto: $this->load->plugin(captcha); Um plugin pode ser carregando de qualquer lugar dentro das funes de seu controller (ou at mesmo dentro de suas View les, mas esta no boa prtica), desde que voc os carregando antes de us-los. Voc pode carregar seus plugins em seu controller construstor para que quem disponveis automaticamente para qualquer funo, ou voc pode carreg-los dentro da funo que precisa deles. 20
Code Igniter Verso 1.5.2 - Guia do Usurio Note: A funo de carregamento de Plugins acima no retorna um valor, ento no tente atribu-la uma varivel. Ento s a use como mostrado.
Usando um Plugin
Carregado o arquivo Plugin, voc dever cham-lo da mesma forma que chamaria uma funo PHP.
Criando Bibliotecas
Quando utilizamos o termo Bibliotecas, normalmente estamos nos referindo as clases localizadas no diretrio libraries e descritas na seo Referncias de Classes deste guia. Neste caso, porm, iremos mostrar como voc pode criar suas prprias bibliotecas dentro de seu diretrio application/libraries a m de manter uma separao entre seus recursos locais e os recursos globais do framework. Como bnus, o Code Igniter permite que suas bilbliotecas estender classes nativas se voc simplismente precisar adicionar alguma funcionalidade para uma biblioteca existente. Voc ainda pode sobrescrever as bibliotecas nativas pelas suas em seu diretrio application/libraries. Sumrio: Voc pode criar bibliotecas inteiramente novas. Voc pode estender bibliotecas nativas. Voc pode sobrescrever bibliotecas nativas. O texto abaixo detalha estes trs conceitos. Note: As classes de Banco de Dados e as classes Controller principais no podem ser estendidas ou sobrescritas pelas classes que voc criar. Mas todas as outras podem.
21
Armazenamento
Sua biblioteca de classes deve ser colocada em seu diretrio application/libraries, pois este ser o lugar onde o Code Igniter ir procur-las quando foram inicializadas.
Convenes de Nomenclatura
Nomes de arquivo devem ter sua inicial maiscula. Por exemplo: Minhaclasse.php Declaraes de Classes devem ter sua inicial maiscula. Por exemplo: class Minhaclasse Nomes de classes e nomes de arquivos devem ser iguais.
O arquivo de Classe
Classes devem ter este prottipo bsico (Note: Estamos utilizando o nome Algumaclasse puramente como exemplo): <?php if (!dened(BASEPATH)) exit(No direct script access allowed); class Algumaclasse { function some_function() { } } ?>
22
Code Igniter Verso 1.5.2 - Guia do Usurio <?php if (!dened(BASEPATH)) exit(No direct script access allowed); class Algumaclasse { function Algumaclasse($params) { // Faa alguma coisa com o $params } } ?> Voc pode tambm passar parmetros armazenados no arquivo de congurao. Simplesmente crie um arquivo cong com nome idntico ao do nome de arquivo da classe e salve-o em seu diretrioapplication/ cong/. Note que se voc passar dinamicamente parmetros, como descrito acima, a opo do arqivo cong no estar disponvel.
23
Code Igniter Verso 1.5.2 - Guia do Usurio Note: Voc ir notar que a funo get_instance() acima est sendo passada por referncia: $CI =& get_instance(); Isto muito importante. Atribuir por referncia permite que voc use o objeto Code Igniter original, ao invs de criar uma cpia dele.
24
Code Igniter Verso 1.5.2 - Guia do Usurio Se este diretrio no existir, voc pode cri-lo. Qualquer arquivo com o mesmo nome de um item da lista acima ser escolhido no lugar daquele que normalmente seria usado. Por favor, note que sua classe precisa usar o prexo CI. Por exemplo, se seu arquivo chama-se Input.php, o nome da classe ser: class CI_Input { }
26
Habilitando os Ganchos
O recurso de ganchos pode ser habilitado/desabilitado globalmente, congurando-se o seguinte item no arquivo application/cong/cong.php: $cong[enable_hooks] = TRUE;
Denindo um Gancho
Ganchos so denidos no arquivo application/cong/hooks.php. Cada um especicado como uma array com esse prottipo: $hook[pre_controller] = array( class => MinhaClasse, function => MinhaClasse, lename => MinhaClasse.php, lepath => MinhaClasse, params => array(cerveja, vinho, salgadinhos) ); Notas: O ndice da array corresponde ao nome do particular ponto de gancho que voc queira usar. No exemplo acima, o ponto de gancho pre_controller. Uma lista de pontos de ganchos aparece abaixo. Os seguintes itens devem ser denidos em sua array de gancho associada: class O nome da classe que voc deseja chamar. Se desejar usar uma funo procedural no lugar de uma classe, deixe este item em branco. function A funo que deseja chamar. lename O nome do arquivo contendo sua classe/funo. lepath O nome do diretrio contendo seu script. Note: Seu script deve estar localizado num diretrio DENTRO do seu diretrio application, portanto o caminho do arquivp relativo a este diretrio. Por exemplo, se seu script est localizado em application/hooks, simplesmente use hooks como seu caminho de arquivo. Se seu script est localizado em application/hooks/utilities use hooks/utilities como seu caminho de arquivo. Sem a barra invertida. params Quaisquer parmetros que deseje passar ao script. Este item opcional
Code Igniter Verso 1.5.2 - Guia do Usurio $hook[pre_controller][] = array( class => MinhaClasse, function => MinhaClasse, lename => MinhaClasse.php, lepath => MinhaClasse, params => array(cerveja, vinho, salgadinhos) ); $hook[pre_controller][] = array( class => MinhaOutraClasse, function => MinhaOutraFuncao, lename => MinhaOutraClasse.php, lepath => ganchos, params => array(vermelho, amarelo, azul) ); Note os colchetes aps cada indce da array: $hook[pre_controller][] Isto permite que voc use o mesmo ponto de gancho com mltiplos scripts. A ordem que voc denir em sua array ser a ordem de execuo.
Pontos de Gancho
Abaixo est uma lista dos pontos disponveis. pre_system Chamado bem cedo durante a execuo do sistema. Apenas as classes benchmark e hooks estaro carregadas nesta hora. Nem roteamento ou outros processos rodaram. pre_controller Chamado imediatamente antes de qualquer um de seus controllers serem chamados. Todas as classes bsicas, roteamento, e checagem de segurana rodaram. post_controller_constructor Chamado imediatamente aps seu controller ser instanciado, mas antes de qualquer chamadas de mtodo rodarem. post_controller Chamado imediatamente aps seu controller ser totalmente executado. display_override Sobrepe a funo _display(), usada para enviar a pgina nalizada ao web browser no nal da execuo do sistema. Isto permite que voc use sua prpria metodologia de display. Note que os dados nalizados esto disponveis ao se chamar $this->output->get_output()
28
Code Igniter Verso 1.5.2 - Guia do Usurio cache_override Permite que voc chame sua prpria funo no lugar da _display_cache() na classe output. Isto possibilita que voc use seu prprio mecanismo de cache display. scaolding_override Permite uma requisio scaolding para disparar seu prprio script. post_system Chamado aps a pgina renderizada nal ser enviada ao browser, no nal da execuo do sistema aps os dados nalizados serem enviados ao browser.
Recursos de Autocarregamento
O Code Igniter vem com um recurso de Auto-load que permite que bibliotecas, assistentes e plugins sejam inicializados automaticamente toda vez que o sistema rodar. Se voc precisa de certos recursos globais em sua aplicao, deve considerar carreg-los automaticamente para sua convenincia. Os itens abaixo podem ser carregados automaticamente: Classes ncleo encontradas no diretrio libraries Arquivos de Assistentes encontrados no diretrio helpers Plugins encontrados no diretrio plugins Arquivos de congurao personalizados encontrados no diretrio cong Para carregar recuros automaticamente, abra o arquivo application/cong/autoload.php e adicione o item que deseja carregar array autoload. Voc encontrar instrues no arquivo correspondente a cada tipo de item. Note: No inclusa a extenso (.php) quando estiver adicionando os itens array autoload.
29
Scaolding
O recurso Scaolding do Code Igniter prov uma maneira rpida e muito conveniente de adicionar, editar ou apagar informaes de seu banco de dados durante o desenvolvimento. Muito Importante: O Scaolding foi planejado para uso apenas durante o desenvolvimento. Ele prov mnima segurana, apenas atravs de uma palavra mgica, portanto qualquer pessoa que tenha acesso ao seu site pode potencialmente editar ou apagar suas informaes. Se voc utilizar este recurso, tenha certeza de desabilit-lo imediatamente ao trmino do desenvolvimento do site. NO DEIXE-O habilitado em um site no ar. E por favor, congure uma palavra secreta antes de us-lo.
Habilitando o Scaolding
Note: As informaes nesta pgina assume que voc j sabe como os controllers funcionam, e que voc tem algum deles funcionando e disponvel. Tambm se assume que voc congurou o Code Igniter para se autoconectar a seu banco de dados. Se no, as informaes aqui no sero muito relevantes, por isso voc encorajado a executar os dois itens acima primeiro. Por ltimo, assume-se que voc o que um construtor de classe. Se no, leia a ltima seo da pgina controllers. Para habilitar o scaolding voc precisa inicializ-lo em seu construtor como mostrado abaixo: <?php class Blog extends Controller { function Blog() { parent::Controller(); $this->load->scaolding(table_name); } } ?> 30 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio Onde table_name o nome da sua tabela (tabela, e no da base de dados) com a qual voc deseja trabalhar. Uma vez inicializado o scaolding, voc o acessr com este prottipo de URL: www.seu-site.com/index.php/classe/palavra_secreta/ Por exemplo, utilizando um controller chamado Blog, e abracadabra sendo a palavra secreta, voc acessaria o scaolding desta forma: www.seu-site.com/index.php/blog/abracadabra/ A interface do scaolding dever ser autoexplicativa. Voc pode adicionar, editar ou apagar registros. Nota Final: O recurso de scaolding somente ir funcionar com tabelas que contm uma chave primria, por ser esta a informao necessria para executar as vrias funes do banco de dados.
Roteamento URI
Tipicamente h uma relao um-a-um entre a string URL e seu correspondente controller classe/mtodo. Os segmentos em um URI normalmente seguem este padro: www.seu-site.com/classe/funcao/id/ Em alguns momentos, porm, voc pode querer remapear estar relao para que uma classe/funo diferente possa ser chamada no lugar daquela correspondente URL. Por exemplo, vamos dizer que voc queria suas URLs tenham este prottipo: www.seu-site.com/produto/1/ www.seu-site.com/produto/2/ www.seu-site.com/produto/3/ www.seu-site.com/produto/4/ Normalmente o segundo segmento da URL est reservado para o nome da funo, mas no exemplo acima h um ID de produto no lugar. Para resolver isto, o Code Igniter permite que voc remapeie o handler URI.
Code Igniter Verso 1.5.2 - Guia do Usurio :num ir igualar um segmento contendo apenas nmeros. :qualquer ir igualar um segmento contendo qualquer caracter. Note: As rotas sero executadas na ordem em que forem denidas. Rotas de nvel mais alto sempre tero precedncia s de nvel mais baixo.
Exemplos
Aqui vo alguns exemplo de roteamento: $route[journals] = blogs; Qualquer URL contendo a palavra jornauls no primeiro segmento ir ser remapeada classe blogs. $route[blog/joe] = blogs/users/34; Qualquer URL contendo o segmento blog/joe ser remapeada classe blogs e ao mtodo users. O ID ser setado como 34. $route[produto/:qualquer] = catalogo/produto_busca; Qualquer URL contendo produto como primeiro segmento, e nada no segundo, ser remapeada classe catalogo e ao mtodo produto_busca. Importante: No use barras invertidas ou normais.
Expresses Regulares
Se voc preferir, pode usar expresses regulares para denir suas regras de rotas. Qualquer expresso regular vlida permitida, assim como back-references. Note: Se voc usar back-references, deve usar a sintaxe com o sinal de dolar ($) no lugar da de dupla barra invertida (//). Uma tpica rota RegEx se parece com algo assim: $route[produtos/([a-z]+)/(\d+)] = $1/id_$2; No exemplo acima, um URI similar a produtos/camisas/123 iria chamar a classe controller camisas e a funo id_123. Voc pode tambm misturar coringas com expresses regulares.
Rotas Reservadas
H duas rotas reservadas: $route[default_controller] = bem-vindo; Esta rota indica qual classe controle dever ser chamada se o URI no contiver dados, o que seria o caso quando algum carrega a URL raiz. No exemplo cima, a classe bem-vindo seria carregada. Voc encorajado a sempre ter uma rota default, do contrrio uma pgina 404 ir aparecer como default. $route[scaolding_trigger] = scaolding; Esta rota permite que voc congure a palavra secreta, que quando presente na URL, dispara o recurso de scaolding. Por favor, leia a pgina Scaolding para detalhes.
32
Tratamento de Erros
O Code Igniter permite que voc construa relatrios de erros em suas aplicaes utilizando as funes descritas abaixo. Alm disso, ele tem uma classe de log de eros que permite que as mensagens de erro e debug sejam salvas como arquivos texto. Note: Por default, O Code Igniter mostra todos os erros PHP. Voc poderia desejar alterar este comportamente uma vez que seu desenvolvimento estiver completo. Descubrir que a funo error_reporting(), localizada no topo de seu aquivo index.php principal. Desabilitar relatrios de erros NO ir evitar que os arquivos de log sejam escritos se houver algum erro. Ao contrrio da maioria dos sistemas no Code Igniter, as funes de erro so simples interfaces procedurais que esto disponveis globalmente atravs de sua aplicao. Esta abordagem permite que mensagens de erro sejam disparadas sem que voc se preocupe com o escopo da classe/funo. As seguintes funes permitem que voc gere erros:
show_error(messagem)
Esta funo ir mostrar a mensagem de erro disponvel ela utilizando o seguinte template: application/errors/error_general.php
show_404(pagina)
Esta funo ir mostrar a mensagem de erro 404 disponvel ela utilizando o seguinte template: application/errors/error_404.php A funo expera que a string passada ela seja o caminho do arquivo para a pgina que no foi encontrada. Note que o Code Igniter automaticamente mostra mensagem 404 se os controllers no so encontrados.
log_message(nivel, messagem)
Esta funo permite que voc escreva mensagens em seus arquivos de log. Voc deve fornecer um destes 3 nveis no primeiro parmetro, indicando qual o tipo de mensagem (debug, erro, info), e com a prpria mensagem como segundo parmetro. Exemplo: if ($qualquer_variavel == ) { log_message(error, Qualquer varivel no contm um valor.); } else { log_message(debug, Qualquer varivel foi atribuda corretamente); } log_message(info, O propsito de qualquer varivel fornecer algum valor.);
33
Code Igniter Verso 1.5.2 - Guia do Usurio H trs tipos de mensagens: Mensagens de Erro. Estas no so na verdade erros, como os erros de PHP ou de usurio. Mensagens de Debug. So mensagens que ajudam no debugging. Por exemplo, se uma classe foi inicializada, voc pode registrar isto como uma informao de debugging. Mensagens Informacionais. Estas so as demais baixa prioridade, simplismente do informaes sobre algum processo. O Code Igniter no gera nativamente qualquer mensagem informacional mas voc pode quer-las em sua aplicao. Note: Para que o arquivo de log seja escrito, o diretrio logs deve estar com permisso de escrita. E voc deve, ainda, congurar o que deve ser registrado. Voc pode, por exemplo, querer que apenas as mensagens de erro sejam registradas e no os outros dois tipos. Se voc congur-las para zero, o registro ser desabilitado.
Cache de Pgina
O Code Igniter permite que voc cacheie suas pginas para atingir mxima performance. Mesmo o Code Igniter sendo bem rpido, a quantidade de informaes dinmicas que voc mostra em suas pginas ser igualada diretamente aos recursos do seu servidor, memria e ciclos de processamento utilizados, o que afetam a velocidade com que suas pginas so carregadas. Cacheando suas pginas, uma vez que elas so salvas em seu estado totalmente renderizado, voc pode obter uma performance prxima a de uma pgina esttica.
Habilitando o Cache
Para habilit-lo, coloque a seguinte tag em qualquer uma de suas funes controller: $this->output->cache(n); Onde n o nmero de minutos que voc deseja que a pgina permanea cacheada entre as atualizaes. A tag acima pode ser colocada em qualquer lugar dentro da funo. Ela no afetada pela ordem em que aparece, por iso coloque-o onde for mais lgico para voc. Uma vez que a tag esteja no lugar, suas pginas passaro a ser cacheadas. Note: Antes dos arquivos de cache poderem ser escritos, voc deve congurar as permisses de escrita em seu diretrio system/cache. (666 geralmente apropriado).
Apagando Caches
Se voc no mais deseja cachear um arquivo, pode remover a tag de cache e ele no mais ser atualizado quando expirar. Note: Remover a tag no ir apagar o cache imediatamente. Ele ir expirar normalmente. Se voc precisa remov-lo antes disto, precisar apag-lo manualmente de seu diretrio.
34
Echos Alternativos
Normalmente para dar echo ou print numa vriavel, voc faria assim: <?php echo $variable; ?> Com a sintaxe alternativa, pode fazer desta maneira: <?=$variable?>
Segurana
Esta pgina descreve algumas boas prticas acerca da segurana na web e detalha as funcionalidades internas de segurana do Code Igniter.
Segurana URI
O Code Igniter basicamente restritivo acerca dos caracteres aceitos em suas strings URI, de maneira a ajudar a minimizar a possibilidade que dados maliciosos possam ser passados para sua aplicao. URIs podem conter apenas o seguinte:
Texto Alfanumrico
Til: ~ Ponto-nal: . Dois pontos: : Underscore: _ Hfen: -
Register_globals
Durante a inicializao do sistemas, todas as variveis globais no esto setadas, exceto as encontradas nas arrays $_POST e $_COOKIE. A rotina de congurao (set/unset) efetivamente a mesma register_ globals = o.
magic_quotes_runtime
A diretiva magic_quotes_runtime est desligada durante a inicializao do sistema, por isso voc no precisa remover as barras quando buscar dados do banco.
Boas Prticas
Antes de aceitar qualquer dado em sua aplicao, sejam dados POST vindos de um submit de um formulrio, COOKIES, dados URI, dados XML_RPC, ou mesmo dados vindos da array SERVER, voc encorajados a praticar esta abordagem de 3 passos: Filtrar os dados supondos estarem infectados ou corrompidos. Validar os dados para assegurar que esto em conformidade aos corretos tipo, extenso, tamanho etc. (algumas vezes esta passo pode substituir o primeiro) D um Escape nos dados antes de submet-los ao banco. O Code Igniter prov as seguintes funes para ajud-lo neste processo:
Filtragem XSS
O Code Igniter vem com um ltro Cross Site Scripting. Este ltro procura por tcnicas comumente usadas para embutir cdigo Javascript malicioso em seus dados, ou outros tipos de cdigos que tentam sequestrar cookies ou causar outros danos. O ltro XSS descrito aqui. Diagramado por: edson jr - edsonthadeu@hotmail.com 37
Valide os dados
O Code Igniter tem uma Classe de Validao que ajuda voc a validar, ltrar e preparar seus dados.
38
Referncia de Classes
39
Classe Benchmarking
O Code Igniter tem uma classe de Benchmarking que est sempre ativa, permitindo vericar a diferena de tempo entre dois pontos marcados para serem calculados. Nota: Esta classe inicializada automaticamente pelo sistema, ento no necessrio fazer isto manualmente. O benchmark sempre iniciado no momento em que o framework carregado, e terminado pela classe de sada (output), assim que enviada a visualizao para o navegador, permitindo uma eciente vericao e exibio de tempo de execuo de todo o sistema. Contedo Usando a classe de Benchmark Marcas de Benchmark na classe de Prole Exibindo o Tempo Total de Execuo Exibindo o Consumo de Memria Usando a classe de Benchmark A classe de Benchmark pode ser utilizada com seus controllers, views, ou seus Models. O processo de uso : Marcar um ponto inicial Marcar um ponto nal Chamar a funo de tempo decorrido (elapsed_time) para visualizar os resultados Segue aqui um exemplo real de uso: $this->benchmark->mark(code_start); // Algum codigo e executado aqui $this->benchmark->mark(code_end); echo $this->benchmark->elapsed_time(code_start, code_end); Nota: As palavras code_start e code_end podem ser quaisquer palavras. Eles so apenas palavras para referenciar as duas marcas. Voce pode usar quaisquer palavras, opu ainda usar multiplas marcas. Veja este exemplo: $this->benchmark->mark(cao); // Algum codigo aqui $this->benchmark->mark(gato); // Mais codigo aqui $this->benchmark->mark(rato); echo $this->benchmark->elapsed_time(cao, gato); echo $this->benchmark->elapsed_time(gato, rato); echo $this->benchmark->elapsed_time(cao, rato);
40
41
Classe Calendar
A classe Calendrio permite a criao dinmica de calendrios. Os calendrios podem ser formatados atravs do uso de um template, lhe dando liberdade total de cada aspecto do design do mesmo. Alm disso, voc pode passar dados para as clulas do seu calendrio.
Inicializando a Classe
Assim como a maioria das classes no Code Igniter, a classe de Calendrio inicializada em seu controller usando o mtodo $this->load->library(): $this->load->library(calendar); Uma vez carregado, o objeto Calendar estar disponvel utilizando: $this->calendar
Exibindo um Calendrio
Segue um simples exemplo de como exibir um calendrio: $this->load->library(calendar); echo $this->calendar->generate(); O cdigo acima ir gerar o calendrio para o ms e ano corrente, baseado nas conguraes do seu servidor. Para exibir um calendrio de uma data especca (ano e ms), voc pode passar esta informao atravs do mtodo de gerao do calendrio: $this->load->library(calendar); echo $this->calendar->generate(2006, 6); O cdigo acima ir gerar o calendrio exibindo o ms de Junho de 2006. O primeiro parmetro especica o ano, o segundo especica o ms.
42
Code Igniter Verso 1.5.2 - Guia do Usurio No exemplo acima, os dias 3, 7, 13 e 26 recebero links apontando para as URLs passadas. Nota: Por padro assume-se que seu array conter links. Na seo que explica os templates do calendrio logo abaixo, voc ver como customizar como as informaes passadas para suas clulas sero tratadas, assim voc poder passar diferentes tipos de informaes.
month_type
long
day_type
abr
show_next_prev next_prev_url
FALSE None
Qualquer dia da semana Dene o dia da semana que o calendrio (sunday, monday, deve iniciar. tuesday, etc.) Determina qual verso do nome do ms long, short deve ser exibido no cabealho. long = January, short = Jan. Determina qual verso dos nomes dos dias da semana usar no cabealho das long, short, abr colunas. long = Sunday, short = Sun, abr = Su. Determina onde exibis os links TRUE/FALSE (booleano) permitindo navegar nos meses. Veja mais informaes sobre isso abaixo. Dene o caminho base usado em seus A URL links de prximo/anterior do calendrio.
43
Code Igniter Verso 1.5.2 - Guia do Usurio content_today} {cal_cell_no_content}{day}{/cal_cell_no_content} {cal_cell_no_content_today}<div class=highlight>{day}</div>{/cal_cell_no_content_today} {cal_cell_blank} {/cal_cell_blank} {cal_cell_end}</td>{/cal_cell_end} {cal_row_end}</tr>{/cal_row_end} {table_close}</table>{/table_close} ; $this->load->library(calendar, $prefs); echo $this->calendar->generate();
Classe Cong
A classe Cong prov meios de recuperar suas preferncias de congurao. Estas preferncias podem vir do arquivo de congurao padro (application/cong/cong.php) ou de seus prprios arquivos de congurao. Nota: Esta class inicializada automaticamente pelo sistema e no necessrio carreg-la manualmente.
Code Igniter Verso 1.5.2 - Guia do Usurio congurao. Veja o exemplo: // Armazenado em um array com esta estrutura: $this->cong[blog_settings] = $cong $this->cong->load(blog_settings, TRUE); Veja a seo chamada Recuperando Itens de Congurao abaixo para aprender como recuperar itens de congurao desta forma. O terceiro parametro permite que voc suprima erros caso o arquivo de congurao no exista: $this->cong->load(blog_settings, FALSE, TRUE);
$this->cong->site_url();
Esta funo recupera a URL para o seu site, com o valor que voc tiver especicado no arquivo de 46 Diagramado por: edson jr - edsonthadeu@hotmail.com
$this->cong->system_url();
Esta funo retorna a URL para o seu diretrio de sistema (system folder).
Classe Email
A classe de Email do Code Igniter suporta as seguintes funcionalidades: Protocolos Multiplos: Mail, Sendmail e SMTP Recipientes Multiplos CC e BCCs Emails em HTML ou texto puro (plain text) Arquivos anexos Quebra de palavras Prioridades BCC Batch Mode, permitindo que grandes lotes de email sejam quebradas em pequenos lotes BCC. Ferramentas de Debug de Email
Enviando Emails
Enviar email no apenas simples, mas voc pode congurar isso em tempo de execuo ou denir suas preferncias em arquivos de congurao. Veja uma demonstrao bsica de como enviar um email. Nota: Este exemplo assume que voc est enviando o email de um de seus controllers. $this->load->library(email); $this->email->from(voce@seu-site.com, Seu Nome); $this->email->to(alguem@algum-site.com); $this->email->cc(outro@outro-site.com); $this->email->bcc(fulano@qualquer-site.com); $this->email->subject(Teste de Email); $this->email->message(Testando a classe de email.); $this->email->send(); echo $this->email->print_debugger();
Code Igniter Verso 1.5.2 - Guia do Usurio $cong[protocol] = sendmail; $cong[mailpath] = /usr/sbin/sendmail; $cong[charset] = iso-8859-1; $cong[wordwrap] = TRUE; $this->email->initialize($cong); Nota: A maior parte das preferncias possuem valores padro que sero utilizados caso voc no os dena.
Preferencias de Email
Abaixo segue a lista de todas as preferncias que podem ser denidas para o envio de um email. Preferncias useragent protocol mailpath smtp_host smtp_user smtp_pass smtp_port smtp_timeout wordwrap wrapchars Padro Code Igniter mail /usr/sbin/ sendmail No Default No Default No Default 25 5 TRUE 76 Opes None Descrio O user agent.
mail, sendmail, ou smtp Protocolo de envio de email. None None None None None None TRUE ou FALSE Caminho do Sendmail no servidor. Endereo do Servidor SMTP. Usurio SMTP. Senha SMTP. Porta SMTP. Timeout SMTP (em segundos). Liga a quebra de palavra. Nmero de caracteres para quebrar. Tipo de email. Se enviar em HTML, necessrio enviar uma pgina web completa. Certique-se de que no utilizou links ou imagens com caminho relativo, pois se no elas no vo funcionar. Tipo de codicao de caracter (utf-8, iso8859-1, etc.). Se deve validar o endereo de email. Prioridade do email. 1 = maior. 5 = menor. 3 = normal. Caracter de quebra de linha. (Use \r\n para compatibilizar com o RFC 822).
mailtype
text
text or html
TRUE or FALSE (boolean) Liga BCC Batch Mode (modo de lote). None Nmero de emails em cada lote BCC. Diagramado por: edson jr - edsonthadeu@hotmail.com
$this->email->reply_to()
Dene o endereo de resposta (reply-to). Se ocultar esta informao, a informao do from ser utilizada. Exemplo: $this->email->reply_to(voce@seu-site.com, Seu Nome);
$this->email->to()
Dene o(s) endereo(s) de e-mail de destino. Pode ser um nico email, uma lista separada por vrgulas ou um array: $this->email->to(alguem@site.com); $this->email->to(alguem@site.com, outro@outro-site.com, fulano@site.com); $list = array(alguem@site.com, outro@outro-site.com, fulano@site.com); $this->email->to($list);
$this->email->cc()
Dene o(s) endereo(s) de email para CC. Funciona como o to, podendo ser um nico email, lista separada por vrgulas ou um array.
$this->email->bcc()
Dene o(s) endereo(s) de email para BCC. Funciona como o to, podendo ser um nico email, lista separada por vrgulas ou um array.
$this->email->subject()
Dene o Assunto do email: $this->email->subject(Este o assunto);
$this->email->message()
Dene a mensagem do email: $this->email->message(Esta a mensagem);
$this->email->set_alt_message()
Dene a mensagem alternativa do email: $this->email->set_alt_message(Esta a mensagem alternativa); Este uma mensagem opcional que pode ser usada se voc enviar email em HTML. Ela permite voc especicar uma mensagem alternativa sem formatao HTML, que adicionada ao cabealho do email para pessoas que no aceitam emails HTML. Se voc no denir esta mensagem, o Code Igniter vai extrala do seu email removendo as tags HTML do mesmo.
49
Code Igniter Verso 1.5.2 - Guia do Usurio $this->email->clear() Reseta todas as variaveis de email. Esta funo deve ser usada se voc precisar rodar a funo de envio de email em um loop, resetando as informaes entre os ciclos. foreach ($list as $name => $address) { $this->email->clear(); $this->email->to($address); $this->email->from(voce@seu-site.com); $this->email->subject(Seu nome .$name); $this->email->message(Ola .$name. Aqui esta a informacao que voce precisa.); $this->email->send(); } Se voc passar TRUE como parametro, todos os anexos tambm sero resetados: $this->email->clear(TRUE);
$this->email->send()
Funo de envio de email. Retorna o booleano TRUE ou FALSE baseado no sucesso ou falha, permitindo if ( ! $this->email->send()) { // Gerar Erro }
$this->email->attach()
Permite que voc envie um anexo. Passe o caminho e nome do arquivo como primeiro parametro. Nota: Use o caminho do arquivo, e no sua URL. Para anexar vrios arquivos, use a funo vrias vezes. Por exemplo: $this->email->attach(/path/to/photo1.jpg); $this->email->attach(/path/to/photo2.jpg); $this->email->attach(/path/to/photo3.jpg); $this->email->send();
$this->email->print_debugger()
Retorna uma string contendo qualquer mensagem de servidor, cabealho de email e a prpria mensagem. til para debug.
Code Igniter Verso 1.5.2 - Guia do Usurio pessoa que recebeu o email. O Code Igniter permite que voc evite a quebra de palavra em determinadas partes da sua mensagem, dessa forma: The text of your email that gets wrapped normally. {unwrap}http://www.some-site.com/a_long_link_that_should_not_be_wrapped.html{/unwrap} More text that will be wrapped normally. Coloque o trecho que voc no quer quebrar entre: {unwrap} {/unwrap}
Classe Criptograa
A Classe Criptograa prov a criptograa de dados em duas vias. Ela usa um esquema que pr-compila a mensagem usando um processo de codicao binria XOR via um algoritmo de disperso randmico (randomly hashed bitwise XOR encoding scheme), que ento criptografado usando a biblioteca Mcrypt. Se a Mcrypt no estiver disponvel no seu servidor, a mensagem codicada ainda manter um razovel grau de segurana para sesses criptografadas ou outros propsitos leves como esse. Se a Mcrypt estiver disponvel, voc ter, efetivamente, uma mensagem string bicriptografada, que dever prover um alto grau de segurana.
Comprimento da Menssagem
importante saber que as mensagens codicadas, geradas pela funo de criptograa, so aproximadamente 2.6 vezes mais longas que a mensagem original. Por exemplo, se voc criptogravar a string meu dado super secreto, que tem 21 caracteres, terminar com uma string codicada que ter mais ou menos 55 caracteres (dizemos mais ou menos pois o comprimento da string codicada incrementada em clusters de 64 bits, e por isso no exatamente linear). Lembre-se desta informao quando selecionar seu mecanismo de armazenamento. Cookies, por exemplo, podem apenas conter 4K de informao. Diagramado por: edson jr - edsonthadeu@hotmail.com 51
Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe de Criptograa inicializada em seu controller usando a funo $this->load->library: $this->load->library(encrypt); Uma vez carregada, o objeto estar disponvel usando: $this->encrypt
$this->encrypt->encode()
Gerar a criptograa do dado e retorn-o como uma string. Exemplo: $msg = Minha mensagem secreta; $encrypted_string = $this->encrypt->encode($msg); Voc pode, opcionalmente, passar sua chave de criptograa via o segundo parmetro se no desejar usar a que est em seu arquivo de congurao;: $msg = Minha mensagem secreta; $key = chave-super-secreta; $encrypted_string = $this->encrypt->encode($msg, $key);
$this->encrypt->decode()
Descriptografa a string codicada. Exemplo: $encrypted_string = APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84; $textopuro_string = $this->encrypt->decode($encrypted_string);
$this->encrypt->set_cipher();
Permite que voc congure uma cifra Mcrypt. Por default, usado MCRYPT_RIJNDAEL_256. Exemplo: $this->encrypt->set_cipher(MCRYPT_BLOWFISH); Por favor, visite o php.net para uma lista das cifras disponveis. Se voc desejar testar manualmente se seu servidor suporta a Mcrypt, voc pode usar: echo ( ! function_exists(mcrypt_encrypt)) ? Nao : Sim;
$this->encrypt->set_mode();
Permite congurar um mod Mcrypt. Por default, usado MCRYPT_MODE_ECB. Exemplo: $this->encrypt->set_mode(MCRYPT_MODE_CFB); Por favor, visite o php.net para uma lista dos modos disponveis.
$this->encrypt->sha1();
a funo de codicao SHA1. Fornea uma string e ela ir retornar um hash de 160 bit de via nica. Nota: SHA1, assim como o MD5, no decodicvel. Exemplo: $hash = $this->encrypt->sha1(Alguma string); 52 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio Vrias instalaes PHP tm suporte SHA1 por default. Por isso, se tudo que voc precisa fazer codicar o hash, mais simples usar a funo nativa: $hash = sha1(Alguma string); Se seu servidor no suportar o SHA1, pode usar a funo fornecida aqui.
O Processo
Subir um arquivo envolve o processo geral: Um formulrio de upload exibido, permitndo ao usurio selecionar um arquivo para enviar. Quando o form submetido, o arquivo subido ao destino que voc especicar. Durante o trajeto, o arquivo validado para ter certeza que permitido, baseado em suas preferncias. Uma vez enviado o arquivo, ao usurio ser exibida uma mensagem de sucesso. Para demonstrar este processo, abaixo vai um breve tutorial. Logo aps, voc ir encontrar informaes de referncia.
<!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT -->
<head> <title>Formulrio de Upload</title> </head> <body> <?=$error;?> <?=form_open_multipart(upload/do_upload); ?> <input type=le name=userle size=20 /> <br /><br /> <input type=submit value=upload /> </form> </body>
<!--Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT --> by
Code Igniter Verso 1.5.2 - Guia do Usurio Voc ir notar que estamos usando um assistente de formulrio para criar a tag form de abertura. Uploads de arquivo requerem um formulrio multiparte, por isso o assistente criar a sintaxe especca para voc. Note tambm que temos uma varivel $error. Com ela podemos mostrar mensagens de erro no caso do usurio fazer alguma coisa errada.
A Pgina de Sucesso
Usando um editor de texto, crie um formulrio chamado upload_success.php. Nele, coloque este cdigo e o salve na pasta applications/views/: <html>
<!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT -->
<head> <title>Formulrio de Upload</title> </head> <body> <h3>Seu arquivo foi enviado com sucesso!</h3> <ul> <?php foreach($upload_data as $item => $value):?> <li><?=$item;?>: <?=$value;?></li> <?php endforeach; ?> </ul> <p><?=anchor(upload, Deseja enviar outro?); ?></p> </body>
<!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT -->
</html>
O Controller
Usando um editor de texto, crie um controller chamado upload.php. Nele, coloque este cdigo e o salve em sua pasta applications/controllers/: <?php class Upload extends Controller { function Upload() { parent::Controller(); $this->load->helper(array(form, url)); 54 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio } function index() { $this->load->view(upload_form, array(error => )); } function do_upload() { $cong[upload_path] = ./uploads/; $cong[allowed_types] = gif|jpg|png; $cong[max_size] = 100; $cong[max_width] = 1024; $cong[max_height] = 768; $this->load->library(upload, $cong); if ( ! $this->upload->do_upload()) { $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); } } } ?>
A Pasta Upload
Voc ir precisar de uma pasta de destino para os arquivos enviados. Crie uma pasta na raiz do diretrio de instalao do Code Igniter chamada uploads e congure sua permisso de arquivo para 777. Experimente! Para testar seu formulrio, visite seu site usando uma URL semelhante a esta: www.seu-site.com/index.php/upload/ Diagramado por: edson jr - edsonthadeu@hotmail.com 55
Code Igniter Verso 1.5.2 - Guia do Usurio Voc dever ver o formulrio. Experimente enviar uma imagem (no formato jpg, gif, ou png). Se o caminho em seu controller estiver correto, dever funcionar.
Guia de Referncia
Inicializando a Classe Upload
Como a maioria das classes no Code Igniter, a classe Upload inicializada em seu controller usando a funo $this->load->library: $this->load->library(upload); Uma vez carregada, o objeto estar disponvel usando: $this->upload
Congurando as Preferncias
De forma similar s outras bibliotecas, voc controlar o que permitido enviar atravs de suas preferncias. No controller que voc construiu acima, voc deve congurar o seguinte: $cong[upload_path] = ./uploads/; $cong[allowed_types] = gif|jpg|png; $cong[max_size] = 100; $cong[max_width] = 1024; $cong[max_height] = 768; $this->load->library(upload, $cong); // Alternativamente voc pode congurar as preferncias chamando a funo initialize. til se voc auto-carregar a classe: $this->upload->initialize($cong); As preferncias acima devem ser quase auto-explicativas. Abaixo vai uma tabela descrevendo todas as preferncias disponveis.
Preferncias
As seguintes preferncias esto disponveis. O valor default indica o que ser caso voc no especique nada ali. Preferncias Valor % nbsp; Default Nenhum Opes Descrio
upload_path
allowed_types
Nenhum
overwrite 56
FALSE
O caminho para o diretrio onde o arquivo deve ser colocaod. O diretrio deve ter permisso de escrita e o caminho pode ser absoluto ou relativo. Os mime types correspondentes aos tipos de arquivo que voc permite serem enviados. Geralente a exteso do Nenhum arquivo pode ser usada como mime type. Separe-os com uma barra vertical. Se TRUE e se um arquivo com mesmo nome j existir, ele True/False ser sobrescrito. Se FALSE, um nmero ser adicionado ao nome do arquivo para diferenci-lo. Nenhum Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio O tamanho mximo (em kilobytes) que um arquivo pode ter. Coloque zero para ilimitado. Nota: A maioria das Nenhum instalaes PHP tm seu prprio limite, como especicado em seu arquivo php.ini. Geralmente so 2MB (ou 2048 KB). A largura mxima (em pixels) do arquivo. Coloque zero Nenhum para ilimitada. A altura mxima (em pixels) do arquivo. Coloque zero para Nenhum ilimitada. Se TRUE, o nome do arquivo ser convertido em uma string randomicamente criptografada. Pode ser til True/False se voc quiser que arquivo seja salvo com um nome initeligvel para a pessoa que o est enviando. Se TRUE, qualquer espao no nome do arquivo ser True/False convertido em underscores. Esta recomendada.
max_size
max_width max_height
0 0
encrypt_name
FALSE
remove_spaces
TRUE
$this->upload->display_errors()
Captura qualquer mensagem de erro se a funo do_upload() retornar FALSE. A funo no d echo automaticamente, ela retorna o dado para que ento voc faa o que desejar com ele. Erros de Formatao Por default, a funo acima envolve qualquer erro com tags <p>. Mas voc pode congurar seu prprio delimitador assim: $this->upload->display_errors(<p>, </p>);
$this->upload->data()
Esta uma funo assistente que retorna uma array contendo todos os dados relacionados com o arquivo enviado. Aqui est um prottipo dela: Diagramado por: edson jr - edsonthadeu@hotmail.com 57
Code Igniter Verso 1.5.2 - Guia do Usurio Array ( [le_name] => minhaimagem.jpg [le_type] => image/jpeg [le_path] => /caminho/para/seu/arquivo/ [full_path] => /caminho/para/seu/arquivo.jpg [raw_name] => minhaimagem
[image_width] => 800 [image_height] => 600 [image_type] => jpeg [image_size_str] => width=800 height=200 ) Explicao Esta a explicao para os itens da array acima. Item le_name le_type le_path full_path raw_name orig_name le_ext le_size is_image image_width image_heigth image_type image_size_str Descrio O nome do arquivo que foi enviado incluidno sua extenso. O mime type do arquivo. O caminho absoluto do arquivo no servidor. O caminho absoluto do arquivo no servidor incluindo seu nome. O nome do arquivo sem sua extenso. O nome original do arquivo. Para o caso de voc t-lo encriptado via preferncias. A extenso do arquivo com ponto nal. O tamanho do arquivo em kilobytes. Quando o arquivo for imagem ou no. 1 = imagem. 0 = no. Largura da imagem. Altura da imagem Tipo da imagem. Tipicamente o nome de sua extenso sem o ponto nal. Uma string contendo a largura e altura. til para colocar nas propriedades da imagem, como numa tag.
58
Classe FTP
Esta classe permite que arquivos sejam transferidos para um servidor remoto. Estes arquivos remotos, podem tambm ser movidos, renomeados e apagados. A classe FTP ainda inclui uma funo de espelhamento, que permite que um diretrio local seja 100% recriado, remotamente, via FTP. Nota: Os protocolos SFTP e SSL FTP no so suportados, apenas o FTP padro.
Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe FTP inicializada em seu controller usando a funo $this->load->library: $this->load->library(ftp); Uma vez carregada, o objeto estar disponvel usando: $this->ftp
Exemplos de Uso
Neste exemplo, uma conexo aberta com o servidor FTP e um arquivo local lido e enviado em modo ASCII. As permisses de arquivo so conguradas em 755. Nota: Esta congurao de permisses requer o PHP 5. $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[debug] = TRUE; $this->ftp->connect($cong); $this->ftp->upload(/local/path/to/meuarquivo.html, 0775); $this->ftp->close(); Neste exemplo, uma lista de arquivos buscada no servidor. $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[debug] = TRUE; $this->ftp->connect($cong); $list = $this->ftp->list_les(/public_html/); print_r($list); $this->ftp->close(); Diagramado por: edson jr - edsonthadeu@hotmail.com 59 /public_html/meuarquivo.html, ascii,
Code Igniter Verso 1.5.2 - Guia do Usurio Neste exemplo, um diretrio local espelhado no servidor. $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[debug] = TRUE; $this->ftp->connect($cong); $this->ftp->mirror(/path/to/myfolder/, /public_html/meudiretorio/); $this->ftp->close();
Referncia da Funo
$this->ftp->connect() Conecte e logue-se em seu servidor FTP. As preferncias de conexo so conguradas passando uma array para a funo, ou ento voc pode armazen-las em um arquivo de congurao. Aqui vai um exemplo monstrando como congurar suas preferncias manualmente: $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[port] = 21;
$this->ftp->upload()
Envia um arquivo ao seu servidor. Voc deve fornecer o caminho local e o remoto, e tambm pode, opcionalmente, congurar o modo e permisses. Exemplo: $this->ftp->upload(/local/caminho/para/meuarquivo.html, /public_html/meuarquivo.html, ascii, 0775); As opes de modo so: ascii, binrio, e auto (o default). Se auto for usado, ele ir se basear na extenso do arquivo enviado. As permisses esto disponveis se voc estiver rodando o PHP 5 e podem ser passadas como um valor octal no quarto parmetro.
$this->ftp->rename()
Permite renomear um arquivo. Fornea o arquivo e caminho iniciais e os nais. // Renomeia verde.html para azul.html $this->ftp->rename(/public_html/teste/verde.html, /public_html/teste/azul.html);
$this->ftp->move()
Lhe permite mover um arquivo. Fornea o caminho inicial e o nal: // Mover o blog.html de joe para fred $this->ftp->move(/public_html/joe/blog.html, /public_html/fred/blog.html); Nota: se o nome do arquivo de destino for diferente do inicial, ele ser renomeado.
$this->ftp->delete_le()
Lhe permite apagar um arquivo. Fornea o nome e caminho do arquivo a ser apagado. $this->ftp->delete_le(/public_html/joe/blog.html);
$this->ftp->delete_dir()
Permite apagar um diretrio e todo o seu contedo. Fornea o caminho para o diretrio seguido de uma barra inclinada. Importante Tenha MUITO cuidado com esta funo. Ela ir apagar recursivamente TUDO dentro do caminho fornecido, incluindo subdiretris e todos os arquivos. Tenha certeza absoluta que seu caminho est correto. Experimente usar a funo list_les() antes, para vericar se seu caminho est correto. $this->ftp->delete_dir(/public_html/caminho/para/diretorio/);
$this->ftp->list_les()
Permite que voc busque uma lista de arquivos no servidor e a retorne como uma array. Voc deve fornecer o caminho para o diretrio desejado. $list = $this->ftp->list_les(/public_html/); print_r($list);
$this->ftp->mirror()
L, recursivamente, um diretrio local e tudo que ele contm (incluindo subdiretrios) e creia um espelhamento via FTP baseado nisto. Qualquer que seja estrutura de diretrio, ela ser recriada no servidor. Voc deve fornecer o caminho inicial e o nal: Diagramado por: edson jr - edsonthadeu@hotmail.com 61
$this->ftp->mkdir()
Permite criar um diretrio em seu servidor. Fornea o caminho nal no diretrio em quer deseja criar, seguido de uma barra invertida. As permisses podem ser passadas via um valor octal no segundo parmetro (se voc estiver usando o PHP 5). // Cria um diretrio chamado buteco $this->ftp->mkdir(/public_html/buteco/, 0777);
$this->ftp->chmod()
Permite que voc congure as permisses de arquivo. Fornea o caminho para o arquivo ou diretrio: // Chmod buteco to 777 $this->ftp->chmod(/public_html/buteco/, 0777);
$this->ftp->close();
Fecha a conexo com o servidor. recomendado que voc use isto ao terminar de enviar os arquivos.
Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe Tabela inicializada em seu controller usando a funo $this->load->library: $this->load->library(table); Uma vez carregada, o objeto estar disponvel usando: $this->table
Exemplos
Este exemplo mostra como voc pode criar uma tabela a partir de uma array multidimensional. Note que o primeiro ndice da array se tornar o cabealho da tabela (ou voc pode congurar seu prprio cabealho usando a funo set_heading() descrita na referncia da funo abaixo). $this->load->library(table); $data = array( array(Nome, Cor, Tamanho), array(Fred, Azul, Pequeno), array(Mary, Vermelho, Grande), array(John, Verde, Mdio) ); echo $this->table->generate($data);
62
Code Igniter Verso 1.5.2 - Guia do Usurio Aqui vai um exemplo de uma tabela criada a partir de um resultado de uma query no banco. A classe Tabela ir gerar automaticamnete o cabealho baseada no nome das tabelas (lembre-se que voc pode contgurar eu prprio cabealho usando a funo set_heading() descrita na referncia da funo abaixo). $this->load->library(table); $query = $this->db->query(SELECT * FROM minha_tabela); echo $this->table->generate($query); Aqui vai um exemplo mostrando como voc poderia criar uma tabela usando parmetros discretos: $this->load->library(table); $this->table->set_heading(Nome, Cor, Tamanho); $this->table->add_row(Fred, Azul, Pequeno); $this->table->add_row(Mary, Vermelho, Grande); $this->table->add_row(John, Verde, Mdio); echo $this->table->generate(); Aqui vai o mesmo exemplo acima, exceto que no lugar de parmetros individuais, foram usadas arrays: $this->load->library(table); $this->table->set_heading(array(Nome, Cor, Tamanho)); $this->table->add_row(array(Fred, Azul, Pequeno)); $this->table->add_row(array(Mary, Vermelho, Grande)); $this->table->add_row(array(John, Verde, Mdio)); echo $this->table->generate();
Code Igniter Verso 1.5.2 - Guia do Usurio Nota: Voc ir notar que h 2 conjuntos de blocos de linha (rows) no template. Isto lhe permite criar linhas com cores alternadas ou projetar elementos que se alteram em cada interao ocm os dados da linha. Voc NO obrigado a submeter um template completo. Se apenas precisa alterar partes do layout, pode simplismente submeter estes elementos. Neste exemplo, apenas a tag de abertura da tabela foi alterada: $tmpl = array ( table_open class=minhatabela> ); $this->table->set_template($tmpl); => <table border=1 cellpadding=2 cellspacing=1
Referncia da Funo
$this->table->generate()
Retorna uma string contendo a tabela gerada. Aceita parmetros opcionais os quais podem ser uma array ou um objeto vindo do banco.
$this->table->set_caption()
Lhe permite adicinar uma legenda para a tabela. $this->table->set_caption(Cores);
$this->table->set_heading()
Lhe permite congurar o cabealho da tabela. Voc pode submeter uma array ou parmetros discretos: $this->table->set_heading(Nome, Cor, Tamanho); $this->table->set_heading(array(Nome, Cor, Tamanho));
$this->table->add_row()
Lhe permite adicionar uma linha tabela. Voc pode submeter uma array ou parmetros discretos: $this->table->add_row(Azul, Vermelho, Verde); $this->table->add_row(array(Azul, Vermelho, Verde));
$this->table->make_columns()
Esta funo pega uma array unidimensional como entrada e cria uma multidimensional com uma profundidade (depth) igual ao nmero de colunas desejadas. Isto permite que uma nica array, com vrios elementos, seja mostrada numa tabela que tem um nmero xo de colunas. Considere este exemplo: $lista = array(one, two, three, four, ve, six, seven, eight, nine, ten, eleven, twelve); $nova_lista = $this->table->make_columns($lista, 3); $this->table->generate($nova_lista) // Gera uma tabela com este prottipo <table border=0 cellpadding=4 cellspacing=0> <tr> <td>one</td><td>two</td><td>three</td> </tr><tr> 64 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio <td>four</td><td>ve</td><td>six</td> </tr><tr> <td>seven</td><td>eight</td><td>nine</td> </tr><tr> <td>ten</td><td>eleven</td><td>twelve</td></tr> </table>
$this->table->set_template()
Lhe permite congurar seu template. Voc pode submeter um template completo ou parcial. $tmpl = array ( table_open class=minhatabela> ); $this->table->set_template($tmpl); => <table border=1 cellpadding=2 cellspacing=1
$this->table->set_empty()
Lhe permite congurar um valor default para usar em qualquer clula de tabela que vaza. Voc pode, por exemplo, usar : $this->table->set_empty( );
$this->table->clear()
Lhe permite limpar o cabealho ou dado de uma linha da tabela. Se precisar mostrar mltiplas tabelas com diferentes dados, voc deve chamar esta funo depois que cada tabela for gerada, para limpar a informao da tabela anterior. Exemplo: $this->load->library(table); $this->table->set_heading(Nome, Cor, Tamanho); $this->table->add_row(Fred, Azul, Pequeno); $this->table->add_row(Mary, Vermelho, Grande); $this->table->add_row(John, Verde, Mdio); echo $this->table->generate(); $this->table->clear(); $this->table->set_heading(Nome, Dia, Tipo de Entrega); $this->table->add_row(Fred, Quarta-feira, Expressa); $this->table->add_row(Mary, Segunda-feira, Por avio); $this->table->add_row(John, Sbado, De noite para o dia); echo $this->table->generate(); 65
Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe Manipulao de Imagem inicializada em seu controller usando a funo $this->load_library: $this->load->library(image_lib); Uma vez carregada, estar pronta para usar. O objeto desta biblioteca que voc usar para chamar todas as funes : $this->image_lib
66
Funes de Processamento
H quatro funes de processamento disponveis: $this->image_lib->resize() $this->image_lib->crop() $this->image_lib->rotate() $this->image_lib->watermark() Essas funes retornam TRUE booleano se tudo der certo e FALSE se algo falhar. Se houver falha, voc pode recuperar a mensagem de erro usando esta funo: echo $this->image_lib->display_errors(); Uma boa prtica usar a funo de processamento condicionalmente, mostrando um erro se houver falha, como desta maneira: if ( ! $this->image_lib->resize()) { echo $this->image_lib->display_errors(); } Nota: Voc pode opcionalmente especicar qual formatao do HTML ser aplicada aos erros, submentendo as tags de abertura/fechamento na funo, como desta maneira: $this->image_lib->display_errors(<p>, </p>);
Preferncias
As 14 preferncias disponveis descriatas abaixo permitem que voc ajuste o processamento de imagens s suas necessidades. Note que nem todas as preferncias esto disponveis para todas as funes. Por exemplo, as preferncias dos eixos x/y esto apenas disponveis para cortar imagens. Da mesma forma, as preferncias de largura e altura no tem efeito quando estiver cortando uma imagem. A coluna disponibilidade indica quais funes suportam uma dada preferncia. Legenda de Disponibilidade: R - Redimensionar a Imagem C - Cortar a Imagem X - Rotacionar a Imagem W - Aplicar marca-dgua (W = watermark)
67
Code Igniter Verso 1.5.2 - Guia do Usurio Preferncia Valor default GD2 None None Opes Descrio Disponibilidade R, C, X, W R, C, X R, C, S, W
GD, GD2, ImageMagick, Congurar qual biblioteca deve ser usada. NetPBM None None
Congura o caminho, no servidor, para as bibliotecas ImageMagick ou NetPBM. Se usar uma dessas bibliotecas voc deve fornecer o caminho. Congura o caminho/nome da imagem original. O caminho do servidor deve ser absoluto ou relatico e no uma URL. Determina quando uma nova imagem deve ser escrita no disco ou gerada dinamicamente. Nota: Se voc escolher a opo dinmica, apenas uma imagem pode ser mostrada de cada vez, e ela no pode ser posicionada na pgina. Esta preferncia simplismente d sada automaticamente da imagem bruta (raw) no seu browser, junto com os cabealhos da imagem. Congurar a qualidade da imagem. Quanto maior a qualidade, maior ser o arquivo. Congura o nome/caminho de destino da imagem. Voc usar esta preferncia quando criar uma cpia de uma imagem. O caminho do servidor deve ser absoluto ou relativo e no uma URL. Congura a largura da imagem nal. Cria uma miniatura da imagem. Especica o suxo da miniatura. Ele ser inserido antes da extenso do aquivo, portanto, minhaimagem.jpg virar minhaimagem_thumb.jpg Especica se deve manter a proporo da imagem original ou ento usar valores forados. Especica o que usar como eixo mestre ao redimensionar uma imagem ou criar miniaturas. Por exemplo, digamos que voc quer redimensionar uma imagem para 100 x 75 pixels. Se a imagem original no permitir o redimensionamento ideal para essas dimenses, esta preferncia determina qual eixo dever ser usado como valor forado. auto escolhe o eixo automaticamente baseado na condio se a imagem mais alta do que larga, ou vice-versa. Especica o ngulo de rotao ao rotacionar imagens. Note que o PHP rotcionar em sentido anti-horrio, portanto uma rotao de 90 graus para a direita deve ser especicada como 270 graus. Congura a coordenada X, em pixels, para o corte da imagem. Por exemplo, um valor igual a 30 ir cortar a imagem 30 pixels vindo da esquerda. Congura a coordenada X, em pixels, para o corte da imagem. Por exemplo, um valor igual a 30 ir cortar a imagem 30 pixels vindo da esquerda. Congura a coordenada Y, em pixels, para o corte da imagem. Por exemplo, um valor igual a 30 ir cortar a imagem 30 pixels vindo de cima.
dynamic_ output
FALSE
TRUE/FALSE (boolean)
R, C, X, W
R, C, X, W R R R R R
maintain_ratio
TRUE
TRUE/FALSE (boolean)
auto
auto, width, height 90, 180, 270, vrt, hor Nenhum Nenhum
X C C
$this->image_lib->resize()
A funo de redimensionamento de imagnes lhe permite alterar o tamanho da imagem original, criar uma cpia (com ou sem redimensionamento) ou criar uma miniatura. Na prtica, no h diferena entre criar uma cpia ou criar uma miniatura, exceto pelo fato que a minatura ir conter o suxo em seu nome (ex.:, minhaimagem_thumb.jpg). Todas as preferncias listas na tabela acima esto disponveis para essa funo, exceto estas trs: rotation, x_axis, and y_axis. Criando uma Miniatura A funo resizing ir um arquivo da miniatura (e preservar a imagem original) se voc congurar as preferncias para TRUE: $cong[create_thumb] = TRUE; Esta preferncia determina quando uma miniatura criada ou no. Criando uma Cpia A funo resizing, ir criar uma cpia do arquivo ogirinal (e ir preserv-lo) se voc congurar o caminho e/ou um novo nome de arquivo usando esta preferncia: $cong[new_image] = /caminho/para/nova_imagem.jpg; Notas acerca desta preferncia: Se apenas o nome da nova imagem especicado, ela ser colocada no mesmo diretrio que a imagem original Se apenas o caminho for especicado, a nova imagem ser colocada no diretrio de destino com o mesmo nome da imagem original. Se ambos caminho e nome da imagem foram especicados, ela ir ser colocada em seu prprio diretrio de destino e lhe ser dado o novo nome. Redimensionando a Imagem Original Se nenhuma das duas preferncias listadas acima (create_thumb, e new_image) for usada, a funo resizing ir se voltar imagem original no processamento.
$this->image_lib->crop()
A funo cropping trabalhar praticamente de forma idntica redising, exceto por requerer que voc congure as preferncias para os eixos X e Y (em pixels), especicando onde cortar, como desta maneira: $cong[x_axis] = 100; $cong[x_axis] = 40; Todas as preferncias listas na tabela acima esto disponveis para esta funo, exceto estas: rotation, width, height, create_thumb, new_image.
69
Code Igniter Verso 1.5.2 - Guia do Usurio Aqui vai um exemplo mostrando como voc poderia cortar uma imagem: $cong[image_library] = imagemagick; $cong[library_path] = /usr/X11R6/bin/; $cong[source_image] = /caminho/para/minhaimagem.jpg; $cong[x_axis] = 100; $cong[y_axis] = 60; $this->image_lib->initialize($cong); if ( ! $this->image_lib->crop()) { echo $this->image_lib->display_errors(); } Nota: Sem uma interface visual, difcil cortar imagens, por isto esta funo no muito til a menos que voc queria contruir tal interface. E foi exatamente isto que zemos para o mdulo galeria de fotos do ExpressionEngine, o CMS que desenvolvemos. Adicionamos uma Javascript UI que permite que as reas de corte sejam selecionadas.
$this->image_lib->rotate()
A funo de rotao requer que o ngulo de rotao seja congurado via sua preferncia: $cong[rotation_angle] = 90; H 5 opes de rotao: 90 - rotaciona 90 graus em sentido anti-horrio. 180 - rotaciona 180 graus em sentido anti-horrio. 270 - rotaciona 270 graus em sentido anti-horrio. hor - gira a imagem horizontalmente. vrt - gira a imagem verticalmente. Aqui vai um exemplo mostrando como voc poderia rotacionar uma imagem: $cong[image_library] = netpbm; $cong[library_path] = /usr/bin/; $cong[source_image] = /caminho/para/minhaimagem.jpg; $cong[rotation_angle] = hor; $this->image_lib->initialize($cong); if ( ! $this->image_lib->rotate()) { echo $this->image_lib->display_errors(); } 70 Diagramado por: edson jr - edsonthadeu@hotmail.com
Marca-dgua
A funcionalidade de Marca-dgua requer a biblioteca GD/GD2.
Preferncias da Marca-dgua
Esta tabela mostra as preferncias disponveis para ambos os tipos de marca-dgua (texto ou overlay)
71
Code Igniter Verso 1.5.2 - Guia do Usurio Preferncias wm_type source_image Valor Default text Nenhum Opes Descrio type, overlay Congura o tipo de marca-dgua a usar. Congura o nome/caminho da imagem original. O Nenhum caminho no servidor deve ser absoluto ou relativo e no uma URL. Determina quando uma nova imagem deve ser escrita no disco ou gerada dinamicamente. Nota: Se voc escolher a opo dinmica, apenas uma imagem TRUE/FALSE pode ser mostrada de cada vez, e ela no pode ser (boolean) posicionada na pgina. Esta preferncia simplesmente d sada automaticamente da imagem bruta (raw) no seu browser, junto com os cabealhos da imagem. Congurar a qualidade da imagem. Quanto maior a 1 - 100% qualidade, maior ser o arquivo. O montante de padding, em pixels, que ser aplicado Um nmero marca-dgua para distanci-la da borda da imagem. top, middle, Congura o alinhamento vertical para a imagem de bottom marca-dgua. left, center, Congura o alinhamento horizontal para a imagem right de marca-dgua. Voc pode especicar um oset vertical (em pixels) para a posio da marca-dgua. O oset normalmente move a marca-dgua para a direita, exceto se vc tiver Nenhum congurado o alinhamento como right. Dessa forma o valor de oset mover a marca-dgua na direo esquerda da imagem. Voc pode especicar um oset horizontal (em pixels) para a posio da marca-dgua. O oset normalmente move a marca-dgua para baixo, exceto se vc tiver Nenhum congurado o alinhamento como bottom. Dessa forma o valor de oset mover a marca-dgua para cima.
dynamic_output
FALSE
wm_vrt_oset
Nenhum
wm_hor_oset
Nenhum
Preferncias de Texto
Esta tabela mostra das preferncias de texto disponveis para o tipo de marca-dgua usando texto.
Preferncias wm_text wm_font_path Valor Default Nenhum Nenhum Opes Nenhum Nenhum Descrio O texto que voc quer usar como marca-dgua. Tipicamente uma frase de copyright. O caminho no servidor para a fonte True Type que voc gostaria de usar. O Code Igniter inclui uma fonte no diretrio system/fonts. Se voc no quiser usar esta opo, a fonte nativa da GD ser usada no lugar. O corpo do texto. Nota: Se voc no estiver usando a opo da fonte True Type acima, o nmero deve estar na escala de 1 a 5. Do contrrio, voc pode usar qualquer valor vlido em pixels para a fonte. A cor da fonte, especicada em hexa decimal. Note que voc deve usar os 6 caracteres (ex.:, 993300), e no a verso abreviada de 3. A cor da sombra, especida em hexa decimal. Se deixa este valor vazio, a sombra no ser usada. Note que voc deve usar os 6 caracteres (ex.:, 993300), e no a verso abreviada de 3. A distncia (em pixels) da distncia entre a fonte e a sombra.
16 Nenhum 3
72
Preferncias de Overlay
Esta tabela mostra das preferncias disponveis para o tipo de marca-dgua usando overlay.
Preferncias wm_overlay_ path wm_opacity Valor Default Nenhum 50 Opes Nenhum 1 - 100 Descrio O caminho no servidor da imagem que voc deseja usar como marca-dgua. Obrigatria apenas para o mtodo overlay. Opacidade (transparncia) da imagem usada como marca-dgua. Permite que esta que translcida, mostrando os detalhes da imagem onde est aplicada. A opacidade de 50% tpica. Se a sua imagem de marca-dgia for PNG ou GIF, voc pode especicar uma cor na imagem que dever ser transparente. Esta preferncia (junto com a prxima) lhe permitir especicar tal cor. Isto funciona especicando as coordenadas X e Y (medidas a partir do canto superior esquerdo) dentro da imagem que corresponde quela cor que voc quer tornar transparente. Junto com a congurao anterior, permite que voc especique a coordenada para a representao em pixel daquela cor que quer transparente.
wm_x_transp
Um nmero Um nmero
wm_y_transp
Classe Input
A classe Input serve dois propsitos: pr-processos globais de dados de entrada para a segurana. Ele fornece algumas funes auxiliares para a coleta de dados de entrada e de pr-processamento-lo. Nota: Esta categoria inicializado automaticamente pelo sistema ento no h necessidade de faz-lo manualmente.
Filtragem de Segurana
A ltragem de segurana funo chamada automaticamente quando um novo controlador invocado. Ele faz o seguinte: Destri a nvel mundial GET array. Desde Cdigo Igniter no utilizar GET cordas, no h motivo para deixla. Destri todas as variveis globais em caso register_globals est ligada. Filtros o POST / COOKIE array chaves, permitindo apenas alfa-numricas (e alguns outros) caracteres. Fornece XSS (Cross-site Scripting Hacks) ltragem. Isto pode ser ativado globalmente, ou mediante solicitao. Standardizes newline caracteres para \ n
XSS Filtragem
Cdigo Igniter vem com um Cross Site Scripting Hack preveno ltro que pode ser executado automaticamente para ltrar todos os POST e COOKIE dados que so encontradas, ou voc pode executlo em uma base por item. Por omisso no contrariem a nvel mundial, uma vez que requer um pouco de processamento overhead, e uma vez que talvez voc no precisa dele em todos os casos. O ltro XSS olha para comumente utilizadas tcnicas para acionar o Javascript ou outro tipo de cdigo que a tentativa de roubar cookies maliciosos ou fazer outras coisas. Se alguma coisa est impedido encontrouse tornado seguro convertendo os dados para entidades personagem. Nota: Esta funo s deve ser utilizado para lidar com os dados, mediante a apresentao. No algo que deve ser utilizado para processamento geral tempo de execuo, uma vez que exige um nmero razovel de processamento de peso. Diagramado por: edson jr - edsonthadeu@hotmail.com 73
Code Igniter Verso 1.5.2 - Guia do Usurio Para ltrar dados atravs do ltro XSS utilizar esta funo:
$this->input->post()
O primeiro parmetro ir conter o nome do POST item que voc est procurando: $ this-> input-> post ( some_data); A funo retorna falso (boolean) se o item que voc est tentando recuperar no existe. O segundo parmetro opcional permite que voc execute os dados atravs do ltro XSS. Ele ativado atravs da denio de parmetros para a segunda boolean true; 74 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio $ this-> input-> post ( some_data, TRUE);
$this->input->user_agent()
Retorna o usurio agent (navegador) a ser utilizado pelo usurio atual. Retorna falso se ele no est disponvel. echo $this->input->user_agent();
75
Classe Loader
Carregador, como o nome sugere, usado para carregar elementos. Estes elementos podem ser bibliotecas (classes) Ver arquivos, Ajudantes, Plugins, ou seus prprios arquivos. Nota: Esta categoria inicializado automaticamente pelo sistema ento no h necessidade de faz-lo manualmente. As seguintes funes esto disponveis nesta categoria:
$this->load->scaolding(table_name)
Essa funo permite ativar andaimes. Por favor, consulte a seo andaimes para mais info.
Code Igniter Verso 1.5.2 - Guia do Usurio () funo acima. A razo pela qual voc pode querer usar esta funo independente se voc gostaria de denir algumas variveis globais do construtor de seu controlador e v-las se tornar disponvel em qualquer vista arquivo carregado a partir de qualquer funo. Voc pode ter vrias chamadas para esta funo. Os dados em cache e obter fundidos em um array de converso para variveis.
$this->load->helper(le_name)
Esta funo cargas ajudante de cheiros, onde le_name o nome do arquivo, sem o _helper.php extenso.
Classe Idioma
Cursos Idioma oferece funes para recuperar arquivos linguagem e as linhas de texto para ns de internacionalizao. Em seu Cdigo Igniter sistema, voc encontrar uma pasta chamada idioma contendo conjuntos de idiomas arquivos. Voc pode criar sua prpria lngua arquivos que forem necessrias, a m de exibir mensagens de erro e de outras lnguas. Lngua arquivos so tipicamente armazenados em seu sistema / linguagem diretrio. Alternativamente voc pode criar uma pasta chamada linguagem dentro do seu pedido pasta e armazen-los ali. Cdigo Igniter ir analisar em primeiro lugar em seu sistema / aplicao / linguagem diretrio. Se o directrio no existir ou o idioma especicado no a localizadas em vez CI ir procurar em seu sistema global / linguagem pasta. Nota: Cada lngua deve ser armazenado em sua prpria pasta. Por exemplo, os arquivos esto localizados em Ingls: sistema / idioma / Ingls
77
Code Igniter Verso 1.5.2 - Guia do Usurio Nota: uma boa prtica de usar um prexo comum para todas as mensagens em um determinado arquivo para evitar colises com similarmente chamado itens em outros arquivos. Por exemplo, se voc est criando mensagens de erro que voc pode lhes com prexo Erro_ $ lang [ error_email_missing] = Voc deve enviar um e-mail; $ lang [ error_url_missing] = Voc deve apresentar uma URL; $ lang [ error_username_missing] = Voc tem de apresentar um nome de usurio;
Classe Output
A output uma classe com uma pequena classe principal funo: Para enviar a pgina da web nalizado para o requerente navegador. igualmente responsvel pela caching suas pginas da web, se voc usar esse recurso. Nota: Esta categoria inicializado automaticamente pelo sistema ento no h necessidade de faz-lo manualmente. Em circunstncias normais, mesmo que voc no vai notar a classe de output, uma vez que funciona transparente, sem a sua interveno. Por exemplo, quando voc usar a classe Carregador para carregar um cheiro opinio, ele automaticamente passado para a classe de output, que ser chamado automaticamente pelo Cdigo Igniter no m do sistema de execuo. possvel, no entanto, para que voc possa intervir manualmente com a produo se for necessrio, usando um dos dois seguintes funes: $ this-> output-> set_output (); Permite-lhe denir manualmente a output nal da string. Uso exemplo: $ this-> output-> set_output ($ dados); Importante: Se voc no denir sua output manualmente, deve ser a ltima coisa a fazer em funo de voc cham-lo. Por exemplo, se voc criar uma pgina em um controlador de suas funes, no se ajustar a sada at o m. $ this-> output-> get_output (); Permite-lhe recuperar manualmente a qualquer sada que tenha sido enviado para armazenagem na sada classe. Uso exemplo: $ string = $ this-> output-> get_output (); 78 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio Note que os dados s sero recuperadas a partir desta funo, se tiver sido previamente enviado para a sada por uma turma do Cdigo Igniter funes como $ this-> load-> view (). $ this-> output-> set_header (); Permite-lhe denir manualmente cabealhos servidor, que a sada classe ir enviar para voc quando a sada denitiva proferida visor. Exemplo: $this->output->set_header(HTTP/1.0 200 OK); $this->output->set_header(HTTP/1.1 200 OK); $this->output->set_header(Last-Modied: .gmdate(D, d M Y H:i:s, $last_update). GMT); $this->output->set_header(Cache-Control: no-store, no-cache, must-revalidate); $this->output->set_header(Cache-Control: post-check=0, pre-check=0, false); $this->output->set_header(Pragma: no-cache);
Classe Paginao
Cdigo Igniter Paginao da classe muito fcil de usar, e 100% personalizvel, ter dinamicamente ou via armazenados preferncias. Se voc no estiver familiarizado com o termo paginao, ele se refere a ligaes que lhe permite navegar a partir de pgina a pgina, como este: First < 1 2 3 4 5 > Last
Exemplo
Aqui est um exemplo simples mostrando como criar uma paginao no seu controlador de funes: $this->load->library(pagination); $cong[base_url] = http://www.your-site.com/index.php/test/page/; $cong[total_rows] = 200; $cong[per_page] = 20; $this->pagination->initialize($cong); echo $this->pagination->create_links();
79
Code Igniter Verso 1.5.2 - Guia do Usurio Notas: A $cong array contm a sua congurao variveis. passado para o $this->pagination->initialize funo como mostrado acima. Embora existam alguns vinte itens que voc pode congurar, no mnimo, voc precisa dos trs mostrados. Aqui est uma descrio do que representam esses itens: base_url Este o URL completo para o controlador class / function contendo a sua paginao. No exemplo acima, o que aponta para um controlador chamado Teste e uma funo chamada pgina. Tenha em mente que voc pode re-encaminhar seus URI se voc precisa de uma estrutura diferente. total_rows Este nmero representa o total de linhas no resultado que est a criar para a paginao. Tipicamente este ser o nmero total de linhas que seu banco de dados consulta retornou. per_page O nmero de itens que voc deseja mostrar por pgina. No exemplo acima, voc estaria mostrando 20 itens por pgina. O create_links () funo retorna uma string vazia quando no h paginao para mostrar. Denir preferncias de um cheiro de congurao Se voc preferir no denir preferncias usando o mtodo acima, voc pode coloc-los em vez um arquivo de congurao. Basta criar um novo arquivo chamado o pagination.php, adicione o $cong array neste arquivo. Em seguida, salve o arquivo em: cong / pagination.php e ele ser usado automaticamente. Voc no precisa usar o $this->pagination->initialize funo se voc salvar suas preferncias em um arquivo de congurao.
Personalizando a Paginao
O seguinte uma lista de todas as preferncias voc pode passar a funo de inicializao para adequar o monitor. $ cong [ uri_segment] = 3; A paginao funo que determina automaticamente o seu segmento de URI contm o nmero da pgina. Se voc precisa de algo diferente, voc pode especicar-lo. $ cong [ num_links] = 2; O nmero de dgito links que voc gostaria antes e aps a pgina selecionada nmero. Por exemplo, o nmero 2 vai colocar dois dgitos em ambos os lados, como no exemplo links na parte superior desta pgina.
Code Igniter Verso 1.5.2 - Guia do Usurio $ cong [ rst_tag_close] = </ div>; Tag de fechamento para o primeiro link.
81
Classe Sesso
A classe Sesso lhe permite manter um status do usurio e acompanhar sua atividade enquanto ele navega por seu site. A classe armazena as informaes da sesso para cada usurio em dados dispostos em srie (e opcionalmente criptografados) num cookie. Ela pode ainda armazenar os dados da sesso em uma tabela no banco de dados para aumentar a segurana, pois isto permite que a ID da sesso no cookie do usurio tenha ligao, e seja comparvel, com o ID da sesso armazenada. Por default, apenas o cookie salvo. Se voc escolher usar a opo de banco de dados, precisar criar a tabela de sesso indicada abaixo. Nota: A classe Sesso no utiliza as sesses nativas do PHP. Ela gera seus prprios dados de sesso, oferecendo maior exibilidade para os desenvolvedores.
Inicializando a Sesso
Sesses iro tipicamente rodar globalmente em cada carregamento da pgina, portanto a classe sesso deve ser ou inicializada em seus construtores dos controllers, ou pode ser carregada automaticamente pelo sistema. Na maioria dos casos a classe sesso ir rodar despercebida no background, portanto sua simples inicializao a far ler, criar e atualizar sesses. Para inicializar a classe Sesso manualmente em seu controller, use a funo $this->load->library: $this->load->library(session); Uma vez carregada, o objeto estar disponvel usando: $this->session
Code Igniter Verso 1.5.2 - Guia do Usurio Se voc tiver habilitado a opo de criptograa, a array em sria ser criptografada antes de ser armazenada num cookie, tornando os dados bem seguros e impossveis de serem lidos ou alterados por algum. Mais informaes acerca da criptograa, podem ser encontradas aqui, no entanto a classe Sesso responsvel por inicializar e criptografar os dados automaticamente. Nota: Cookies de sesso so atualizados apenas de 5 em 5 minutos, para reduzir a carga de processamento. Se voc repetidamente recarregar a pgina, notar que o horrio de ltima atividade ser atualizado apenas se 5 minutos ou mais se passaram desde a ltima vez que o cookie foi escrito.
Code Igniter Verso 1.5.2 - Guia do Usurio necessria, mas se sua aplicao exigir segurana, a validao obrigatria. Quando os dados de sesso esto disponveis no banco, toda vez que uma sesso vlida for encontrada no cookie do usurio, uma query executada para compar-los. Se a ID no bater, a sesso destruda. As IDs no nunca podem ser atualizadas, podem apenas ser geradas quando uma nova sesso criada. Para armazenar sesses, voc primeiro deve criar a tabela no banco para este propsito. Aqui vai um prottipo bsico (para MySQL) requerido pela classe Sesso: CREATE TABLE IF NOT EXISTS `ci_sessions` ( id_sessao varchar(40) DEFAULT 0 NOT NULL, endereco_ip varchar(16) DEFAULT 0 NOT NULL, user_agent varchar(50) NOT NULL, ultima_atividade int(10) unsigned DEFAULT 0 NOT NULL, PRIMARY KEY (id_sessao) ); Nota: Por default, a tabela chama-se ci_sessions, mas voc pode colocar qualquer nome que quiser, desde que atualize o arquivo application/cong/cong.php para que ele contenha o novo nome. Uma vez criada a tabela, voc pode habilitar a opo de banco de dados em seu arquivo cong.php como se segue: $cong[sess_use_database] = TRUE; Uma vez habilitada, a classe Sesso ir armazenar os dados de sesso no banco. Tenha certeza de ter especicado o nome da tabela em seu arquivo de congurao: $cong[sess_table_name] = ci_sessions; Nota: A classe Sesso tem uma coleo lixeira embutida, que limpa as sesses expiradas, por isso voc no precisa criar sua prpria rotina para faz-los.
Preferncias de Sesso
Voc encontrar as preferncias relacionadas a Sesses em seu arquivo application/cong/cong.php:
Preferncias sess_cookie_ name sess_ expiration sess_encrypt_ cookie sess_use_ database sess_table_ name Valor Default ci_session 7200 FALSE FALSE ci_sessions Opes Nenhum Nenhum TRUE/FALSE (boolean) TRUE/FALSE (boolean) Qualquer nome vlido para uma tabela SQL Descrio O nome para a sesso do cookie. O nmero de segundos que voc quer que a sesso dure. O valor padro 2 horas (7.200 segundos). Se desejar uma sesso que no expire, use o valor zero: 0 Se deve criptografar os dados da sesso. Se deve salvar a sesso no banco. Voc deve criar a tabela antes de habilitar esta opo. O nome da tabela de sesso no banco.
84
Classe Trackback
A Classe Trackback Class prov funes para enviar e receber dados Trackback. Se voc no est familiarizado com Trackbacks, achar mais informaes aqui.
Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe Trackback inicializada, em seu controller, usando a funo $this->load->library: $this->load->library(trackback); Uma vez carregada, seu objeto estar disponvel usando: $this->trackback
Enviando Trackbacks
Um trackback pode ser enviado de qualquer funo em seus controllers, usando um cdigo similar a este exemplo: $this->load->library(trackback); $tb_data = array( ping_url => http://algum-site.com/trackback/456, url => http://www.meu-site.com/blog/entry/123,
title => O Ttulo do meu Post, excerpt => O contedo do Post., blog_name => O nome do Meu Blog, charset => utf-8 ); if ( ! $this->trackback->send($tb_data)) { echo $this->trackback->display_errors(); } else { echo O Trackback foi enviado!; }
85
Code Igniter Verso 1.5.2 - Guia do Usurio Descrio dos dados da array: ping_url - A URL do site para o qual voc est enviando o Trackback. Voc pode enviar Trackbacks para mltiplas URLs separando-as por vrgula.. url - A URL para o SEU site, onde o post do blog poder ser visto. title - O nome do ttulo do seu post. excerpt - O contedo de seu post. Nota: a classe Trackback ir automaticamente enviar apenas os primeiros 500 caracteres do post. E tambm ir retirar todo o HTML. blog_name - O nome do seu Blog. charset - A codicao de caracteres na qual seu post foi escrito. Se omitida, a UTF-8 ser usada. A funo de envio de Trackbacks retornar TRUE/FALSE (booleano) em sucesso ou falha, respectivamente. Se ela falhar, voc pode recuperar a mensagem de erro usando: $this->trackback->display_errors();
Recebendo Trackbacks
Antes que possa receber Trackbacks, voc precisa criar um blog. Se no tem um ainda, no h razo em continuar lendo isto. Receber Trackbacks um pouco mais complexo que envi-los, apenas porque voc precisar de uma tabela no banco de dados para armazen-los e precisar validar os dados recebidos. Voc encorajado a implementar um processo de validao completo e consistente para evitar dados duplicados e se proteger de spam. Voc pode querer tambm limitar o nmero de Trackbacks que deseja receber de um particular IP, dentro de um espao de tempo, para diminuir a chance de spam. O processo de receber Trackbacks bem simples; o processo da validao dos mesmos que toma mais tempo e esforo.
Code Igniter Verso 1.5.2 - Guia do Usurio PRIMARY KEY (tb_id), KEY (entry_id) ); A especicao Trackback apenas requer quarto pedaos de informao para serem enviados (url, ttulo, excerto, nome_blog), mas para tornar os dados mais teis, adicionamos alguns campos a mais no esquema acima (data, endereo IP etc.).
Processando um Trackback
Aqui est um exemplo mostrando como voc ir receber e processar um Trackback. O cdigo abaixo tem a inteno de ser usado dentro da funo controller onde voc espera receber os Trackbacks. $this->load->library(trackback); $this->load->database(); if ($this->uri->segment(3) == FALSE) { $this->trackback->send_error(No foi possvel determinar o ID do post); } if ( ! $this->trackback->receive()) { $this->trackback->send_error(O Trackback no contm dados vlidos); } $dados = array( tb_id => , entry_id => $this->uri->segment(3), url => $this->trackback->data(url), title => $this->trackback->data(titulo), excerpt => $this->trackback->data(excerto), blog_name => $this->trackback->data(nome_blog), tb_date => time(), ip_address => $this->input->endereco_ip() ); $sql = $this->db->insert_string(trackbacks, $dados); $this->db->query($sql); $this->trackback->send_success(); Notas: esperado que o nmero ID do post esteja no terceiro segmento da URL. Isto baseia-se no exemplo de URI que mostramos anteriormente: http://www.seu-site.com/index.php/trackback/receive/entry_id Note a entry_id no terceiro URI, o qual voc pode recuperar usando: $this->uri->segment(3); No cdigo de recebimento do Trackback, acima, se o terceiro segmento estiver faltando, iremos disparar um erro. Sem uma ID vlida, no h razo para continuar. A funo $this->trackback->receive() simplesmente uma funo de validao que pegar os dados recebidos e ter a certeza que eles contm os quatro pedaos de dados obrigatrios (url, titulo, excerto, Diagramado por: edson jr - edsonthadeu@hotmail.com 87
Code Igniter Verso 1.5.2 - Guia do Usurio nome_blog). Ela retornar TRUE/FALSE em sucesso ou falha, respectivamente. Se ela falhar, voc receber uma mensagem de erro. Os dados do Trackback recebido podem ser recuperados usando esta funo: $this->trackback->data(item) Onde item representa um destes quatro pedaos de informao: url, ttulo, excerto ou nome_blog. Se os dados do Trackback forem recebidos com sucesso, voc poder enviar uma mensagem de sucesso usando: $this->trackback->send_success(); Nota: O cdigo acima no contm validao de dados. Voc encorajado a inclu-la.
Inicializando a Classe
Como a maioria das classes no Code Igniter, esta inicializada, em seu controller, usando a funo $this>load->library: $this->load->library(parser); Uma vez carregada, seu objeto estar disponvel usando: $this->parser As seguintes funes esto disponveis para esta biblioteca: Esta varivel aceita um nome e uma array de dados de um template como entrada, e gerar a verso analisada (parsed). Exemplo:
88
Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->library(parser); $dados = array( titulo_blog => Meu Ttulo do Blog, cabecalho_blog => Meu Cabealho do Blog ); $this->parser->parse(blog_template, $dados); O primeiro parmetro contm o none do arquivo view (neste exemplo, o arquivo poderia se chamar blog_ template.php), e o segundo parmetro contm a array associativa com os dados a serem substitudos no template. No exemplo acima, o template conteria duas variveis: {titulo_blog} e {cabecalho_blog} No preciso dar echo ou fazer outra coisa com os dados retornados pela $this->parser->parse(). Eles so automaticamente passados Classe Output que dar sada para o browser. No entando, se voc quiser os dados retornados, no lugar de envi-los Classe Output, pode passar TRUE (booleano) para o terceiro parmetro: $string = $this->parser->parse(blog_template, $dados, TRUE);
Pares de Variveis
O exemplo acima permite que simples variveis sejam substitudas. Mas e se voc quiser que um bloco inteiro de variveis seja repetido, com cada interao contendo valores novos? Considere o exemplo que mostramos no topo da pgina: <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_entries} <h5>{title}</h5> <p>{body}</p> {/blog_entries} </body> </html> No cdigo acima, voc notar o par de variveis: {blog_entries} dados... {/blog_entries}. Neste caso, o montante de dados entre estes pares seria repetido mltiplas vezes, correspondendo ao nmeros de linhas em um resultado. A anlise sinttica de pares de variveis feita usando o mesmo cdigo parar analisar variveis simples mostrado acima, exceto que voc adicionar uma array multidimensional correspondente aos dados do seu par de variveis. Considere este exemplo: $this->load->library(parser); $dados = array( blog_title => Meu Ttulo do Blog, blog_heading => Meu cabealho do Blog, blog_entries => array( array(title => Ttulo 1, body => Contedo 1), array(title => Ttulo 2, body => Contedo 2), array(title => Ttulo 3, body => Contedo 3), array(title => Ttulo 4, body => Contedo 4), array(title => Ttulo 5, body => Contedo 5) ) ); $this->parser->parse(blog_template, $dados); Diagramado por: edson jr - edsonthadeu@hotmail.com 89
Code Igniter Verso 1.5.2 - Guia do Usurio Se os dados do seuparesto vindo de um resultado do banco de dados, que j uma array multidimensional, voc pode simplismente usar a funo de resultado de banco: $query = $this->db->query(SELECT * FROM blog); $this->load->library(parser); $dados = array( blog_title => Meu Ttulo do Blog, blog_heading => Meu cabealho do Blog, blog_entries => $query->result_array() ); $this->parser->parse(blog_template, $dados);
Inicializando a Classe
Como a maioria das classes no Code Igniter, esta classe inicializada, em seu controller, usando a funo $this->load->library: $this->load->library(unit_test); Uma vez carregada, seu objeto estar disponvel usando: $this->unit
Rodando Testes
Rodar um teste envolve fornecer um teste e o resultado esperado seguinte funo: $this->unit->run( teste, resultado esperado, nome do teste ); Onde teste o resultado do seu cdigo que voc deseja testar, resultado esperado o tipo de dado que voc espera, e nome do teste um nome opcional que voc pode dar ao seu teste. Exemplo: $teste = 1 + 1; $resultado_esperado = 2; $nome_do_teste = Somar um mais um; $this->unit->run($teste, $resultado_esperado, $nome_do_teste); O resultado esperado fornecido por voc pode ser uma comparao ligeral, ou uma comparao de tipos de dados. Aqui vai um exemplo de uma literal: $this->unit->run(Foo, Foo); Aqui vai um exemplo de uma comparao de tipos de dados: $this->unit->run(Foo, is_string); Notou o uso do is_string no segundo parmetro? Isto diz funo para avaliar se seu teste est produzindo uma string como resultado. Aqui vai uma lista de tipos permitidos de comparaes: is_string is_bool is_true 90 is_false is_int is_numeric is_oat is_double is_array Diagramado por: edson jr - edsonthadeu@hotmail.com is_null
Gerando relatrios
Voc pode tanto mostrar resultados aps cada teste, ou pode rodar vrios testes e gerar um relatrio no nal. Para mostrar um relatrio diretamente, simplesmente d um echo ou retorne a funo run: echo $this->unit->run($teste, $resultado_esperado); Para rodar um relatrio completo de todos os testes, use isto: echo $this->unit->report(); O relatrio ser formatado em uma tabela HTML para visualizao. Se voc preferir os dados crus, pode recuperar um array usando: echo $this->unit->result();
Modo Estrito
Por default, a classe unit test avalia comparaes literais de forma pouco rigorosa. Considere este exemplo: $this->unit->run(1, TRUE); O teste ir avaliar um inteiro, mas o resultado esperaro booleano. O PHP, no entando, devido a seus tipos-de-dados genricos, ir avaliar o cdigo acima como VERDADEIRO, usando um teste de igualdade normal: if (1 == TRUE) echo Isto avaliando como VERDADEIRO; Se voc preferir, pode colocar a classe unit test em modo estrito, no qual ela ir comprar os tipos de dados assim como os valores: if (1 === TRUE) echo Isto avaliando como FALSO; Para habilitar o modo estrito, use isto: $this->unit->use_strict(TRUE);
Criando um Template
Se voc quiser seus resultados de testes formatados de forma diferente da padro, pode montar seu prprio template. Aqui vai um exemplo de um simples template. Note as pseudo-variveis exigidas: $str = <table border=0 cellpadding=4 cellspacing=1> {rows} <tr> <td>{item}</td> <td>{result}</td> </tr> {/rows} </table>; $this->unit->set_template($str); Nota: O seu template deve estar declarado antes de rodar o processo de unit testing. Diagramado por: edson jr - edsonthadeu@hotmail.com 91
Classe URI
A Classe URI prov funes que o ajudaro recuperar informaes a partir de suas string URI. Se voc usa o roteamento URI, pode ainda recuperar informaes sobre os segmentos re-roteados. Nota: Esta classe inicializada automaticamente pelo sistema, por isso no necessrio faz-lo. $this->uri->segment(n) Permite que voc recupere um segmento especco. Onde n o nmero do segmento que voc deseja recuperar. Segmentos so numeros da esquerda pra direita. Por exemplo, se sua URL completa for assim: http://www.seu-site.com/index.php/noticias/locais/metro/crime_aumenta O nmero dos segmentos seriam estes: 1. noticias 2. locais 3. metro 4. crime_aumenta Por default, a funo retorna FALSE (booleano) se o segmento no existir. H um segundo parmetro adicionar que lhe permite congurar seu prprio valor padro se o segmento estiver faltando. Por exemplo, isto diria funo retornar o nmero zero no advento de uma falha: $product_id = $this->uri->segment(3, 0); Isto ajuda evitar escrever cdigo como desse jeito: if ($this->uri->segment(3) === FALSE) { $product_id = 0; } else { $product_id = $this->uri->segment(3); }
$this->uri->rsegment(n)
Esta funo idncia a anterior, exceto que ela lhe permite recuperar um segmento especco em seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->slash_segment(n)
Esta funo praticamente idntica a $this->uri->segment(), exceto que ela adiciona uma barra antes e/ou depois baseado no segundo parmetro. Se o parmetro no for usado, a barra adicionada antes. Exemplo: $this->uri->slash_segment(3); $this->uri->slash_segment(3, leading); $this->uri->slash_segment(3, both); Retorna: 1. segmento/ 2. /segmento 3. /segmento/ 92 Diagramado por: edson jr - edsonthadeu@hotmail.com
$this->uri->slash_rsegment(n)
Esta funo idncia a anterior, exceto que ela lhe permite adicionar barras a um segmento especco seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->uri_to_assoc(n)
Esta funo lhe permite tranformar segmentos URI em uma array associativa de pares chave/valor. Considere este URI: index.php/usuario/busca/nome/joe/localizacao/UK/sexo/masculino Usando esta funo, voc pode transformar a URI em uma array associatia usando este prottipo: [array] ( nome => joe localizacao => UK sexo => masculino ) O primeiro parmetro da funo lhe permite congurar a partir de qual segmento deve comear o processamento. Por default, ela comeara do 3, j que seu URI normalmente ir conter um controller/ funo no primeiro e segundo parmetro respectivamente. Exemplo: $array = $this->uri->uri_to_assoc(3); echo $array[nome]; O segundo parmetro lhe permite congurar os nomes de chave padres, para que a array retornada pela funo sempre contenha indces esperados, mesmo se faltantes na URI. Exemplo: $default = array(nome, sexo, localizao, tipo, espcie); $array = $this->uri->uri_to_assoc(3, $default); Se o URI no contiver um valor no segmento 3, um ndice na array ser adicionadado com esse nome, com o valor FALSE. Por ltimo, se um valor correspondente a uma dada chave no for encontrado para (se hover um nmero mpar de segmentos URI), o valor ser marcado como FALSE (booleano).
$this->uri->ruri_to_assoc(n)
Esta funo idntica a anterior, exceto que ela cria uma array associativa usando seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->assoc_to_uri()
Pega uma array associativa como entrada e gera uma string URI a partir dela. As chaves da array sero includas na string. Exemplo: $array = array(produto => sapatos, tamanho => grande, cor => vermelho); $str = $this->uri->assoc_to_uri($array); // Produz: produto/sapatos/tamanho/grande/cor/vermelho $this->uri->uri_string() Retorna uma string com o URI completo. Por exemplo, se esta sua URL completa: http://www.seu-site.com/index.php/noticas/local/345 A funo retornaria isto: Diagramado por: edson jr - edsonthadeu@hotmail.com 93
$this->uri->ruri_string(n)
Esta funo idntica a anterior, exceto que ela retorna seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->total_segments()
Retorna o nmero total de segmentos.
$this->uri->total_rsegments(n)
Esta funo idntica a anterior, exceto que ela retorna o nmero total de segmentos em seus URI reroteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.
$this->uri->segment_array()
Retorna uma array contendo os segmentos URI. Por exemplo: $segs = $this->uri->segment_array(); foreach ($segs as $segment) { echo $segment; echo <br />; }
$this->uri->rsegment_array(n)
Esta funo idntica a anterior, exceto que ela retorna a array contendo os segmentos em seus URI reroteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.
Inicializando a Classe
Da mesma maneira como a maioria das outras classes no Code Igniter, a classe User Agent inicializada no seu controller usando a funo $this->load->library: $this->load->library(user_agent); Uma vez carregado, o objeto estar disponvel usando: $this->agent
Exemplo
Quando a classe User Agent inicializada ela tentar determinar se o user agent que est visitando seu site um navegador (web browser), um dispositivo mvel ou um rob(spider).Tambm tentar obter a informao da plataforma, caso esteja disponvel. 94 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->library(user_agent); if ($this->agent->is_browser()) { $agent = $this->agent->browser(). .$this->agent->version(); } elseif ($this->agent->is_robot()) { $agent = $this->agent->robot(); } elseif ($this->agent->is_mobile()) { $agent = $this->agent->mobile(); } else { $agent = Unidentied User Agent; } echo $agent; echo $this->agent->platform(); // Informao de Platforma (Windows, Linux, Mac, etc.)
Referncias de Funes
$this->agent->is_browser()
Retorna TRUE/FALSE (booleano) se o user agent um navegador conhecido.
$this->agent->is_mobile()
Retorna TRUE/FALSE (booleano) se o user agent um dispositivo mvel conhecido.
$this->agent->is_robot()
Retorna TRUE/FALSE (booleano) se o user agent um rob conhecido. Nota: A biblioteca user agent contem apenas as denies de robs mais comuns. No uma lista completa destes. Existe centenas deles, portanto car procurando cada um deles pode no algo eciente (e prtico). Caso voc ache que algum destes robs que regularmente visitam seu site est fora da lista, adicione-o no arquivo application/cong/user_agents.php.
$this->agent->is_referral()
Retorna TRUE/FALSE (booleano) se o the user agent foi referenciado de um outro site (est vindo de algum outro site).
$this->agent->browser()
Retorna uma string que contem o nome do navegador que est visitando seu site.
$this->agent->version()
Retorna uma string que contem o nmero de verso number do navegador que est visitando seu site.
95
$this->agent->mobile()
Retorna uma string que contem o nome do dispositivo mvel que est visitando seu site.
$this->agent->robot()
Retorna uma string que contem o nome do rob que est visitando seu site.
$this->agent->platform()
Retorna uma string que contem a platforma que est sendo usada para visitar seu site (Linux, Windows, OS X, etc.).
$this->agent->referrer()
O referrer, se o user agent est vindo de algum outro site. Normalmente voc usar esta funo da seguinte maneira: if ($this->agent->is_referral()) { echo $this->agent->referrer(); }
$this->agent->agent_string()
Retorna uma string que contem a identicao completa do user agent . Normalmente algo assim: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2
$this->agent->accept_lang()
Permite vercar se o user agent aceita um idioma particular. Exemplo: if ($this->agent->accept_lang(en)) { echo Voc suporta Ingls!; } Nota: Esta funo no muito convel isto porque alguns navegadore no provem infomao de idioma, e os que o fazem, no fornecem a informao de modo preciso.
$this->agent->accept_charset()
Permite vercar se o user agent aceita um conjunto de caracteres (charset) particular. Exemplo: if ($this->agent->accept_charset(utf-8)) { echo Seu browser suporta UTF-8!; } Nota: Esta funo no muito convel isto porque alguns navegadore no provem infomao de conjunto de caracteres, e os que o fazem, no fornecem a informao de modo preciso.
96
Validao de Formulrio
Antes de explicar a abordagem do Code Igniters com a validao de dados, vamos descrever o cenrio ideal: 1. Um formulrio exibido. 2. Voc preenche e o submete. 3. Se voc submeteu alguma informao invlida ou esqueceu algum item obrigatrioa, o formulrio re-exibido contendo seus dados e uma mensagem de erro descrivendo o problema. 4. Este processo continuar at voc submeter um formulrio totalmente vlido. No lado de recebimento dos dados, o script deve: 1. Conferir os dados que so obrigatrios. 2. Verique que os dados so do tipo correto e correspondem, respectivamente, com os critrios corretos. (Por exemplo, se um nome de usurio submetido, ele deve ser validado de modo a conter apenas caracteres permitidos. Deve ter um nmero mnimo de caracteres e no exceder o nmero mximo. O nome de usurio no pode ser um j existente ou nem mesmo uma palavra reservada. Etc.) 3. Limpar os dados para segurana (exemplo: limpar SQL injections). 4. Pr-formatar os dados caso precise ( necessrio retirar algum espao em branco? Codicar/Encodar HTML ? Etc.) 5. Preparar os dados para insero na base de dados. Embora no haja nada de complexo no processo acima, ele frequentemetne requer um considervel nmeros de linhas de cdigo e para exibio de mensagens de erro, vrias estruturas de controle so normalmente colocadas dentro do formulrio HTML. Valdao de Formulrio, embora simples de criar, geralmente um pouco desorganizado e tedioso de implementar. Code Igniter prov uma estrutura detalhada de validao que de fato minimiza a quantidade de linhas de cdigo que voc teria de escrever. Tambm remove toda as estruturas de controle de seu HTML, permitindo que seja limpo e livre de cdigo.
Viso Geral
De modo a implementar a validao de formulrio do Code Igniter voc precisar de trs coisas: 1. Um arquivo de View contendo o formulrio. 2. Um arquivo de View contendo a mensagem de successo para ser exibida aps o formulrio ser enviado. 3. Uma funo controller para receber e processar os dados que forem submetidos pelo formulrio. Vamos criar estas trs coisas usando como exemplo um formulrio de cadastro de usurio.
O Formulrio
Usando um editor de texto, crie um formulrio chamado myform.php. Nele coloque este cdigo e salve-o na sua pasta applications/views/:
97
Code Igniter Verso 1.5.2 - Guia do Usurio <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> <head> <title>My Form</title> </head> <body> <?=$this->validation->error_string; ?> <?=form_open(form); ?> <h5>Usurio</h5> <input type=text name=username value= size=50 /> <h5>Senha</h5> <input type=text name=password value= size=50 /> <h5>Conrmao de Senha</h5> <input type=text name=passconf value= size=50 /> <h5>Endereo de Email</h5> <input type=text name=email value= size=50 /> <div><input type=submit value=Submit /></div> </form> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> </html>
A Pgina de Sucesso
Usando um editor de texto, crie um formulrio chamado formsuccess.php. Nele coloque este cdigo e salve-o na sua pasta applications/views/: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> <head> <title>Meu Formulrio</title> </head> <body> <h3>Seu formulrio foi enviado com sucesso!</h3> <p><?=anchor(form, Try it again!); ?></p> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> </html>
O Controller
Usando um editor de texto, crie um formulrio chamado form.php. Nele coloque este cdigo e salve-o na sua pasta applications/controllers/:
98
Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Form extends Controller { function index() { $this->load->helper(array(form, url)); $this->load->library(validation); if ($this->validation->run() == FALSE) { $this->load->view(myform); } else { $this->load->view(formsuccess); } } } ?>
Execute-o!
Para executar seu formulrio, visite seu site usando uma URL similar a esta: www.seu-site.com/index.php/form/ Se voc enviar o formulrio ver apenas ele ser recarregado. Isso porque voc ainda no congurou regras de validao, regras estas que em breve veremos.
Explanao
Voc perceber muitas coisas a respeito das pginas acima: O formulrio (myform.php) um formulrio padro, com algumas excees: 1. Ele usa um assistente de formulrio para criar a abertura do formulrio. Tecnicamente isto no necessrio. Voc poderia criar o formulrio usando um HTML padro. Entretando, o benfcio de usar um assistente que ele gera a URL de action para voc, baseado na URL em seu arquivo de congurao. Isto torna sua aplicao mais portvel e exvel na eventualidade de mudana de suas URLs. 2. No topo do formulrio voc notar a seguinte varivel: <?=$this->validation->error_string; ?> Esta varivel exibr qualquer mesagem de erro retornada pelo validador. Se no existirem mensagens, ele no retornar nada. O controller (form.php) tem uma funo: index(). Esta funo inicializa a classe de validao e carrega o assistente de formulrio e o assistente de URL usados pelos seus arquivos de view. Ela tambm executa a rotina de validao. No caso da validao ter sido bem sucedida, pode ser apresentado o formulrio ou a pgina de sucesso de envio. Partindo do pressuposto que voc no tenha dito classe de validao para validar coisa alguma ela retornar false(false booleano) por padro. A funo run() apenas retorna true se tiver aplicado suas regras com sucesso sem nenhum tipo de falha.
Code Igniter Verso 1.5.2 - Guia do Usurio Em seu controller (form.php), adicione este cdigo logo abaixo da funo de inicializao de validao: $rules[username] = required; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); Seu controller agora ir se parecer com algo assim: <?php class Form extends Controller { function index() { $this->load->helper(array(form, url)); $this->load->library(validation); $rules[username] = required; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); if ($this->validation->run() == FALSE) { $this->load->view(myform); } else { $this->load->view(formsuccess); } } } ?> Agora submeta o formulrio com os campos em branco e voc dever ver a mensagem de erro. Se voc submeter o formulrio com todos os campos preenchidos, ver ento a pgina de envio com sucesso. Nota: Os campos do formulrio ainda no esto sendo re-populados com os dados quando ocorre o erro. Vamos chegar nesta parte em breve, uma vez que ainda estamos falando sobre as regras de validao.
Regras em Cascata
Code Igniter permite concatenar mltiplas regras. Vamos experimentar. Altere sua array de regras para isto: $rules[username] = required|min_length[5]|max_length[12]; $rules[password] = required|matches[passconf]; $rules[passconf] = required; $rules[email] = required|valid_email; 100 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio O cdigo acima requer que: 1. O campo username no seja menor que 5 caracteres nem maior que 12. 2. O valor do campo senha(password) deve corresponder ao valor do campo de conrmao de senha (passconf ). 3. O campo email deve conter um endereo de email vlido. Experimente Nota: H muitas regras disponveis que voc pode ler sobre na referncia de validao.
Tratando os Dados
Juntamente com as funes de validao como as que usamos acima, voc tambm pode tratar seus dadoas de vrios modos. Por exemplo, voc pode congurar regras como esta: $rules[username] = trim|required|min_length[5]|max_length[12]|xss_clean; $rules[password] = trim|required|matches[passconf]|md5; $rules[passconf] = trim|required; $rules[email] = trim|required|valid_email; Acima, estamos aparando(trimming) os campos, covertendo o password para MD5, e executando o username atravs da funo xss_clean, que remove dados maliciosos. Qualquer funo nativa do PHP que aceite um parmetro pode ser usada como regra, como, por exemplo,: htmlspecialchars, trim, MD5, etc. Nota: Geralmente voc ir querer usar as funes de tratamento depois das regras de validao, pois caso exista algum erro os dados originais sero mostrados no formulrio.
$this->load->view(formsuccess);
function username_check($str) { if ($str == test) { $this->validation->set_message(username_check, The %s eld can not be the word test); return FALSE; } else { return TRUE; } } } ?> Recarregue seu formulrio e submeta a palavra test como Nome de usurio(username). Voc pode ver que os dados do campo do formulrio foram passados a sua funo de callback(rechamada) para voc processar. Para chamar um callback apenas coloque o nome da funo em uma regra com callback_ como prexo da regra. A mensagem de erro foi congurada usando a funo $this->validation->set_message. Lembre-se que a chave da mensagem (o primeiro parmetro) deve coincidir com o nome de sua funo. Nota: Voc pode aplicar suas prprias mensagens de erros personalizadas a qualquer regra, apenas congurando a mensagem similarmente. Por exemplo, para alterar a mensagem para a regra required (obrigatrio) voc far isto: $this->validation->set_message(required, Your custom message here);
Re-populando o formulrio
At aqui estivemos apenas lidando com erros . Chegou a hora de repopular os campos do formulrio com os dados enviados. Isto feito similarmente s regras. Adicione o seguinte cdigo a seu controller, logo abaixo de suas regras: $elds[username] = Nome de usurio; $elds[password] = Senha; $elds[passconf] = Conrmao de Senha; $elds[email] = Endereo de Email; $this->validation->set_elds($elds); As chaves do array so os nomes atuais dos campos do formulrio, o valor representa o nome completo que voc quer mostrar na mensagem de erro. A funo index de seu controller ir se parecer com algo assim:
102
Code Igniter Verso 1.5.2 - Guia do Usurio function index() { $this->load->helper(array(form, url)); $this->load->library(validation); $rules[username] = required; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); $elds[username] = Username; $elds[password] = Password; $elds[passconf] = Password Conrmation; $elds[email] = Email Address; $this->validation->set_elds($elds); if ($this->validation->run() == FALSE) { $this->load->view(myform); } else { $this->load->view(formsuccess); } } Agora abra seu arquivo de view myform.php e atualize o valor em cada campo de modo que cada um tenha um objeto correspondente a seu nome: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> <head> <title>My Form</title> </head> <body> <?=$this->validation->error_string; ?> <?=form_open(form); ?> <h5>Nome de usurio</h5> <input type=text name=username value=<?=$this->validation->username;?> size=50 /> <h5>Senha</h5> <input type=text name=password value=<?=$this->validation->password;?> size=50 /> <h5>Conrmao de Senha</h5> <input type=text name=passconf value=<?=$this->validation->passconf;?> size=50 /> <h5>Endereo de Email</h5> <input type=text name=email value=<?=$this->validation->email;?> size=50 /> <div><input type=submit value=Submit /></div> </form> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> </html> Agora recarregue sua pgina e envie o formulrio de modo que isso ir disparar um erro. Seu formulrio dever estar populado e as mensagens de erro contero um nome de campo mais relevante. Diagramado por: edson jr - edsonthadeu@hotmail.com 103
Referncia de Regras
O que segue uma lista de todas as regras nativas que esto disponveis para uso:
Regra required matches min_length max_length exact_length alpha alpha_numeric alpha_dash numeric valid_email valid_ip Parmetro No Sim Sim Sim Sim No No No No No No descrio Retorna FALSE se o elemento do formulrio estiver vazio. Retorna FALSE se o elemento do formulrio no corresponder com o matches[form_ elemento no parmetro. item] Retorna FALSE se o elemento do formulrio for mais curto/menor que o min_length[6] valor do parmetro. Retorna FALSE se o elemento do formulrio for mais longo/maior que o max_length[12] valor do parmetro. Retorna FALSE se o elemento do formulrio no for exatamente igual ao exact_length[8] valor do parmetro. Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres alfabticos(letras). Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres alfanumricos. Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres alfanumricos, underscores ou traos(hfen). Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres numricos(nmeros). Retorna FALSE se o elemento do formulrio no contiver um endereo de email vlido. Retorna FALSE se o IP fornecido no for vlido. Exemplo
104
Code Igniter Verso 1.5.2 - Guia do Usurio Nota: Estas regras tambm podem ser chamadas atravs de funes discretas. Por exemplo: $this->validation->required($string); Nota: Voc tambm pode usar quaisquer funes nativa do PHP que permitam um parmetro.
Nota: Voc tambm pode usar quaisquer funes nativa do PHP que permitam um parmetro, comotrim, htmlspecialchars, urldecode, etc.
set_select()
Permite que voc exiba o item do menu que foi selecionado. O primeiro parmetro deve conter o nome do menu select, o segundo parmetro deve conter o valor de cada item. Exemplo: <select name=meuselect> <option value=um <?= $this->validation->set_select(meuselect, um); ?> >Um</option> <option value=dois <?= $this->validation->set_select(meuselect, dois); ?> >Dois</option> <option value=tres <?= $this->validation->set_select(meuselect, tres); ?> >Trs</option> </select>
set_checkbox()
Permite que voc exiba um checkbox no estado em que foi enviado. O primeiro parmetro deve conter o nome do checkbox, o segundo parmetro deve conter seu valor. Exemplo: <input type=checkbox name=meucheck checkbox(meucheck, 1); ?> /> value=1 <?= $this->validation->set_
105
set_radio()
Permite que voc exiba radio buttons no estado em que forem enviados. O primeiro parmetro deve conter o nome do radio button, o segundo parmetro deve conter seu valor. Exemplo: <input type=radio name=meuradio value=1 <?= $this->validation->set_radio(meuradio, 1); ?> />
O que XML-RPC?
Simplesmente um modo de dois computadores comunicarem-se pela internet usando XML. Um computador, que chamaremos de de cliente, envia uma requisio XML-RPC a outro computadore, que chamaremos de servidor. Uma vez que o servidore receba e processe a requisio ele enviar de volta uma resposta ao cliente. Por exemplo, usando a API MetaWeblog, um Cliente XML-RPC (normalmente uma ferramenta de desktop publishing) enviar uma requisio para um Servidor XML-RPC rodando em seu site. Esta requisio poderia ser uma nova postagem de um weblog sendo enviada para publicao, ou poderia ser uma requisio de uma postagem editada. Quando o Servidor XML-RPC recebe esta requisio ele o examinar para determinar qual classe/mtodo deve ser chamado para processar esta requisio. Uma vez processada, o servidor enviar de volta uma mensagem de resposta. Para especicaes detalhadas, visite o site XML-RPC.
Inicializando a Classe
Assim como a maioria das classe no Code Igniter, as classes XML-RPC e XML-RPCS so inicializadas em seu controller usando a funo $this->load->library: Para carregar a classe XML-RPC voc usar: $this->load->library(xmlrpc); Uma vez carregado, o objeto biblioteca xml-rpc estar disponvel usando: $this->xmlrpc Para carregar a classe Servidor de XML-RPC voc usar: $this->load->library(xmlrpc); $this->load->library(xmlrpcs); Uma vez carregado, o objeto biblioteca xml-rpcs estar disponvel usando: $this->xmlrpcs Nota: Ao usar a classe Servidor de XML-RPC voc deve carregar tanto a classe XML-RPC quanto a classe Servidor de XML-RPC.
Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->library(xmlrpc); $this->xmlrpc->server(http://rpc.pingomatic.com/, 80); $this->xmlrpc->method(weblogUpdates.ping); $request = array(My Photoblog, http://www.my-site.com/photoblog/); $this->xmlrpc->request($request); if ( ! $this->xmlrpc->send_request()) { echo $xmlrpc->display_error(); } Explicao O cdigo acima inicializa o XML-RPC aula, conjuntos URL do servidor eo mtodo a ser chamado (weblogUpdates.ping). O pedido (neste caso, o ttulo eo URL de seu site) colocada em uma matriz de transporte, e compilado com o pedido () funo. Por ltimo, o pedido enviado completo. Se o send_ request () retorna falso mtodo que ir exibir a mensagem de erro foi enviado de volta a partir do XML-RPC Server.
Code Igniter Verso 1.5.2 - Guia do Usurio processamento. Aqui est um exemplo para ilustrar: $this->load->library(xmlrpcs); $this->load->library(xmlrpcs); $cong[functions][new_post]; = array(function => My_blog.new_entry); $cong[functions][update_post] = array(function => My_blog.update_entry); $this->xmlrpcs->initialize($cong); $this->xmlrpcs->serve(); O exemplo acima contm um array especicando dois pedidos mtodo permite que o servidor. Os mtodos so permitidas no lado esquerdo da matriz. Quando um desses dois so recebidos, eles sero mapeados para a classe e mtodo do lado direito. Em outras palavras, se um cliente XML-RPC envia um pedido para que a new_post mtodo, o servidor ir carregar o My_blog classe e chamar a new_entry funo. Se o pedido para o update_post mtodo, o servidor ir carregar o My_blog classe e chamar a update_entry funo. A funo nomes no exemplo acima, so arbitrrios. Voc vai decidir o que deve ser chamado em seu servidor, ou se voc estiver usando APIs padronizado, como o Blogger ou MetaWeblog API, voc vai usar os seus nomes de funo.
A varivel $request um objeto compilado pelo servidor, que contm os dados enviados pelo cliente XML-RPC. Usando esse objeto, voc ter acesso ao pedido parmetros para que voc possa processar o pedido. Quando tiver concludo ir enviar uma resposta de volta para o Cliente. Abaixo est um exemplo do mundo real, utilizando o Blogger API. Um dos mtodos, no Blogger API getUserInfo (). Usando esse mtodo, um XML-RPC Client Server pode enviar a um nome de usurio e senha, em contrapartida o servidor envia de volta informaes sobre o usurio especial (apelido, ID do usurio, endereo de e-mail, etc.) Aqui est a forma como a funo de transformao possa parecer:
108
Code Igniter Verso 1.5.2 - Guia do Usurio class My_blog extends Controller { function getUserInfo($request) { $username = smitty; $password = secretsmittypass; $this->load->library(xmlrpc); $parameters = $request->output_parameters(); if ($parameters[1] != $username AND $parameters[2] != $password) { return $this->xmlrpc->send_error_message(100, Invalid Access); } $response = array(array(nickname => array(Smitty,string), userid => array(99,string), url => array(http://yoursite.com,string), email => array(jsmith@yoursite.com,string), lastname => array(Smith,string), rstname => array(John,string) ), struct); } $this->xmlrpc->send_response($response);
Notas: O output_parameters () recupera uma funo array indexada corresponde ao pedido parmetros enviados pelo cliente. No exemplo acima, os parmetros de sada ser o nome de usurio e senha. Se o nome de usurio ea senha enviada pelo cliente no eram vlidas, ea mensagem de erro retornado usando send_error_message (). Se a operao foi bem sucedida, o cliente ser enviada de volta uma resposta array contendo as informaes do usurio.
109
Code Igniter Verso 1.5.2 - Guia do Usurio $request = array ( array( rst_name => array(John, string), last_name => array(Doe, string), member_id => array(123435, int), todo_list => array(array(clean house, call mom, water plants), array), ), struct ); Note que a matriz acima formatado como uma struct. Este o tipo mais comum de dados para as respostas. Tal como acontece com Pedidos, pode ser uma resposta a uma das sete tipos de dados listados na seo de tipos de dados.
Para ajud-lo a entender tudo o que tenha coberto at agora, vamos criar uma jovem controladores que atuam como XML-RPC cliente e servidor. Voc vai usar o Cliente para enviar uma solicitao para o servidor e receber uma resposta.
O Cliente
Usando um editor de texto, crie um controlador chamado xmlrpc_client.php. Nele, colocar esse cdigo e guarde-o para seus aplicativos / controladores / pasta: <?php class Xmlrpc_client extends Controller { function index() { $this->load->helper(url); $server_url = site_url(xmlrpc_server); $this->load->library(xmlrpc); $this->xmlrpc->server($server_url, 80); $this->xmlrpc->method(Greetings); $request = array(How is it going?); $this->xmlrpc->request($request); if ( ! $this->xmlrpc->send_request()) { echo $this->xmlrpc->display_error(); } else { echo <pre>; print_r($this->xmlrpc->display_response()); echo </pre>; } } } ?> 110 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio Nota: No cdigo acima estamos a usar um ajudante url. Voc pode encontrar mais informaes na pgina Funes Auxiliares.
O Servidor
Usando um editor de texto, crie um controlador chamado xmlrpc_server.php. Nele, colocar esse cdigo e guarde-o para seus aplicativos / controladores / pasta: <?php class Xmlrpc_server extends Controller { function index() { $this->load->library(xmlrpc); $this->load->library(xmlrpcs); $cong[functions][Greetings] = array(function => Xmlrpc_server.process); $this->xmlrpcs->initialize($cong); $this->xmlrpcs->serve(); } function process($request) { $parameters = $request->output_parameters(); $response = array( array( you_said => $parameters[0], i_respond => Not bad at all.), struct); return $this->xmlrpc->send_response($response); } } ?> Experimente! Agora, visite o seu site usando uma URL semelhante a esta: www.your-site.com/index.php/xmlrpc_client/ Agora voc deve ver a mensagem que voc enviou para o servidor, e sua resposta de volta para voc. O cliente envia uma mensagem que voc criou ( Como vai se passa?) Para o servidor, junto com um reqest para o Saudaes mtodo. O servidor recebe o pedido e mapas-a ao processo funo, no caso de a resposta enviada de volta.
$this->xmlrpc->timeout()
Dena um tempo de descanso perodo (em segundos) aps o qual o pedido ser cancelado: $ this-> xmlrpc-> timeout (6);
111
$this->xmlrpc->method()
Dene o mtodo que ser solicitada a partir do servidor XML-RPC: $ this-> xmlrpc-> mtodo ( mtodo); Quando mtodo o nome do mtodo.
112
Tipos de Dados
De acordo com a especicao XML-RPC, existem sete tipos de valores que poder ser enviado via XMLRPC: - int or i4 - boolean - string - double - dateTime.iso8601 - base64 - struct (contains array of values) - array (contains array of values)
Inicializao da classe
Tal como a maioria dos outros ramos do Cdigo Igniter, o CEP em sua classe inicializado utilizando o controlador $ this-> load-> biblioteca funo: $this->load->library(zip); Uma vez carregado, o objeto Zip biblioteca estar disponvel usando: $ this-> zip
Exemplo de uso
Este exemplo demonstra como a comprimir um cheiro, guarde-o para uma pasta no seu servidor, e baixlo para o seu desktop. $name = mydata1.txt; $data = A Data String!; $this->zip->add_data($name, $data); // Write the zip le to a folder on your server. Name it my_backup.zip $this->zip->archive(/path/to/directory/my_backup.zip); // Download the le to your desktop. Name it my_backup.zip $this->zip->download(my_backup.zip);
Function Reference
$this->zip->add_data()
Permite-lhe adicionar os dados para o arquivo Zip. O primeiro parmetro deve conter o nome que voc gostaria dado ao processo, o segundo parmetro deve conter os dados do arquivo como uma string: $name = my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); Diagramado por: edson jr - edsonthadeu@hotmail.com 113
Code Igniter Verso 1.5.2 - Guia do Usurio Voc permitido vrias chamadas para esta funo, a m de acrescentar vrios cheiros para o seu arquivo. Exemplo: $name = mydata1.txt; $data = A Data String!; $this->zip->add_data($name, $data); $name = mydata2.txt; $data = Another Data String!; $this->zip->add_data($name, $data); Ou voc pode passar vrios arquivos usando um array: $data = array( mydata1.txt => A Data String!, mydata2.txt => Another Data String! ); $this->zip->add_data($data); $this->zip->download(my_backup.zip); Se voc gostaria que seu comprimido dados organizados em sub-pastas, incluir o caminho como parte do nome de arquivo: $name = personal/my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); O exemplo acima my_bio.txt ter lugar dentro de uma pasta chamada pessoal.
114
Code Igniter Verso 1.5.2 - Guia do Usurio $path = /path/to/photo.jpg; $this->zip->read_le($path, TRUE); // Download the le to your desktop. Name it my_backup.zip $this->zip->download(my_backup.zip); No exemplo acima, photo.jpg sero colocadas dentro de duas pastas: path/to/
$name = my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); $zip_le = $this->zip->get_zip();
115
116
Testes de Resultados
Se voc executar consultas que no poderia produzir um resultado, voc incentivado a ensaio para um resultado usando o primeiro num_rows () Funo:
117
Code Igniter Verso 1.5.2 - Guia do Usurio $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } }
Inserir Standard
$sql = INSERT INTO mytable (title, name) VALUES (.$this->db->escape($title)., .$this->db->escape($name).); $this->db->query($sql); echo $this->db->aected_rows();
118
Explicao de Valores:
hostname - O nome do host do seu banco de dados. Muitas vezes isto localhost. username - O nome de usurio usado para conectar ao banco de dados. password - A senha usada para conectar ao banco de dados. database - O nome do banco de dados que deseja ligar. dbdriver - A base de dados tipo. ou seja: mysql, POSTGRE, obdc, etc devem ser especicados em minsculas. dbprex - Uma mesa opcional prexo que ser adicionado ao nome da tabela quando correr Active Record buscas. Isto permite mltiplas Cdigo Igniter instalaes de partilhar uma base de dados. pconnect - verdadeiro / falso (boolean) - a possibilidade de utilizar uma conexo persistente. db_debug - verdadeiro / falso (boolean) - Quer erros de dados deve ser exibido. active_r - verdadeiro / falso (boolean) - Quer a carga do Active Record Class. Se voc no estiver usando o registro ativo classe voc pode ter se omitido quando o banco de dados aulas so inicializadas a m de utilizar menos recursos. port - A base de dados nmero da porta. Actualmente, apenas utilizado com o POSTGRE condutor. Nota: Dependendo do que voc est usando plataforma de dados (MySQL, POSTGRE, etc) todos os valores no sero necessrios. Por exemplo, quando se utilizam SQLite no ser necessrio fornecer um nome de usurio ou senha, eo nome do banco de dados ser o caminho para o seu arquivo de dados. As informaes acima assume que voc est usando o MySQL.
Ligar automaticamente
O auto conectar recurso ir carregar e exemplicam a base de dados com todas as pginas classe carga. Para ativar a auto conexo, adicionar a palavra banco de dados para o ncleo array, como indicado na seguinte arquivo: application/cong/autoload.php
Conectar manualmente
Se apenas algumas das suas pginas requerem conectividade de dados manualmente voc pode conectar ao seu banco de dados atravs da adio desta linha de cdigo em qualquer funo onde ela necessria, ou em sua classe construtor de tornar a base de dados disponvel a nvel mundial em que a classe. $ this-> load-> database (); Se a funo acima no contm qualquer informao no primeiro parmetro ele ir conectar-se ao grupo em seu banco de dados especicado o arquivo de congurao. Para a maioria das pessoas, este o mtodo preferido de uso. O primeiro parmetro desta funo pode opcionalmente ser utilizado para especicar um grupo particular de dados a partir do seu arquivo cong, ou voc pode at apresentar valores para a conexo de uma base de dados que no est especicado em seu arquivo de congurao. Exemplos: Para escolher um grupo especco de seu arquivo cong voc pode fazer isto: $ this-> load-> database ( group_name);
120
Code Igniter Verso 1.5.2 - Guia do Usurio Quando group_name o nome da conexo de seu grupo arquivo de congurao. Para conectar manualmente para um banco de dados desejados voc pode passar um conjunto de valores: $cong[hostname] = localhost; $cong[username] = myusername; $cong[password] = mypassword; $cong[database] = mydatabase; $cong[dbdriver] = mysql; $cong[dbprex] = ; $cong[pconnect] = FALSE; $cong[db_debug] = TRUE; $cong[active_r] = TRUE; $this->load->database($cong); Para obter informaes sobre cada um desses valores, por favor veja a pgina de congurao. Ou voc pode enviar sua base de dados valores como uma fonte de dados Nome. DSNs devem ter este prottipo: $dsn = dbdriver://username:password@hostname/database; $this->load->database($dsn); Note que se voc usar um DSN que voc no ser capaz de indicar alguns dos valores padro como voc pode se usar uma conexo array.
121
Query
$ this-> db-> query ();
Para enviar uma consulta, use as seguintes funes: $ this-> db-> query ( a sua consulta AQUI ); A funo query() retorna um banco de dados objeto resultado quando a ler tipo buscas so feitas, que voc pode usar para mostrar seus resultados. Quando escrever tipo buscas so feitas simplesmente retorna true ou false dependendo do xito ou fracasso. Ao recuperar os dados que voc normalmente atribuir a consulta para a sua prpria varivel, como este: $ query = $ this-> db-> query ( a sua consulta AQUI );
Escape de Consultas
uma boa prtica de segurana para escapar os seus dados antes de envi-lo em seu banco de dados. Cdigo Igniter tem duas funes que ajudam voc a fazer isso: $ this-> db-> escape () Esta funo determina o tipo de dados para que possa escapar apenas string dados. Ele tambm adiciona automaticamente aspas simples em torno dos dados, para que voc no tem que: $sql = INSERT INTO table (title) VALUES(.$this->db->escape($title).); $ this-> db-> escape_str () Esta funo escapa os dados passaram a ela, independentemente do tipo. A maior parte do tempo voc vai usar a funo acima esta um pouco depois. Use a funo desta forma: $sql = INSERT INTO table (title) VALUES(.$this->db->escape_str($title).);
Query Ligaes
Bindings permitem-lhe simplicar a sua consulta sintaxe ao deixar o sistema de colocar a consultas entre si para si. Considere o seguinte exemplo: $sql = SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?; $this->db->query($sql, array(3, live, Rick)); Os pontos de interrogao na consulta so substitudos automaticamente com os valores na tabela, no segundo parmetro da funo Consulta. O benefcio da utilizao da liga secundria que os valores so automaticamente escapou, produzindo mais segura buscas. Voc no tem que se lembrar de manualmente escapar dados; que que o motor automaticamente para voc.
122
Result ()
Esta funo retorna a consulta como resultado de uma srie de objetos, ou um array vazio em fracasso. Normalmente voc vai usar isso em um loop foreach, como este: $query = $this->db->query(YOUR QUERY); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } A funo acima um apelido de result_object (). Se voc executar consultas que no poderia produzir um resultado, voc incentivado a testar o primeiro resultado: $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } }
result_array()
Esta funo retorna o resultado como uma pura query array, ou FALSE em fracasso. Normalmente voc vai usar isso em um loop foreach, como este: $query = $this->db->query(YOUR QUERY); foreach ($query->result_array() as $row) { echo $row[title]; echo $row[name]; echo $row[body]; }
row()
Esta funo retorna um nico resultado row. Se a sua consulta tem mais de uma linha, ele retorna apenas a primeira row. O resultado retornado como um objeto. Aqui est um exemplo de utilizao:
123
Code Igniter Verso 1.5.2 - Guia do Usurio $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { $row = $query->row(); echo $row->title; echo $row->name; echo $row->body;
Se voc quiser uma linha especca retornou voc pode enviar a linha nmero como um dgito no primeiro parmetro: $row = $query->row(5);
row_array ()
Idntico ao da linha acima (), exceto que retorna um array. Exemplo: $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { $row = $query->row_array(); echo $row[title]; echo $row[name]; echo $row[body];
Se voc quiser uma linha especca retornou voc pode enviar a linha nmero como um dgito no primeiro parmetro: $row = $query->row_array(5); Alm disso, voc pode andar forward/backwards/rst/last atravs de seus resultados usando estas variaes: $row = $query->rst_row() $row = $query->last_row() $row = $query->next_row() $row = $query->previous_row() Por padro ela retornar um objeto a menos que voc coloque a palavra array no parmetro: $row = $query->rst_row(array) $row = $query->last_row(array) $row = $query->next_row(array) $row = $query->previous_row(array)
124
$ query-> num_elds ()
O nmero de campos (columns) retornado pela consulta. Certique-se de chamar a funo utilizando a sua consulta resultar objeto: $query = $this->db->query(SELECT * FROM my_table); echo $query->num_elds();
$ query-> free_result ()
Ela libera a memria associada com o resultado e suprime o resultado dos recursos ID. Normalmente PHP libera sua memria automaticamente no nal do script execuo. No entanto, se voc estiver executando uma srie de consultas, em particular um script voc pode querer libertar o resultado depois de cada consulta resultado foi gerado, a m de reduzir os consumos de memria. Exemplo: $query = $this->db->query(SELECT title FROM my_table); foreach ($query->result() as $row) { echo $row->title; } $query->free_result(); // The $query result object will no longer be available $query2 = $this->db->query(SELECT name FROM some_table); $row = $query2->row(); echo $row->name; $query2->free_result(); // The $query2 result object will no longer be available
Code Igniter Verso 1.5.2 - Guia do Usurio primeiro parmetro. Exemplo: echo $this->db->count_all(my_table); // Produces an integer, like 25
$this->db->version()
Sadas a base de dados verso que voc est executando: echo $this->db->version();
$this->db->last_query();
Retorna a ltima consulta que foi executado (a string de consulta, e no o resultado). Exemplo: $str = $this->db->last_query(); // Produces: SELECT * FROM sometable.... Os dois seguintes funes ajudam a simplicar o processo de escrita de dados inseres e atualizaes.
$this->db->insert_string();
Esta funo simplica o processo de escrita insero de dados. Ele retorna uma string inserir SQL formatado corretamente. Exemplo: $data = array(name => $name, email => $email, url => $url); $str = $this->db->insert_string(table_name, $data); O primeiro parmetro o nome da tabela, o segundo um array associativo com os dados que devem ser inseridos. O exemplo acima produz: INSERT INTO table_name (name, email, url) VALUES (Rick, rick@your-site.com, www.your-site. com) Nota: Os valores so automaticamente escapou, produzindo mais segura buscas.
$this->db->update_string();
Esta funo simplica o processo de escrita database updates. Ele retorna uma string atualizao SQL formatado corretamente. Exemplo: $data = array(name => $name, email => $email, url => $url); $where = author_id = 1 AND status = active; $str = $this->db->update_string(table_name, $data, $where); O primeiro parmetro o nome tabela, o segundo um array associativo com os dados que devem ser inseridos, eo terceiro parmetro o onde clusula. O exemplo acima produz: UPDATE exp_weblog SET name = Rick, email = rick@your-site.com, url = www.your-site.com WHERE author_id = 1 AND status = active Nota: Os valores so automaticamente escapou, produzindo mais segura buscas. 126 Diagramado por: edson jr - edsonthadeu@hotmail.com
Selecting Data
As seguintes funes permitem que voc crie SQL SELECT declaraes. Nota: Se voc estiver usando o PHP 5 voc pode utilizar o mtodo de encadeamento mais compacto sintaxe. Esta situao descrita no nal da pgina.
$this->db->getwhere();
Idntico ao da funo acima exceto que ela permite que voc adicione um where clusula no segundo parmetro, em vez de usar o db-> where () Funo: $ query = $ this-> db-> getwhere ( mytable, array (id => $ id), US $ limite de US $ oset); Por favor leia sobre o caso da funo abaixo para obter mais informaes. Diagramado por: edson jr - edsonthadeu@hotmail.com 127
$this->db->select();
Permite-lhe escrever o SELECT poro de sua consulta: $this->db->select(title, content, date); $query = $this->db->get(mytable); // Produces: SELECT title, content, date FROM mytable Nota: Se voc estiver selecionando todos (*) a partir de uma tabela que voc no precisa usar esta funo. Quando omitido, Cdigo Igniter assume que voc deseja SELECT *
$this->db->from();
Permite-lhe escrever a partir poro de sua consulta: $this->db->select(title, content, date); $this->db->from(mytable); $query = $this->db->get(); // Produces: SELECT title, content, date FROM mytable Nota: Tal como demonstrado anteriormente, a partir poro de sua consulta pode ser especicado no $this-> db-> get (), ento use independentemente do mtodo que preferir.
128
Code Igniter Verso 1.5.2 - Guia do Usurio Se voc usar mltiplas funes que sero chamadas encadeada juntamente AND entre eles: $this->db->where(name, $name); $this->db->where(title, $title); $this->db->where(status, $status); // WHERE = Joe AND title = boss AND status = active 2. Custom chave / valor patrimonial (Custom key/value method): Voc pode incluir um operador no primeiro parmetro, a m de controlar a comparao: $this->db->where(name !=, $name); $this->db->where(id <, $id); // Produces: WHERE name != Joe AND id < 45 3. Array associativo mtodo (Associative array method): $array = array(name => $name, title => $title, status => $status); $this->db->where($array); // Produces: WHERE name = Joe AND title = boss AND status = active Voc pode incluir seus prprios operadores que utilizam este mtodo tambm: $array = array(name != => $name, id < => $id, date > => $date); $this->db->where($array); 4. Custom texto (Custom string): Voc pode escrever as suas prprias clusulas manualmente: $where = name=Joe AND status=boss OR status=active; $this->db->where($where);
$this->db->like();
Essa funo permite-lhe gerar LIKE clusulas, til para fazer pesquisas. Nota: Todos os valores passados para essa funo so automaticamente escapou. 1. Simple chave / valor patrimonial (Simple key/value method): $this->db->like(title, $match); // Produces: WHERE title LIKE %match% Se voc usar mltiplas funes que sero chamadas encadeada juntamente AND entre eles:: $this->db->like(title, $match); $this->db->like(body, $match); // WHERE title LIKE %match% AND body LIKE %match%
129
Code Igniter Verso 1.5.2 - Guia do Usurio 2. Array associativo mtodo (Associative array method): $array = array(title => $match, page1 => $match, page2 => $match); $this->db->like($array); // WHERE title LIKE %match% AND page1 LIKE %match% AND page2 LIKE %match%
$this->db->groupby();
Permite-lhe escrever o GROUP BY poro de sua consulta: $this->db->groupby(title); // Produces: GROUP BY title Voc tambm pode passar uma matriz de mltiplos valores to bem: $this->db->groupby(array(title, date); // Produces: GROUP BY title, date
$this->db->having();
Permite-lhe escrever o HAVING poro de sua consulta: $this->db->having(user_id = 45); // Produces: HAVING user_id = 45 Voc tambm pode passar uma matriz de mltiplos valores to bem: $this->db->having(array(title = => My Title, id < => $id)); // Produces: HAVING title = My Title, id < 45
$this->db->orderby();
Permite-lhe denir uma clusula ORDER BY. O primeiro parmetro contm o nome da coluna que voc gostaria de por m. O segundo parmetro permite-lhe denir o rumo do resultado. As opes so asc ou desc ou RAND (). $this->db->orderby(title, desc); // Produces: ORDER BY title DESC Voc tambm pode passar a sua prpria string no primeiro parmetro: $this->db->orderby(title desc, name asc); // Produces: ORDER BY title DESC, name ASC
$this->db->limit();
Permite limitar o nmero de linhas que voc gostaria retornado pela consulta: $this->db->limit(10); // Produces: LIMIT 10 O segundo parmetro permite que voc dena um resultado compensado. $this->db->limit(10, 20); // Produces: LIMIT 20, 10 (in MySQL. Other databases have slightly dierent syntax)
130
*/ $object = new Myclass; $this->db->insert(mytable, $object); // Produces: INSERT INTO mytable (title, content, date) VALUES (My Title, My Content, My Date) O primeiro parmetro ir conter o nome da tabela, o segundo um array associativo de valores. Nota: Todos os valores so automaticamente escapou produzindo mais segura buscas.
$this->db->set();
Esta funo lhe permite denir valores para inseres ou atualizaes. Pode ser usado em vez de passar um array dados diretamente para a inserir ou atualizar funes: $this->db->set(name, $name); $this->db->insert(mytable); // Produces: INSERT INTO mytable (name) VALUES ({$name}) Se voc usar vrios funo chamada eles sero montados corretamente baseada em saber se voc est fazendo uma insero ou de uma actualizao: $this->db->set(name, $name); $this->db->set(title, $title); $this->db->set(status, $status); $this->db->insert(mytable); Diagramado por: edson jr - edsonthadeu@hotmail.com 131
Code Igniter Verso 1.5.2 - Guia do Usurio Voc tambm pode passar um array associativo para esta funo: $array = array(name => $name, title => $title, status => $status); $this->db->set($array); $this->db->insert(mytable); Ou um objeto: /* class Myclass { var $title = My Title; var $content = My Content; var $date = My Date; } */ $object = new Myclass; $this->db->set($object); $this->db->insert(mytable);
132
Code Igniter Verso 1.5.2 - Guia do Usurio Voc pode observar a utilizao dos $this-> db-> where (), permitindo-lhe denir o WHERE. Voc pode opcionalmente passar essas informaes diretamente na atualizao funcionar como uma string: $this->db->update(mytable, $data, id = 4); Ou como um array: $this->db->update(mytable, $data, array(id => $id)); Voc tambm pode usar o $this-> db-> set () funo acima descrito quando realizar atualizaes.
133
Transaes (Transactions)
Cdigo Igniter banco de dados do abstrao permite a voc usar transaes com bases de dados que suportam a operao segura tabela tipos. No MySQL, voc precisa estar executando InnoDB ou BDB sim, ento a tabela tipos mais comuns MyISAM. A maior parte das outras plataformas apoiar operaes de dados nativa. Se voc no est familiarizado com operaes recomendamos que voc encontrar um bom recurso online para aprender sobre eles para o seu banco de dados particular. As informaes a seguir assume que voc tenha um entendimento bsico de operaes.
Executando Transaes
Para executar suas consultas usando transaes que voc ir usar o $this->db->trans_start() e $this->db>trans_complete() funciona como segue: $this->db->trans_start(); $this->db->query(AN SQL QUERY...); $this->db->query(ANOTHER QUERY...); $this->db->query(AND YET ANOTHER QUERY...); $this->db->trans_complete(); Voc pode executar tantas as perguntas que voc quer entre o incio / funes completas e eles sero todos empenhados ou retirada baseado em sucesso ou fracasso de uma determinada consulta.
Gerenciando Erros
Se voc tiver ativado em seu relato erro cong / database.php arquivo que voc ver uma mensagem de erro se a norma cometer foi vencida. Se depurao desligado, voc pode gerenciar seus prprios erros como este: $this->db->trans_start(); $this->db->query(AN SQL QUERY...); $this->db->query(ANOTHER QUERY...); $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { // generate an error... or use the log_message() function to log your error }
134
A ativao Transaes
As transaces so ativadas automaticamente o momento em que voc usar $ this-> db-> trans_start (). Se voc quiser desativar transaes voc pode fazer isso usando $ this-> db-> trans_o (): $this->db->trans_o() $this->db->trans_start(); $this->db->query(AN SQL QUERY...); $this->db->trans_complete(); Quando as transaces so decientes, as suas questes sero auto-commited, como j acontece quando executando consultas sem transaes.
Modo de teste
Voc pode opcionalmente colocar o sistema em operao Modo de teste, o que far com que suas consultas para ser retirada - mesmo que as consultas produzir um resultado vlido. Para usar o modo teste basta denir o primeiro parmetro no $ this-> db-> trans_start () a funo TRUE: $this->db->trans_start(TRUE); // Query will be rolled back $this->db->query(AN SQL QUERY...); $this->db->trans_complete();
Code Igniter Verso 1.5.2 - Guia do Usurio 2. Voc pode recolher o campo nomes associados com qualquer dvida que correm ao chamar a funo de sua consulta resultar objeto: $query = $this->db->query(SELECT * FROM some_table) foreach ($query->list_elds() as $eld) { echo $eld; }
136
137
Code Igniter Verso 1.5.2 - Guia do Usurio Nota: Nem todas as plataformas de dados apoio tabela otimizao. $ this-> dbutil-> csv_from_result ($db_result) Permite a voc gerar um arquivo CSV a partir de uma consulta resultado. O primeiro parmetro da funo deve conter o resultado objeto de sua consulta. Exemplo: $this->load->dbutil(); $query = $this->db->query(SELECT * FROM mytable); echo $this->dbutil->csv_from_result($query); O segundo e terceiro parmetros permite que voc dena o delimitador e newline caracteres. Por padro guias so utilizados como o delimitador e \ n utilizada como uma nova linha. Exemplo: $delimiter = ,; $newline = \r\n; echo $this->dbutil->csv_from_result($query, $delimiter, $newline); Importante: Esta funo no gravar o arquivo para voc. Ela simplesmente cria o layout CSV. Se voc precisa para gravar o arquivo utilizar o File Helper.
Code Igniter Verso 1.5.2 - Guia do Usurio write_le(/path/to/mybackup.gz, $backup); / / Carregue o download ajudante e enviar o arquivo para o seu desktop $this->load->helper(download); force_download(mybackup.gz, $backup);
\n, \r, \r\n Tipo de newline para uso em seu arquivo SQL exportao.
140
A ativao cashing
Caching ativado em trs etapas: - Crie um diretrio gravvel em seu servidor onde o cache cheiros podem ser armazenados. - Dena o caminho para o seu esconderijo em sua aplicao pasta / cong / database.php arquivo. - Ativar cache do recurso, quer a nvel global atravs da denio de preferncia na sua candidatura / cong / database.php arquivo, ou manualmente, como descrito a seguir. Uma vez ativado, caching ir acontecer automaticamente sempre que uma pgina carregada que contm banco de dados SQL.
141
Funo Referncia
$this->db->cache_on() / $this->db->cache_o()
Manualmente permite / desabilita caching. Isto pode ser til se voc quiser manter certas consultas de ser armazenado em cache. Exemplo: / / Rode a caching $this->db->cache_on(); $query = $this->db->query(SELECT * FROM mytable); / / Turn o caching para uma consulta $this->db->cache_o(); $query = $this->db->query(SELECT * FROM members WHERE member_id = $current_user); / / Retorna caching $this->db->cache_on(); $query = $this->db->query(SELECT * FROM another_table); 142 Diagramado por: edson jr - edsonthadeu@hotmail.com
143
144
Assistente de Array
O arquivo Assistente de Array contem funes que auxiliam no trabalho com arrays.
element()
Permite que voc busque um item dentro de um array. A funo testa o ndice do array e seu valor. Se um valor existe ele ento retornado. Se um valor no existe ele retorna FALSE, ou qualquer outra mensagem que voc tenha especicado como padro no terceiro parmetro. Exemplo: $array = array(cor => vermelho, forma => redondo, size => ); // retorna vermelho echo element(cor, $array); // retorna NULL echo element(tamanho, $array, NULL);
random_element()
Pega um array como entrada e retorna um elemento randmico dele. Exemplo de uso: $citacoes = array( I nd that the harder I work, the more luck I seem to have. - Thomas Jeerson, Dont stay in bed, unless you can make money in bed. - George Burns, We didnt lose the game; we just ran out of time. - Vince Lombardi, If everything seems under control, youre not going fast enough. - Mario Andretti, Reality is merely an illusion, albeit a very persistent one. - Albert Einstein, Chance favors the prepared mind - Louis Pasteur ); echo random_element($citacoes);
145
Assistente de Cookie
O arquivo Assistente de Cookie contem funes que auxiliam no trabalho com cookies.
set_cookie()
Congura um cookie contendo os valores que voc especicar. Existe dois modos de passar a informao a esta funo de modo que o cookie pode ser congurado como: Mtodo de Array, e Parmetros Discretos(Discreet Parameters): Mtodo de Array Usando este mtodo, um array associativo passado ao primeiro parmetro: $cookie = array( name => O Nome do Cookie, value => O Valor, expire => 86500, domain => .algum-dominio.com, path => /, prex => meuprexo_, ); set_cookie($cookie); Notas: Apenas o nome(name) e valor(value) so obrigatrios. O tempo de expirao(expire) do cookie ajustado em segundos, que ser adicionado hora atual.No inclua a hora, apenas os segundos a partir do momento que voc deseja que o cookie seja vlido . Se o tempo de expirao estiver congurado como zero o cookie durar apenas o tempo em que o browser estiver aberto. Para apagar um cookie congure o tempo de expirao em branco/sem valor. Para cookies que abranjam todo site no importando como este seja requisitado, adicione sua URL ao domain comeando com um perdo, como este: .seu-dominio.com O caminho (path) normalmente desnecessrio desde que a funo congure um caminho raiz. O prexo apenas necessrio se voc precisar evitar colises de nomes dos cookies no seu servidor. Parmetros Discretos(Discreet Parameters) Se voc preferir, pode congurar o cookie passando os dados usando parmetros individuais: set_cookie($name, $value, $expire, $domain, $path, $prex);
get_cookie()
Permite que voc busque um cookie. O primeiro parmetro conter o nome do cookie que vocs est buscando: get_cookie(algum_cookie); 146 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio A funo retornar FALSE (booleano) se o item que voc estiver tentando recuperar no existir. O segundo parmetro opcional permite voc executar os dados atravs do ltro XSS. Este estar habilitado ao congurar o segundo parmetro para TRUE; get_cookie(algum_cookie, TRUE);
delete_cookie()
Permite que voc apague um cookie. A no ser que voc tenha congurado um caminho personalizado ou outros valores, apenas o nome do cookie necessrio: delete_cookie(nome); Esta funo, por sua vez, idntica set_cookie(), exceto pelo fato de no ter os parmetros de valor (value) e expirao(expire). Voc pode submeter um array de valores no primeiro parmetro ou pode congurar parmetros discretos(discreet parameters). delete_cookie($name, $domain, $path, $prex)
Assistente de Data
O arquivo Assistente de Data contem funes que auxiliam no trabalho com datas.
now()
Retorna a hora atual no format Unix timestamp, referente ou ao seu servidor local ou a hora GMT, baseada na hora referncia(time reference) congurada em seu arquivo de congurao. Se voc no pretende congurar sua hora mestre conforme a hora GMT (que normalmente o que voc faz se voc permite que cada usurio ajuste suas prprias conguraes de local e data) no haver benfcio em usar esta funo ao invs da funo time() do PHP.
mdate()
Esta funo idntica funo date() do PHP, a no ser pelo fato que ela lhe permite usar cdigos de data no estilo do MySQL, onde cada cdigo precedido por uma sinal de percentual: %Y %m %d etc. O benfcio de fazer datas desta maneira que voc no precisa se preocupar em das escape em nenhum caracter que no seja um cdigo de data como voc normalmente faria se usasse a funo date(). Exemplo: $stringdedata = Ano: %Y Ms: %m Dia: %d - %h:%i %a; $data = time(); echo mdate($stringdedata, $data); Se o timestamp no estiver includo no segundo parmetro a hora atual ser usada.
standard_date()
Permite gerar uma string de data em um dos muitos formatos padronizados. Exemplo: $formato = DATE_RFC822; $data = time(); echo standard_date($formato, $data); Diagramado por: edson jr - edsonthadeu@hotmail.com 147
Code Igniter Verso 1.5.2 - Guia do Usurio O primeiro parmetro deve conter o formato, o segundo deve conter a data como Unix timestamp. Formatos suportados: - DATE_ATOM - DATE_COOKIE - DATE_ISO8601 - DATE_RFC822 - DATE_RFC850 - DATE_RFC1036 - DATE_RFC1123 - DATE_RFC2822 - DATE_RSS - DATE_W3C
local_to_gmt()
Pega um Unix timestamp como entrada e retonrna como um GMT. Exemplo: $agora = time(); $gmt = local_to_gmt($agora);
gmt_to_local()
Pega um Unix timestamp (referente ao GMT) como entrada e o converte para um timestamp local basead no fuso e horrio de vero enviados. Exemplo: $timestamp = 1140153693; $fuso = UM8; $horario_de_verao = TRUE; echo gmt_to_local($timestamp, $fuso, $horario_de_verao); Nota: Para uma lista de fusos horrios veja a referncia no na desta pgina.
mysql_to_unix()
Pega um MySQL Timestamp como entrada e o retorna como Unix. Exemplo: $mysql = 20061124092345; $unix = mysql_to_unix($mysql);
unix_to_human()
Pega um Unix timestamp como entrada e o retorna num formato legvel ao homem com este prottipo: YYYY-MM-DD HH:MM:SS AM/PM Pode ser til se voc precisar exibir uma data num campo de formulrio para envio. A hora pode ser formatada com ou sem segundos e pode ser ajustada no formato Europeu ou Americano. Se apenas o timestamp for submetido ele retornar a hora sem segundos no formato Americano. Exemplo The time can be formatted with or without seconds, and it can be set to European or US format. If only the timestamp is submitted it will return the time without seconds formatted for the U.S.:
148
Code Igniter Verso 1.5.2 - Guia do Usurio $agora = time(); echo unix_to_human($agora); // Formato de hora Americano, sem segundos echo unix_to_human($agora, TRUE, us); // Formato Americano com segundos echo unix_to_human($agora, TRUE, eu); // Formato Europeu com segundos
human_to_unix()
Oposto funo acima.Pega a hora humana como entrada e retorna no formato Unix. Esta funo til se voc recebe a hora formatada pelo padro humano atravs de formulrio. Retornar FALSE (booleano) se a string de hora passada a ela no estiver formatada como indicado acima. Exemplo: $agora = time(); $humano = unix_to_human($agora); $unix = human_to_unix($humano);
timespan()
Formata o unix timestamp de modo que ele que similar a isto: 1 Ano, 10 Meses, 2 Semanas, 5 Dias, 10 Horas, 16 Minutos O primeiro parmetro deve conter um Unix timestamp. O segundo deve conter um timestamp maior ao primeiro timestamp. Se o segundo parmetro estiver vazio, a hora atual ser usada. A nalidade mais comum para esta funo mostrar quanto tempo se passou desde algum ponto no passado at agora. Exemplo: $hora_passada = 1079621429; $agora = time(); echo timespan($hora_passada, $agora); Nota: O texto gerado por esta funo encontrado no seguinte arquivo de idioma:language/<seu_idioma>/ date_lang.php
days_in_month()
Retorna o nmero de dias em um dado ms/ano. Returns the number of days in a given month/year. Computa anos bissextos na contagem. Exemplo: echo days_in_month(06, 2005); Se o segundo parmetro estiver vazio, o ano atual ser usado.
timezone_menu()
Geral um menu pull-down de fusos horrios, como este:
Este menu til se possui um site de cadastros onde cada usurio pode ajustar seu prprio fuso local. O primeiro parmetrp permite congurar o item selecionado do menu. Por exemplo, para deixar selecionado o fuso Pacic como padro voc deve fazer isto: echo timezone_menu(UM8); Por favor veja a referncia de fusos abaixo para ver os valores deste menu. O segundo parmetro permite congurar um class name de CSS para o menu. Nota: O texto contido no menu pode ser encontrado no seguindo arquivo de idioma: language/<seu_idioma>/ date_lang.php Diagramado por: edson jr - edsonthadeu@hotmail.com 149
Referncia de Fuso-horrio
A tabela a seguir mostra cada fuso com sua localizao. Fuso Horrio UM12 UM11 UM10 UM9 UM8 UM7 UM6 UM5 UM4 UM25 UM3 UM2 UM1 UTC UP1 UP2 UP3 UP25 UP4 UP35 UP5 UP45 UP6 UP7 UP8 UP9 UP85 UP10 UP11 UP12 Localizao (UTC - 12:00) Enitwetok, Kwajalien (UTC - 11:00) Nome, Midway Island, Samoa (UTC - 10:00) Hawaii (UTC - 9:00) Alaska (UTC - 8:00) Pacic Time (UTC - 7:00) Mountain Time (UTC - 6:00) Central Time, Mexico City (UTC - 5:00) Eastern Time, Bogota, Lima, Quito (UTC - 4:00) Atlantic Time, Caracas, La Paz (UTC - 3:30) Newfoundland (UTC - 3:00) Brazil, Buenos Aires, Georgetown, Falkland Is. (UTC - 2:00) Mid-Atlantic, Ascention Is., St Helena (UTC - 1:00) Azores, Cape Verde Islands (UTC) Casablanca, Dublin, Edinburgh, London, Lisbon, Monrovia (UTC + 1:00) Berlin, Brussels, Copenhagen, Madrid, Paris, Rome (UTC + 2:00) Kaliningrad, South Africa, Warsaw (UTC + 3:00) Baghdad, Riyadh, Moscow, Nairobi (UTC + 3:30) Tehran (UTC + 4:00) Adu Dhabi, Baku, Muscat, Tbilisi (UTC + 4:30) Kabul (UTC + 5:00) Islamabad, Karachi, Tashkent (UTC + 5:30) Bombay, Calcutta, Madras, New Delhi (UTC + 6:00) Almaty, Colomba, Dhakra (UTC + 7:00) Bangkok, Hanoi, Jakarta (UTC + 8:00) Beijing, Hong Kong, Perth, Singapore, Taipei (UTC + 9:00) Osaka, Sapporo, Seoul, Tokyo, Yakutsk (UTC + 9:30) Adelaide, Darwin (UTC + 10:00) Melbourne, Papua New Guinea, Sydney, Vladivostok (UTC + 11:00) Magadan, New Caledonia, Solomon Islands (UTC + 12:00) Auckland, Wellington, Fiji, Marshall Island
150
Assistente de Diretrio
O arquivo Assistente de Diretrio contem funes que auxiliam no trabalho com diretrio.
directory_map(diretorio fonte)
Esta funo l o caminho de diretrio especicado no primeiro parmetro e monta um array representativo dele e de seus arquivos contidos. Exemplo: $mapa = directory_map(./meudiretorio/); Nota: Caminhos so em sua maiorira relativos ao seu arquivo principal index.php. Subdiretrios contidos dentro do diretrio sero mapeados tambm. Se desejar mapear apenas o diretrio de nvel mais alto ajuste o segundo parmetro para true (booleano): $mapa = directory_map(./meudiretorio/, TRUE); Cada nome de diretrio ser um ndice do array, enquanto que seus arquivos sero indexados numericamente. Aqui est um exemplo de um array comum: Array ( [libraries] => Array ( [0] => benchmark.html [1] => cong.html [database] => Array ( [0] => active_record.html [1] => binds.html [2] => conguration.html [3] => connecting.html [4] => examples.html [5] => elds.html [6] => index.html [7] => queries.html ) [2] => email.html [3] => le_uploading.html [4] => image_lib.html [5] => input.html [6] => language.html [7] => loader.html [8] => pagination.html [9] => uri.html )
151
Assistente de Download
O Assistente de Download permite que voc baixe dados para seu desktop.
force_download(nomedoarquivo, dados)
Gera cabealhos de servidor que foram os dados a serem baixados para seu desktop. til para downloads de arquivos. O primeiro parmetro o nome que voc quer que o arquivo a ser baixado tenha, o segundo parmetro so os dados do arquivo. Exemplo: $dados = Aqui est algum texto!; $nome = meutexto.txt; force_download($nome, $dados); Caso queira baixar algum arquivo existente de seu servidor voc precisar l-lo dentro de uma string: $dados = le_get_contents(/caminho/para/foto.jpg); // L o contedo do arquivo $nome = minhafoto.jpg; force_download($nome, $dados);
Assistente de Arquivo
O arquivo Assistente de Diretrio contem funes que auxiliam no trabalho com arquivos.
read_le(caminho)
Retorna os dados contidos dentro do arquivo especicado no caminho. Exemplo: $string = read_le(./caminho/para/arquivo.php); O caminho pode ser relativo ou absoluto no servidor. Retornar FALSE (booleano) caso falhe. Nota: O caminho relativo ao seu arquivo index.php principal, NO ao seus arquivos controller ou view. O Code Igniter usa um front controller de modo que sempre ser relativo ao index principal do site. Se o seu servidor estiver executando uma restrio open_basedir esta funo talvez no funcione se tentar acessar um arquivo que esteja um nvel acima ao script chamado.
write_le(caminho, $dados)
Escreve os dados no arquivo especicado no caminho. Caso o arquivo no exista ele ser criado. Exemplo:
152
Code Igniter Verso 1.5.2 - Guia do Usurio $dados = Alguns dados de arquivo; if ( ! write_le(./caminho/para/arquivo.php, $dados)) { echo No foi possvel escrever no arquivo; } else { echo Dados escritos!; } Voc pode congurar opcionalmente o modo de escrita atravs do terceiro parmetro: write_le(./caminho/para/arquivo.php, $dados, r+); O modo padro wb Por favor veja o Guia de Usurio do PHP para as opes de modo disponveis. Nota: Para que esta funo escreva os dados no arquivo, este deve ter suas permisses conguradas para escrita (666, 777, etc.). Se o arquivo no existir ainda, ento o diretrio que o conter deve ter essas permisses de escrita. Nota: O caminho relativo ao seu arquivo index.php principal, NO ao seus arquivos controller ou view. O Code Igniter usa um front controller de modo que sempre ser relativo ao index principal do site.
delete_les(caminho)
Apaga TODOS os arquivos dentro do caminho fornecido. Exemplo: delete_les(/caminho/para/diretorio/); Se o segundo parmetro estiver congurado como true, qualquer diretrio dentro do caminho fornecido tambm ser apagado. Exemplo: delete_les(/caminho/para/diretorio/, TRUE); Nota: Os arquivos devem ter permisso de escrita ou pertencerem ao sistema de modo que possam ser apagados.
get_lenames(caminho/para/diretorio/)
Pega um caminho do servidor como entrada e retorna um array contendo os nomes de todos os arquivos dentro dele. O caminho do arquivo pode opcionalmente ser adicionado aos nomes de arquivos ao congurar o segundo parmentro como TRUE.
Assistente de Formulrio
O Assistente de Formulrio contem funes que auxiliam no trabalho com formulrio.
form_open()
Cria uma tag de abertura de formulrio com a URL base montada em cima de suas preferncias de congurao. Permitir que, opcionalmente, voc adicione atributos e campos hidden. A principal vantagem de usar esta tag ao invs de codicar manualmente seu prprio HTML que ela Diagramado por: edson jr - edsonthadeu@hotmail.com 153
Code Igniter Verso 1.5.2 - Guia do Usurio permite que seu site seja mais fcil de portar no caso de sua URL ser alterada. Aqui est um exemplo simples: echo form_open(email/send); O exemplo acima criar um formulrio que aponta para sua URL base mais os segmentos email/send, desta maneira: <form method=post action=http:/www.seu-site.com/index.php/email/send />
Adicionando Atributos
Atributos podem ser adicionados ao passar um array associativo como segundo parmetro, desta maneira: $attributes = array(class => email, id => meuform); echo form_open(email/send, $attributes); O exemplo acima criar um formulrio semelhante a este: <form method=post action=http:/www.seu-site.com/index.php/email/send class=email id=meuform />
form_open_multipart()
Esta funo totalmente idntica tag form_open() acima, exceto pelo daoto de adicionar o atributo multipart, que necessrio se voc deseja usar um formulrio para fazer upload de arquivos.
form_hidden()
Permite gerar campos hidden. Voc pode tambm enviar uma string nome/valor para criar um campo: form_hidden(username, joaoninguem); // Produzir: <input type=hidden name=username value=joaoninguem />
154
Code Igniter Verso 1.5.2 - Guia do Usurio Ou pode enviar um array associativo para criar mltiplos campos: $dados = array( name => Joo Ningum, email => joao@algum-site.com, url => http://www.algum-site.com ); echo form_hidden($dados); // Produzir: <input type=hidden name=name value=Joo Ningum /> <input type=hidden name=email value=joao@algum-site.com /> <input type=hidden name=url value=http://www.algum-site.com />
form_input()
Permite gerar um campo input text padro. Voc pode passar o name e o value do campo no primeiro e segundo parmetros: echo form_input(username, joaoninguem); Ou passar um array associativo contendo algum dado que deseje que o fomulrio contenha: $dados = array( name => username, id => username, value => joaoninguem, maxlength => 100, size => 50, style => width:50%, ); echo form_input($dados); // Produzir: <input type=text name=username id=username value=joaoninguem maxlength=100 size=50 style=width:50% /> Se quiser que o formulrio contenha algum dado adicional, como JavaScript, voc pode passar isso como uma string no terceiro parmetro: $js = onClick=some_function(); echo form_input(username, joaoninguem, $js);
form_password()
Esta funo idntica em todos os aspectos funo form_input() acima exceto pelo fato de gerar um campo como type=password (campo senha).
form_upload()
Esta funo idntica em todos os aspectos funo form_input() acima exceto pelo fato de congurar o campo como type=le (campo arquivo), permitindo o envio de arquivos ao servidor.
form_textarea()
Esta funo idntica em todos os aspectos funo form_input() acima exceto pelo fato de gerar um campo textarea. Nota: Ao invs dos atributos maxlength e size no exemplo acima, voc especicar Diagramado por: edson jr - edsonthadeu@hotmail.com 155
form_dropdown()
Permite criar um campo select padro (drop-down). O primeiro parmetro contm o nome do campo, o segundo parmetro conter um array associativo de opes, e o terceiro parmetro conter o valor que voc deseja deixar como selecionado. Exemplo: $opcoes = array( pequena => Camisa Pequena, media => Camisa Mdia, grande => Camisa Grande, extragrande => Camisa Extra-Grande, ); echo form_dropdown(camisas, $opcoes, grande); // Produzir: <select name=camisas> <option value=pequena>Camisa Pequena</option> <option value=media>Camisa Mdia</option> <option value=grande selected>Camisa Grande</option> <option value=extragrande>Camisa Extra-Grande</option> </select> Se quiser que a tag de abertura <select> contenha dados adicionais, como JavaScript, voc pode pass-los como uma string no quarto parmetro: $js = onChange=some_function(); echo form_dropdown(camisas, $opcoes, grande, $js);
form_checkbox()
Permite gerar um campo checkbox. Exemplo simples: echo form_checkbox(newsletter, aceitar, TRUE); // Produzir: <input type=checkbox name=newsletter value=aceitar checked=checked /> O terceiro parmetro conter um TRUE/FALSE boolenao que determina se o campo dever vir marcado ou no. Semelhante s outras funes de formulrio neste assistente, voc pode passar um array de atributos funo: $dados = array( name => novidades, id => novidades, value => aceitar, checked => TRUE, style => margin:10px, ); echo form_checkbox($dados); // Produzir: <input type=checkbox name=novidades id=novidades value=aceitar checked=checked style=margin:10px />
156
Code Igniter Verso 1.5.2 - Guia do Usurio Como em outras funes, se quiser que a tag contenha dados adicionais, como JavaScript, voc pode pass-los como uma string no quarto parmetro: $js = onClick=some_function(); echo echo form_checkbox(novidades, aceitar, TRUE, $js)
form_radio()
Esta funo idntica em todos os aspectos funo form_checkbox() acima exceto pelo fato de congurar o campo(input) como type=radio.
form_submit()
Permite voc gerar um boto submit padro. Exemplo simples: echo form_submit(meusubmit, Enviar!); // Produzir: <input type=submit name=meusubmit value=Enviar! /> Semelhante a outras funes, voc pode enviar um array associativo no primeiro parmetro se preferir congurar seus prprios atributos. O terceiro parmetro permite adicionar dados extar ao seu formulrio, como Javascript.
form_close()
Gera a tag de fechamento </form>. A nica vantagem de que permite que voc passe informaes que sero adicionadas aps a tag. Por exemplo: $string = </div></div>; echo form_close($string); // Produzir: </form> </div></div>
form_prep()
Permite que use com segurana HTML e caracteres como aspas dentro dos elementos do formulrio sem quebr-los para fora do formulrio. Considere este exemplo: $string = Aqui est uma string contendo um texto com aspas.; <input type=text name=meuform value=$string /> Mesmo que a string acima contenha aspas ela no causar a quebra do formulrio. A funo form_prep convert o HTML de modo que pode ser usado com segurana: <input type=text name=meuform value=<?php echo form_prep($string); ?> /> Nota: Se voc usar alguma das funes do assistente de formulrio listadas nesta pgina os valores do formulrio sero convertidos automaticamente, eno no preciso chamar esta funo. Use somente se voc estiver criando seus prprios elementos de formulrio.
157
Assistente de HTML
O Assistente de HTML contem funes que auxiliam no trabalho com HTML.
heading()
Permite criar tags HTML <h1>, O primeiro parmetro ir conter os dados, o segundo o tamanho do heading. Exemplo: echo heading(Bem-vindo!, 3); O cdigo acima produzir: <h3>Bem-vindo!</h3>
158
Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->helper(html); $lista = array( cores => array( vermelho, azul, verde ), formas => array( curva, quadrado, circulos => array( elipse, oval, esfera ) ), humor => array( feliz, chateado => array( derrotado => array( rejeitado, desolado, deprimido ), irritado, atravessado, brabo ) ) ); echo ul($lista); O cdigo acima produzir isto: <ul class=listanegritada id=minhalista> <li>cores <ul> <li>vermelho</li> <li>azul</li> <li>verde</li> </ul> </li> <li>formas <ul> <li>curva</li> <li>quadrado</li> <li>circulos <ul> <li>elipse</li> <li>oval</li> <li>esfera</li> </ul> </li> Diagramado por: edson jr - edsonthadeu@hotmail.com 159
Code Igniter Verso 1.5.2 - Guia do Usurio </ul> </li> <li>humor <ul> <li>feliz</li> <li>chateado <ul> <li>derrotado <ul> <li>rejeitado</li> <li>desolado</li> <li>deprimido</li> </ul> </li> <li>irritado</li> <li>atravesado</li> <li>brabo</li> </ul> </li> </ul> </li> </ul>
nbs()
Gera non-breaking spaces ( ) baseada no nmero que voc enviar. Exemplo: echo nbs(3); O cdigo acima produzir:
br()
Gera tags de quebra de linha (<br />) baseada no nmero que voc enviar. Exemplo: echo br(3); O cdigo acima produzir: <br /><br /><br />
Assistente de Segurana
O Assistente de Segurana contem funes funes relacionadas segurana.
xss_clean()
Prove um ltro Cross Site Script Hack. Esta funo um apelido/pseudnimo para a classe Input . Maiores informaes podem ser encontradas atravs do link fornecido.
dohash()
Permite criar um um modo de hash SHA1 ou MD5 apropriado para encriptar senhas. Ir usar o SHA1 por 160 Diagramado por: edson jr - edsonthadeu@hotmail.com
Code Igniter Verso 1.5.2 - Guia do Usurio padro. Exemplos: $str = dohash($str); // SHA1 $str = dohash($str, md5); // MD5
strip_image_tags()
Esta uma funo de segurana que ir tirar as tags de imagem de uma string. Deixando apenas,em texto puro, a URL da imagem. $string = strip_image_tags($string);
encode_php_tags()
Esta uma funo de segurana que converte tags PHP em entities. Nota: Se voc usar a funo de ltro XSS ele far isso automaticamente. $string = encode_php_tags($string);
Assistente de Smiley
O Assistente de Smiley contem funes que permitem que voc tenha controle sobre smileys (emoticons).
Viso Geral
O Assistente de Smiley possui um renderizador que pega smileys de texto puro como :-) e transforma em representao grca como . Permite tambm que seja exibido um conjunto de imagens de emoticons que quando clicados sero inseridos num campo de formulrio. Por exemplo, se voc tiver um blog que permita o comentrio de usurios poder, ento, exibir os emoticons perto do campo de comentrios. Seus usurios podero clicar no emoticon e com a ajuda de algum Javascript este ser colocado no campo do formulrios.
O Controller
Em sua pasta application/controllers/, crie um arquivo chamado smileys.php e cole o cdigo abaixo nele. Importante: Mude a URL na funo get_clickable_smileys() abaixo de modo que aponte para sua pasta smiley. Voc notar que alm do assistente de smiley tambm estamos usando a Classe Table.
161
Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Smileys extends Controller { function Smileys() { parent::Controller(); } function index() { $this->load->helper(smiley); $this->load->library(table); $image_array = get_clickable_smileys(http://www.your-site.com/images/smileys/); $col_array = $this->table->make_columns($image_array, 8); $data[smiley_table] = $this->table->generate($col_array); } $this->load->view(smiley_view, $data);
Em sua pasta application/views/, crie um arquivo chamado smiley_view.php e cole este cdigo nele: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/helpers/smiley_ helper.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 20:00:00 GMT --> <head> <title>Smileys</title> <?php echo js_insert_smiley(blog, comments); ?> </head> <body> <form name=blog> <textarea name=comments cols=40 rows=4></textarea> </form> <p>Clique para inserir um smiley!</p>a <?php echo $smiley_table; ?> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/helpers/smiley_ helper.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 20:00:00 GMT --> </html> Depois de criar o controller e a view acima, carregue-os visitando http://www.seu-site.com/index.php/ smileys/
162
Referncia da Funo
get_clickable_smileys()
Retorna um array contendo suas imagens de smiley dentro de um link. Voc deve fornecer a URL para sua pasta de smiley atravs do primeiro parmetro: $image_array = get_clickable_smileys(http://www.seu-site.com/images/smileys/);
js_insert_smiley()
Gera o javascript que permite as imagens serem clicadas e inseridas dentro do campo de formulrio. O primeiro parmetro deve conter o nome de seu formulrio, o segundo deve conter o nome do campo. Esta funo feita para ser colocada dentro da seo <head> de sua pgina web. <?php echo js_insert_smiley(blog, comments); ?>
parse_smileys()
Pega uma string de texto como entrada e substitui o texto pelos smileys/emoticons equivalentes. O primeiro parmetro deve conter sua string, o segundo deve conter a URL de sua pasta de smiley: $str = Aqui esto alguns emoticons: :-) ;-); $str = parse_smileys($str, http://www.seu-site.com/ images/smileys/); echo $str;
Assistente de String
O Assistente de String contem funes que auxiliam no trabalho com strings.
random_string()
Gera uma string randmica baseada no tipo e no comprimento que voc especicar. til para criar senhas ou hashes randmicos. O primeiro parmetro especica o tipo de string, o segundo especica o comprimento. As seguintes opes esto disponveis: - alnum: String alfa-numrica com caracteres em caixa alta e baixa. - numeric: String numrica. - nozero: String numrica sem zeros. - unique: Encriptada com MD5 e uniquid(). Nota: O paremtro de comprimento no disponvel para este tipo. Retorna uma string de comprimento xo de 33 caracteres. Exemplo de Uso: echo random_string(alnum, 16);
alternator()
Permite que dois ou mais itens alternem-se entre si quando dentro de um loop. Exemplo: Diagramado por: edson jr - edsonthadeu@hotmail.com 163
Code Igniter Verso 1.5.2 - Guia do Usurio for ($i = 0; $i < 10; $i++) { echo alternator(string um, string dois); } Voc pode adicionar quantos parmetros quiser e a cada interao de seu loop o prximo tem ser retornado. for ($i = 0; $i < 10; $i++) { echo alternator(um, dois, trs, quatro, cinco); } Nota: Para usar chamadas mltiplas separadas a esta funo basta chamar a funo sem argumento para reinicializ-la.
repeater()
Gera cpias repetidas dos dados que voc enviar. Exemplo: $string = \n; echo repeater($string, 30); O cdigo acima gerar 30 novas linhas.
Assistente de Texto
O Assistente de Texto contem funes que auxiliam no trabalho com texto.
word_limiter()
Trunca uma string para o nmero de palavras especicado. Exemplo: $string = Aqui temos um belo texto de oito palavras.; $string = word_limiter($string, 4); // Retorna: Aqui temos um belo O terceiro parmetro um suxo opcional adicionado string. Por padro adiciona-se reticncias.
character_limiter()
Trunca uma string para o nmero de caracteres especicado. Mantem a integridade das palavras de modo que a contagem pode ter uma pequena variao para mais ou para menos do que voc especicar. Exemplo: $string = Aqui temos um belo texto de oito palavras.; $string = character_limiter($string, 20); // Retorna: Aqui temos um belo O terceiro parmetro um suxo opcional adicionado string. Por padro adiciona-se reticncias.
164
ascii_to_entities()
Converte valores ASCII em character entities, incluindo high ASCII e caracteres MS Word que podem causar problemas quando usado em uma pgina da web, de modo que possam ser mostrados sem erros no obstante conguraes do browser ou serem armazenados sem problemas em uma base de dados. Eiste algumas dependncias no seu conjunto de caracteres suportados pelo servidor, portanto isto pode no ser 100% convel, mas na maioria dos casos ele identicar corretamente os caracteres foram do escopo normal (acentuados por exemplo). Exemplo: $string = ascii_to_entities($string);
entities_to_ascii()
Esta funo faz o oposto da anterior, transforma character entities de volta em ASCII.
word_censor()
Habilita a censura de palavras de uma determinada string. O primeiro parmetrp conter a string original. O segundo conter uma array de palavras proibidas. O terceiro (opcional) conter um valor substituto para as palavras. Se no especicado elas sero subsituidas por sinal de jogo da velha: ####. Exemplo: $proibidas = array(txico, maconha, cocaina, cigarro); $string = word_censor($string, $proibidas, eeeeeeepppaaaa!);
highlight_code()
Colore uma string de cdigo(PHP, HTML, etc.). Exemplo: $string = highlight_code($string); A funo usa a funo highlight_string() do PHP, as cores usadas so as especicadas no seu arquivo php. ini.
highlight_phrase()
Destacar uma frase dentro de uma string de texto. O primeiro parmetro conter a string original, o segundo a frase que deseja destacar. Os terceiro e quarto parmetros contero as tags HTML de abertura e fechamento onde a frase estar contida. Exemplo: $string = Aqui est um belo texto sobre nada em especial.; $string = highlight_phrase($string, belo texto, <span style=color:#990000>, </span>); O cdigo acima retornar: Aqui est um belo texto sobre nada em especial.
word_wrap()
Quebra a linha de texto conforme o nmero de caracteres especicados mantendo as palavras inteiras. Exemplo: $string = Aqui temos um string simples de texto que nos ajudar a demonstrar esta funo; echo word_wrap($string, 25); // Produzir: Aqui temos um string simples de texto que nos ajudar a demonstrar esta funo
165
Assistente de Tipograa
O Assistente de Tipograa contem funes que auxiliam a formatar texto de modo semanticamente relevante.
auto_typography()
Formata o texto de modo a car tipogracamente e semanticamente correto o HTML. Pega uma string como entrada e retorna com a seguinte formatao: - Envolve os pargrafos com <p></p> (procura por duas linhas em branco para identicar pargrafos). - Converte quebras de linha em <br />, exceto aquelas que aparecerem dentro de tags <pre>. - Elementos block, como tags <div>, no so envolvidos dentro de tags pargrafos, mas seus contedos de texto sim caso sejam pargafos. - Aspas so convertidas para suas entities corretas, exceto aquelas que aparecerem dentro de tags. - Apstrofos so convertidos para entities. - Traos duplos (como -- esse ou como--esse) so convertidos para traosassim. -Trs perodos consecutivos precedendo ou seguintes a uma palavra so convertidos para reticncicas - Espaos duplos seguindo sentenas so convertidos para non-breaking spaces para imitar o espao. Exemplo de Uso: $string = auto_typography($string); Nota: Formatao tipogrca pode causar sobrecarga de processamento, principalmente se voc possuir muito contedo a ser formatado. Se optar por usar esta funo talvez queira considerar fazer caching de suas pginas.
nl2br_except_pre()
Converte novas linhas em tags <br />a no ser que estas estejam dento de tags <pre>. Esta funo idntica funo nl2br() nativa do PHP, exceto pelo fato de esta ltima ignorar tags <pre>. Exemplo de Uso: $string = nl2br_except_pre($string);
166
Assistente de URL
O Assistente de XML contem funes que auxiliam no trabalho com URLs.
site_url()
Retorna a URL de seu site, conforme especicada no seu arquivo de congurao. O arquivo index.php (ou algum outro que seja a index_page de seu confrome seu arquivo de congurao) ser adicionado URL, como qualquer segmento URI que voc passar para a funo. Sinta-se encorajado a usar esta funo sempre que precisar gerar uma URL local de modo que suas pginas tornem-se muito mais portveis na eventualidade de mudanas em sua URL. Segmentos podem ser passados (opcionalmente) para a funo como uma string ou array. Aqui est um exemplo de string: echo site_url(novidades/local/123); O exemplo acima retornar algo assim: http://www.seu-site.com/index.php/novidades/local/123 Aqui est um exemplo de segmentos passados como um array: $segmentos = array(novidades, local, 123); echo site_url($segments);
base_url()
Retorna a URL base do seu site, conforme especicado no seu arquivo de congurao. Exemplo: echo base_url();
index_page()
Retorna a pgina index do seu site, conforme especicado no seu arquivo de congurao. Exemplo: echo index_page();
anchor()
Cria um link HTML baseado na URL local de seu site: <a href=http://www.seu-site.com>Clique aqui</a> A tag tem trs parmetros opcionais: anchor(segmentos uri, texto, atributos) O primeiro parmetro pode conter qualquer segmento que voc queira adicionar URL. Como com a funo site_url() acima, segmentos podem ser uma string ou um array. Nota: Se voc estiver montando links internos para sua aplicao no inclua a URL base (http://...). Isto ser adicionado automaticamente conforme informao especicada no seu arquivo de congurao. Inclua apenas os segmentos de URI que voc deseje adicionar URL. O segundo parmetro o texto que o link vai mostrar como clicvel. Se deixado em branco ento a URL ser usada. Diagramado por: edson jr - edsonthadeu@hotmail.com 167
Code Igniter Verso 1.5.2 - Guia do Usurio O terceiro parmetro pode conter uma lista de atributos que voc gostaria de adicionar ao link(tag). Os atributos podem ser uma simples string ou um array associativo. Aqui esto alguns exemplos: echo anchor(novidades/local/123, Minhas Novidades); Produzir: <a href=http://www.seu-site.com/index.php/novidades/local/123 Novidades>Minhas Novidades</a> echo anchor(novidades/local/123, Minhas Novidades, array(title => As melhores!)); Produzir: <a href=http://www.seu-site.com/index.php/novidades/local/123title=As melhores!>Minhas Novidades</a> title=Minhas
anchor_popup()
Quase idntico funo anchor() exceto que abrir a url em uma nova janela. Voc pode especicar atributos Javascript no terceiro parmetro para controlar como a janela ser aberta. Se o terceiro parmetro no estiver congurado ento a nova janela ser aberta conforme as conguraes do navagador do usurio. Aqui est um exemplo com atributos: $atributos = array( width => 800, height => 600, scrollbars => yes, status => yes, resizable => yes, screenx => 0, screeny => 0 ); echo anchor_popup(novidades/local/123, Click Me!, $atributos); Nota: Os atributos acima so funes padro sendo que voc somente precisar declar-las se precisar de algo diferente disso. Se voc quiser que a funo use todos os valores padres basta passar um array vazio como terceiro parmetro: echo anchor_popup(novidades/local/123, Clique me!, array());
mailto()
Cria uma tag link para e-mail. Exemplo de uso: echo mailto(eu@meu-site.com, Clique aqui para falar comigo); Como com a tag anchor() acima, voc pode declarar atributos usando o terceiro parmetro.
safe_mailto()
idntico funo acima exceto por escrever uma verso ofuscada da tag mailto usando nmeros escritos com Javascript para ajudar a bloquear o rastreio dos emails por robs de spam.
auto_link()
Transforma URLs e emails (que esto em strings) automaticamente em links. Exemplo: $string = auto_link($string); O segundo parmetro determina se URLs e emails sero convertidos ou somente um ou outro. O padro a transformao de ambos se o parmetro no for especicado
168
Code Igniter Verso 1.5.2 - Guia do Usurio Converte apenas URLs: $string = auto_link($string, url); Converte apenas endereos de Email: $string = auto_link($string, email); O terceiro parmetro determina se os links sero aberto em uma nova janela. O valor pode ser TRUE ou FALSE (booleano): $string = auto_link($string, both, TRUE);
url_title()
Pega uma string como entrada e cria uma string URL amigvel. til se, por exemplo, voc tiver um blog no qual gostaria de usar o ttulo de seus artigos na URL. Exemplo: $title = O que h de errado com o CSS?; $url_title = url_title($title); // Produz: o-que-ha-de-errado-com-o-css O segundo parmetro determina o delimitador de palavra. Por padro traos sero usados. As opes so The second parameter determines the word delimiter. By default dashes are used. Options are: trao, ou underscore: $title = O que h de errado com o CSS?; $url_title = url_title($title, underscore); // Produces: o_que_ha_de_errado_com_o_css
prep_url()
Esta funo adicionar http:// se estiver faltando na URL. Passe a string URL para a funo deste modo: $url = www.algum-site.com; $url = prep_url($url);
redirect()
Faz um header redirect(redirecionamento pelo servidor) para a URI local especicada. Assim como outras funes neste assistente, esta designada para redirecionar a uma URL local dentro do seu site. Voc no especicar a URL absoluta do seu site, mas somente os segmentos URI do controller que voc quer abrir. A funo montar a URL baseada nos valores declarados no seu arquivo de congurao. O segundo parmetro permite que voc escolha entre o mtodo location ou o mtodo refresh. O location mais rpido, porm em servidores Windows pode ser um problema algumas vezes. Exemplo: if ($logged_in == FALSE) { redirect(/login/form/, refresh); } Nota: Para esta funo funcionar ela deve ser declarada antes que qualquer coisa que gere uma sada ao browser, pois ela usa cabealhos de servidor(server headers).
169
Assistente de XML
O Assistente de XML contem funes que auxiliam no trabalho com dados XML.
170