CodeIgniter - Guida rapida

CodeIgniter è un framework per lo sviluppo di applicazioni, che può essere utilizzato per sviluppare siti Web, utilizzando PHP. È un framework Open Source. Ha un set di funzionalità molto ricco, che aumenterà la velocità del lavoro di sviluppo del sito web.

Se conosci bene PHP, CodeIgniter renderà il tuo compito più facile. Ha un set molto ricco di librerie e helper. Utilizzando CodeIgniter, risparmierai molto tempo se stai sviluppando un sito web da zero. Non solo, un sito Web integrato in CodeIgniter è anche sicuro, poiché ha la capacità di prevenire vari attacchi che avvengono attraverso i siti Web.

Caratteristiche di CodeIgniter

Alcune delle caratteristiche importanti di CodeIgniter sono elencate di seguito:

  • Sistema basato su Model-View-Controller

  • Peso estremamente leggero

  • Classi di database con funzionalità complete con supporto per diverse piattaforme.

  • Supporto per database di Query Builder

  • Convalida di moduli e dati

  • Sicurezza e filtro XSS

  • Gestione delle sessioni

  • Classe di invio di e-mail. Supporta allegati, e-mail HTML / di testo, più protocolli (sendmail, SMTP e Mail) e altro ancora.

  • Libreria di manipolazione delle immagini (ritaglio, ridimensionamento, rotazione, ecc.). Supporta GD, ImageMagick e NetPBM

  • Classe di caricamento file

  • Classe FTP

  • Localization

  • Pagination

  • Crittografia dei dati

  • Benchmarking

  • Caching della pagina intera

  • Registrazione degli errori

  • Profilazione dell'applicazione

  • Classe di calendario

  • Classe agente utente

  • Classe di codifica zip

  • Classe motore modello

  • Trackback Class

  • Libreria XML-RPC

  • Classe di unit test

  • URL compatibili con i motori di ricerca

  • Routing URI flessibile

  • Supporto per hook e estensioni di classe

  • Ampia libreria di funzioni "helper"

È molto facile installare CodeIgniter. Segui i passaggi indicati di seguito:

  • Step-1- Scarica CodeIgniter dal link CodeIgniter

  • Step-2 - Decomprimere la cartella.

  • Step-3 - Carica tutti i file e le cartelle sul tuo server.

  • Step-4 - Dopo aver caricato tutti i file sul tuo server, visita l'URL del tuo server, ad es. Www.domain-name.com.

Visitando l'URL, vedrai la seguente schermata:

L'architettura dell'applicazione CodeIgniter è mostrata di seguito.

  • Come mostrato nella figura, ogni volta che una richiesta arriva a CodeIgniter, andrà prima a index.php pagina.

  • Nella seconda fase, Routing deciderà se passare questa richiesta al passaggio 3 per la memorizzazione nella cache o se passare questa richiesta al passaggio 4 per il controllo di sicurezza.

  • Se la pagina richiesta è già in formato Caching, poi Routing passerà la richiesta al passaggio 3 e la risposta tornerà all'utente.

  • Se la pagina richiesta non esiste in Caching, poi Routing passerà la pagina richiesta al passaggio 4 per Security controlli.

  • Prima di passare la richiesta a Application Controller, il Securitydei dati inviati viene controllato. Dopo ilSecurity controlla il Application Controller carichi necessari Models, Libraries, Helpers, Plugins e Scripts e trasmetterlo a View.

  • Il View eseguirà il rendering della pagina con i dati disponibili e la trasmetterà per Caching. Poiché la pagina richiesta non è stata memorizzata nella cache prima, questa volta verrà memorizzata nella cacheCaching, per elaborare rapidamente questa pagina per richieste future.

Struttura delle directory

L'immagine sotto mostra la struttura della directory di CodeIgniter.

La struttura della directory CodeIgniter è divisa in 3 cartelle:

  • Application
  • System
  • User_guide

Applicazione

Come indica il nome, la cartella dell'applicazione contiene tutto il codice dell'applicazione che stai creando. Questa è la cartella in cui svilupperai il tuo progetto. La cartella dell'applicazione contiene diverse altre cartelle, spiegate di seguito:

  • Cache- Questa cartella contiene tutte le pagine memorizzate nella cache dell'applicazione. Queste pagine memorizzate nella cache aumenteranno la velocità complessiva di accesso alle pagine.

  • Config- Questa cartella contiene vari file per configurare l'applicazione. Con l'aiuto diconfig.phpfile, l'utente può configurare l'applicazione. Utilizzandodatabase.php file, l'utente può configurare il database dell'applicazione.

  • Controllers- Questa cartella contiene i controller della tua applicazione. È la parte fondamentale della tua applicazione.

  • Core - Questa cartella conterrà la classe base della tua applicazione.

  • Helpers - In questa cartella, puoi mettere la classe helper della tua applicazione.

  • Hooks - I file in questa cartella forniscono un mezzo per attingere e modificare il funzionamento interno del framework senza hackerare i file core.

  • Language - Questa cartella contiene file relativi alla lingua.

  • Libraries - Questa cartella contiene i file delle librerie sviluppate per la tua applicazione.

  • Logs - Questa cartella contiene i file relativi al registro del sistema.

  • Models - L'accesso al database verrà inserito in questa cartella.

  • Third_party - In questa cartella, puoi inserire qualsiasi plug-in, che verrà utilizzato per la tua applicazione.

  • Views - I file HTML dell'applicazione verranno inseriti in questa cartella.

Sistema

Questa cartella contiene codici di base CodeIgniter, librerie, helper e altri file, che aiutano a semplificare la codifica. Queste librerie e helper vengono caricati e utilizzati nello sviluppo di app Web.

Questa cartella contiene tutto il codice di conseguenza CodeIgniter, organizzato in varie cartelle -

  • Core- Questa cartella contiene la classe principale di CodeIgniter. Non modificare nulla qui. Tutto il tuo lavoro si svolgerà nella cartella dell'applicazione. Anche se il tuo intento è estendere il core CodeIgniter, devi farlo con gli hook e gli hook risiedono nella cartella dell'applicazione.

  • Database - La cartella del database contiene i driver del database principale e altre utilità del database.

  • Fonts - La cartella dei caratteri contiene informazioni e utilità relative ai caratteri.

  • Helpers - La cartella degli helper contiene gli helper CodeIgniter standard (come data, cookie e helper URL).

  • Language- La cartella della lingua contiene i file della lingua. Puoi ignorarlo per ora.

  • Libraries- La cartella delle librerie contiene le librerie CodeIgniter standard (per aiutarti con e-mail, calendari, caricamenti di file e altro). Puoi creare le tue librerie o estendere (e persino sostituire) quelle standard, ma quelle verranno salvate nel fileapplication/libraries directory per tenerli separati dalle librerie CodeIgniter standard salvate in questa particolare cartella.

Guida utente

Questa è la tua guida per l'utente a CodeIgniter. È fondamentalmente la versione offline della guida per l'utente sul sito Web di CodeIgniter. Usando questo, si possono imparare le funzioni di varie librerie, helper e classi. Si consiglia di consultare questa guida per l'utente prima di creare la prima app Web in CodeIgniter.

Oltre a queste tre cartelle, c'è un altro file importante chiamato "index.php". In questo file, possiamo impostare l'ambiente dell'applicazione e il livello di errore e possiamo definire il nome della cartella del sistema e dell'applicazione. Si consiglia di non modificare queste impostazioni se non si dispone di conoscenze sufficienti su ciò che si intende fare.

CodeIgniter si basa su Model-View-Controller (MVC) development pattern. MVC è un approccio software che separa la logica dell'applicazione dalla presentazione. In pratica, consente alle tue pagine web di contenere uno script minimo poiché la presentazione è separata dallo scripting PHP.

  • Il Modelrappresenta le tue strutture dati. In genere, le classi del modello conterranno funzioni che aiutano a recuperare, inserire e aggiornare le informazioni nel database.

  • Il Viewsono le informazioni che vengono presentate a un utente. Una vista sarà normalmente una pagina web, ma in CodeIgniter una vista può anche essere un frammento di pagina come un'intestazione o un piè di pagina. Può anche essere una pagina RSS o qualsiasi altro tipo di "pagina".

  • Il Controller funge da intermediario tra il modello, la vista e qualsiasi altra risorsa necessaria per elaborare la richiesta HTTP e generare una pagina web.

Controller

Un controller è un semplice file di classe. Come suggerisce il nome, controlla l'intera applicazione tramite URI.

Creazione di un controller

Per prima cosa, vai a application/controllerscartella. Lì troverai due file,index.html e Welcome.php. Questi file vengono forniti con CodeIgniter.

Conserva questi file così come sono. Crea un nuovo file con lo stesso percorso denominato "Test.php". Scrivi il seguente codice in quel file -

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

Il Test class estende una classe incorporata chiamata CI_Controller. Questa classe deve essere estesa ogni volta che si desidera creare la propria classe Controller.

Chiamare un controller

Il controller di cui sopra può essere chiamato tramite URI come segue:

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

Notare la parola "test"Nell'URI sopra dopo index.php. Indica il nome della classe del controller. Poiché abbiamo dato il nome del responsabile del trattamento "Test", stiamo scrivendo "test"Dopo index.php. Il nome della classe deve iniziare conuppercase letter ma dobbiamo scrivere lowercase letterquando chiamiamo quel controller tramite URI. La sintassi generale per chiamare il controller è la seguente:

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

Creazione e chiamata del metodo del costruttore

Modifichiamo la classe precedente e creiamo un altro metodo chiamato "hello".

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

Possiamo eseguire il controller di cui sopra nei seguenti tre modi:

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

Dopo aver visitato il primo URI nel browser, otteniamo l'output come mostrato nell'immagine sotto. Come puoi vedere, abbiamo ottenuto l'output del metodo "index", Anche se non abbiamo passato il nome del metodo all'URI. Abbiamo utilizzato solo il nome del controller nell'URI. In tali situazioni, CodeIgniter chiama il metodo predefinito "index".

Visitando il secondo URI nel browser, otteniamo lo stesso output mostrato nell'immagine sopra. Qui, abbiamo passato il nome del metodo dopo il nome del controller nell'URI. Poiché il nome del metodo è "index", Stiamo ottenendo lo stesso output.

Visitando il terzo URI nel browser, otteniamo l'output come mostrato nell'immagine sotto riportata. Come puoi vedere, stiamo ottenendo l'output del metodo "hello"Perché abbiamo superato"hello"Come nome del metodo, dopo il nome del controller"test"Nell'URI.

Punti da ricordare

  • Il nome della classe controller deve iniziare con una lettera maiuscola.

  • Il controller deve essere chiamato con la lettera minuscola.

  • Non utilizzare lo stesso nome del metodo della classe genitore, poiché sovrascriverà la funzionalità della classe genitore.

Visualizzazioni

Questa può essere una pagina web semplice o complessa, che può essere chiamata dal controller. La pagina web può contenere intestazione, piè di pagina, barra laterale ecc. La vista non può essere chiamata direttamente. Creiamo una vista semplice. Crea un nuovo file sottoapplication/views con il nome "test.php"E copia il codice indicato di seguito in quel file.

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

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

Cambia il codice di application/controllers/test.php file come mostrato di seguito.

Caricamento della vista

La vista può essere caricata con la seguente sintassi:

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

Dove nome è il file di visualizzazione, di cui viene eseguito il rendering. Se hai pianificato di memorizzare il file di visualizzazione in una directory, puoi utilizzare la seguente sintassi:

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

Non è necessario specificare l'estensione come php, a meno che non venga utilizzato qualcosa di diverso da .php.

Il metodo index () chiama il metodo view e passa il "test" come argomento al metodo view () perché abbiamo memorizzato la codifica html in "test.php"File in application/views/test.php.

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

Ecco l'output del codice sopra -

Il seguente diagramma di flusso illustra come funziona tutto:

Modelli

Le classi dei modelli sono progettate per funzionare con le informazioni nel database. Ad esempio, se si utilizza CodeIgniter per gestire gli utenti nella propria applicazione, è necessario disporre di una classe modello, che contiene funzioni per inserire, eliminare, aggiornare e recuperare i dati degli utenti.

Creazione di una classe modello

Le classi del modello sono archiviate in application/modelsdirectory. Il codice seguente mostra come creare una classe modello in CodeIgniter.

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

Dove Model_name è il nome della classe del modello che si desidera fornire. Ogni classe del modello deve ereditare la classe CI_Model di CodeIgniter. La prima lettera della classe del modello deve essere in maiuscolo. Di seguito è riportato il codice per la classe del modello degli utenti.

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

La classe del modello sopra deve essere salvata come User_model.php. Il nome della classe e il nome del file devono essere gli stessi.

Caricamento del modello

Il modello può essere richiamato nel controller. Il codice seguente può essere utilizzato per caricare qualsiasi modello.

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

Dove model_name è il nome del modello da caricare. Dopo aver caricato il modello puoi semplicemente chiamare il suo metodo come mostrato di seguito.

$this->model_name->method();

Modelli a caricamento automatico

Potrebbero esserci situazioni in cui desideri una classe modello in tutta l'applicazione. In tali situazioni, è meglio caricarlo automaticamente.

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

Come mostrato nella figura sopra, passare il nome del modello nell'array che si desidera caricare automaticamente e verrà caricato automaticamente, mentre il sistema è in stato di inizializzazione ed è accessibile tramite l'applicazione.

Aiutanti

Come suggerisce il nome, ti aiuterà a costruire il tuo sistema. È diviso in piccole funzioni per servire diverse funzionalità. In CodeIgniter sono disponibili numerosi helper, elencati nella tabella seguente. Possiamo anche costruire i nostri aiutanti.

Gli helper vengono generalmente memorizzati nel file system/helpers, o application/helpers directory. Gli helper personalizzati vengono archiviati inapplication/helpers directory e gli helper di sistema sono archiviati in system/helpersdirectory. CodeIgniter cercherà per primo nel tuo fileapplication/helpers directory. Se la directory non esiste o l'helper specificato non si trova, CodeIgniter cercherà invece nel tuo file globalesystem/helpers/ directory. Ogni helper, sia personalizzato che di sistema, deve essere caricato prima di utilizzarlo.

SN Nome e descrizione dell'assistente
1

Array Helper

Il file Array Helper contiene funzioni che aiutano a lavorare con gli array.

2

CAPTCHA Helper

Il file Helper CAPTCHA contiene funzioni che aiutano nella creazione di immagini CAPTCHA.

3

Cookie Helper

Il file Cookie Helper contiene funzioni che aiutano a lavorare con i cookie.

4

Date Helper

Il file Date Helper contiene funzioni che ti aiutano a lavorare con le date.

5

Directory Helper

Il file Directory Helper contiene funzioni che aiutano a lavorare con le directory.

6

Download Helper

Download Helper ti consente di scaricare i dati sul desktop.

7

Email Helper

Email Helper fornisce alcune funzioni di assistenza per lavorare con la posta elettronica. Per una soluzione di posta elettronica più solida, vedere Classe di posta elettronica di CodeIgniter.

8

File Helper

Il file File Helper contiene funzioni che aiutano a lavorare con i file.

9

Form Helper

Il file Form Helper contiene funzioni che aiutano a lavorare con i moduli.

10

HTML Helper

Il file HTML Helper contiene funzioni che aiutano a lavorare con HTML.

11

Inflector Helper

Il file Inflector Helper contiene funzioni che ti consentono di cambiare le parole in plurale, singolare, camel case, ecc.

12

Language Helper

Il file Language Helper contiene funzioni che aiutano a lavorare con i file di lingua.

13

Number Helper

Il file Number Helper contiene funzioni che ti aiutano a lavorare con i dati numerici.

14

Path Helper

Il file Path Helper contiene funzioni che consentono di lavorare con i percorsi dei file sul server.

15

Security Helper

Il file Security Helper contiene funzioni relative alla sicurezza.

16

Smiley Helper

Il file Smiley Helper contiene funzioni che consentono di gestire gli smile (emoticon).

17

String Helper

Il file String Helper contiene funzioni che aiutano a lavorare con le stringhe.

18

Text Helper

Il file Text Helper contiene funzioni che aiutano a lavorare con il testo.

19

Typography Helper

Il file Typography Helper contiene funzioni che aiutano a formattare il testo in modi semanticamente rilevanti.

20

URL Helper

Il file Helper URL contiene funzioni che aiutano a lavorare con gli URL.

21

XML Helper

Il file Helper XML contiene funzioni che aiutano a lavorare con i dati XML.

Caricamento di un aiutante

È possibile caricare un aiutante come mostrato di seguito:

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

Dove nome è il nome dell'assistente. Ad esempio, se si desidera caricare l'URL Helper, è possibile caricarlo come:

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

Routing

CodeIgniter ha un sistema di instradamento URI intuitivo, in modo da poter reindirizzare facilmente l'URL. In genere, esiste una relazione uno a uno tra una stringa URL e la sua classe / metodo controller corrispondente. I segmenti in un URI normalmente seguono questo modello:

your-domain.com/class/method/id/
  • Il first segment rappresenta la classe controller che dovrebbe essere invocata.

  • Il second segment rappresenta la funzione di classe, o metodo, che dovrebbe essere chiamato.

  • Il thirde tutti i segmenti aggiuntivi rappresentano l'ID e tutte le variabili che verranno passate al controller.

In alcune situazioni, potresti voler modificare questo meccanismo di routing predefinito. CodeIgniter fornisce funzionalità attraverso cui è possibile impostare le proprie regole di instradamento.

Personalizza le regole di instradamento

C'è un file particolare dove puoi gestire tutti questi. Il file si trova in application / config / routes.php. Troverai un array chiamato$route in which you can customize your routing rules. The key in the $l'array di route deciderà cosa instradare e il valore deciderà dove instradare. Ci sono tre percorsi riservati in CodeIgniter.

SN Percorsi e descrizione riservati
1

$route['default_controller']

Questa rotta indica quale classe controller deve essere caricata, se l'URI non contiene dati, come avviene quando le persone caricano l'URL di root. Sei incoraggiato ad avere un percorso predefinito altrimenti apparirà una pagina 404, per impostazione predefinita. Possiamo impostare qui la home page del sito Web in modo che venga caricata per impostazione predefinita.

2

$route['404_override']

Questa route indica quale classe controller deve essere caricata se il controller richiesto non viene trovato. Sostituirà la pagina di errore 404 predefinita. Non influirà sushow_404() funzione, che continuerà a caricare l'impostazione predefinita error_404.php file in application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Come evidente dal valore booleano, questo non è esattamente un percorso. Questa opzione ti consente di sostituire automaticamente i trattini ('-') con i trattini bassi nei segmenti dell'URI del controller e del metodo, risparmiando così ulteriori voci di percorso se necessario. Ciò è necessario perché il trattino non è un carattere di nome di classe o metodo valido e causerà un errore irreversibile, se si tenta di utilizzarlo.

I percorsi possono essere personalizzati da wildcards o utilizzando regular expressions ma tieni presente che queste regole personalizzate per il routing devono venire dopo le regole riservate.

Caratteri jolly

Possiamo usare due caratteri jolly come spiegato di seguito:

  • (:num) - Corrisponderà a un segmento contenente solo numeri.

  • (:any) - Corrisponderà a un segmento contenente qualsiasi carattere.

Example

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

Nell'esempio precedente, se la parola letterale "prodotto" si trova nel primo segmento dell'URL e un numero si trova nel secondo segmento, vengono invece utilizzati la classe "catalogo" e il metodo "ricerca_prodotto".

Espressioni regolari

Come i caratteri jolly, possiamo anche usare espressioni regolari in $route array keyparte. Se un qualsiasi URI corrisponde a un'espressione regolare, verrà indirizzato alla parte del valore impostata nell'array $ route.

Example

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

Nell'esempio precedente, un URI simile a products / shoes / 123 chiamerebbe invece "shoes"Controller class e"id_123" metodo.

Dopo aver impostato il sito, la prossima cosa che dovremmo fare è configurare il sito. La cartella application / config contiene un gruppo di file che impostano la configurazione di base del tuo sito.

Configurazione dell'URL di base

L'URL di base del sito può essere configurato nel file application / config / config.php. È l'URL della tua radice CodeIgniter. In genere, questo sarà il tuo URL di base, con una barra finale ad es

http://example.com/

Se non è impostato, CodeIgniter proverà a indovinare il protocollo, il dominio e il percorso dell'installazione. Tuttavia, dovresti sempre configurarlo in modo esplicito e non fare mai affidamento sull'autoguessing, specialmente negli ambienti di produzione. Puoi configurare l'URL di base nell'array $ config con la chiave "base_url" come mostrato di seguito -

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

Configurazione del database

Il database del sito può essere configurato nel file application / config / database.php. Spesso abbiamo bisogno di impostare un database per ambienti diversi come lo sviluppo e la produzione. Con l'array multidimensionale fornito in CodeIgniter, possiamo configurare il database per ambienti diversi. Le impostazioni di configurazione vengono memorizzate nell'array come mostrato di seguito:

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

Puoi lasciare poche opzioni ai valori predefiniti eccetto nome host, nome utente, password, database e dbdriver.

  • hostname - Specificare qui la posizione del database, ad esempio localhost o indirizzo IP

  • username - Imposta qui il nome utente del tuo database.

  • password - Imposta qui la password del tuo database.

  • database - Imposta qui il nome del database.

  • dbdriver - Imposta il tipo di database che stai utilizzando, ad esempio MySQL, MySQLi, Postgre SQL, ODBC e MS SQL.

Modificando la chiave dell'array $db, è possibile impostare altre configurazioni del database come mostrato di seguito. Qui, abbiamo impostato la chiave per‘test’ per impostare il database per l'ambiente di test, mantenendo l'altro ambiente di database così com'è.

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

Puoi semplicemente passare a un ambiente diverso modificando il valore di una variabile come mostrato di seguito:

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

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

Configurazione del caricamento automatico

Questo file specifica, per impostazione predefinita, quali sistemi devono essere caricati. Per mantenere il framework il più leggero possibile, per impostazione predefinita vengono caricate solo le risorse minime assolute. Si dovrebbe caricare automaticamente il sistema utilizzato di frequente, invece di caricarlo ripetutamente a livello locale. Di seguito sono riportate le cose che puoi caricare automaticamente:

  • Libraries- È un elenco di librerie, che dovrebbe essere caricato automaticamente. Fornire un elenco di librerie in un array come mostrato di seguito che devono essere caricate automaticamente da CodeIgniter. In questo esempio, stiamo caricando automaticamente database, e-mail e librerie di sessioni.

$autoload['libraries'] = array('database', 'email', 'session');
  • Drivers- Queste classi si trovano in system / libraries / o nella directory application / libraries /, ma sono anche collocate nella loro sottodirectory ed estendono la classe CI_Driver_Library. Offrono più opzioni di driver intercambiabili. Di seguito è riportato un esempio per caricare automaticamente i driver della cache.

$autoload['drivers'] = array('cache');
  • Helper files- È un elenco di file di supporto, da caricare automaticamente. Fornire un elenco di librerie nell'array, come mostrato di seguito, che devono essere caricate automaticamente da CodeIgniter. Nell'esempio fornito, stiamo caricando automaticamente URL e file helper.

$autoload['helper'] = array('url', 'file');
  • Custom config files- Questi file sono destinati all'uso, solo se sono stati creati file di configurazione personalizzati. Altrimenti, lascialo vuoto. Di seguito è riportato un esempio di come caricare automaticamente più di un file di configurazione.

$autoload['config'] = array('config1', 'config2');
  • Language files- È un elenco di file di lingua, che dovrebbero essere caricati automaticamente. Guarda l'esempio fornito di seguito. Fornire un elenco di lingue in un array come mostrato di seguito da caricare automaticamente da CodeIgniter. Tieni presente che non includere la parte "_lang" del tuo file. Ad esempio, "codeigniter_lang.php" verrebbe indicato come array ('codeigniter');

  • Models- È un elenco di file di modelli, che dovrebbe essere caricato automaticamente. Fornire un elenco di modelli in un array come mostrato di seguito che devono essere caricati automaticamente da CodeIgniter. Di seguito è riportato l'esempio di come caricare automaticamente più di un file di modello.

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

Come qualsiasi altro framework, dobbiamo interagire molto spesso con il database e CodeIgniter ci rende questo lavoro facile. Fornisce un ricco set di funzionalità per interagire con il database.

In questa sezione, capiremo come funzionano le funzioni CRUD (Crea, Leggi, Aggiorna, Elimina) con CodeIgniter. Noi useremostud tabella per selezionare, aggiornare, eliminare e inserire i dati in stud tavolo.

Nome tabella: stud
roll_no int (11)
nome varchar (30)

Connessione a un database

Possiamo connetterci al database nei due modi seguenti:

  • Automatic Connecting- La connessione automatica può essere eseguita utilizzando il file application / config / autoload.php. La connessione automatica caricherà il database per ogni pagina. Dobbiamo solo aggiungere la libreria del database come mostrato di seguito -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Se si desidera la connettività del database solo per alcune pagine, è possibile eseguire la connessione manuale. Possiamo connetterci al database manualmente aggiungendo la seguente riga in qualsiasi classe.

$this->load->database();

Qui, non stiamo passando alcun argomento perché tutto è impostato nel file di configurazione del database application / config / database.php

Inserimento di un record

Per inserire un record nel database, viene utilizzata la funzione insert () come mostrato nella tabella seguente:

Syntax

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

Parameters

  • $table( stringa ): nome della tabella

  • $set( array ) - Un array associativo di coppie campo / valore

  • $escape( bool ) - Indica se sfuggire a valori e identificatori

Returns

VERO in caso di successo, FALSO in caso di fallimento

Return Type

bool

L'esempio seguente mostra come inserire un record in studtavolo. $ Data è un array in cui abbiamo impostato i dati e per inserire questi dati nella tabellastud, dobbiamo solo passare questo array alla funzione di inserimento nel 2 ° argomento.

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

Aggiornamento di un record

Per aggiornare un record nel database, il update() viene utilizzata insieme a set() e where()funzioni come mostrato nelle tabelle seguenti. Ilset() la funzione imposterà i dati da aggiornare.

Syntax

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

Parameters

  • $key( misto ): nome del campo o un array di coppie campo / valore

  • $value( stringa ) - Valore del campo, se $ chiave è un singolo campo

  • $escape( bool ) - Indica se sfuggire a valori e identificatori

Returns

Istanza CI_DB_query_builder (concatenamento di metodi)

Return Type

CI_DB_query_builder

Il where() la funzione deciderà quale record aggiornare.

Syntax

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

Parameters

  • $key( misto ): nome del campo da confrontare o matrice associativa

  • $value( misto ) - Se una singola chiave, rispetto a questo valore

  • $escape( bool ) - Indica se sfuggire a valori e identificatori

Returns

Istanza DB_query_builder

Return Type

oggetto

Infine, il update() la funzione aggiornerà i dati nel database.

Syntax

aggiornamento ([ $ table = '' [, $ set = NULL [,$where = NULL[, $limit = NULL ]]]])

Parameters

  • $table( stringa ): nome della tabella

  • $set( array ) - Un array associativo di coppie campo / valore

  • $where( stringa ) - La clausola WHERE

  • $limit( int ) - La clausola LIMIT

Returns

VERO in caso di successo, FALSO in caso di fallimento

Return Type

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

Eliminazione di un record

Per eliminare un record nel database, viene utilizzata la funzione delete () come mostrato nella tabella seguente:

Syntax

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

Parameters

  • $table( misto ) - La tabella da cui eliminare; stringa o matrice

  • $where( stringa ) - La clausola WHERE

  • $limit( int ) - La clausola LIMIT

  • $reset_data( bool ) - TRUE per reimpostare la clausola "write" della query

Returns

Istanza CI_DB_query_builder (concatenamento di metodi) o FALSE in caso di errore

Return Type

misto

Utilizzare il codice seguente per eliminare un record in studtavolo. Il primo argomento indica il nome della tabella da eliminare record e il secondo argomento decide quale record eliminare.

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

Selezione di un record

Per selezionare un record nel database, il get viene utilizzata la funzione, come mostrato nella tabella seguente:

Syntax

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

Parameters

  • $table( stringa ) - La tabella su cui interrogare l'array

  • $limit( int ) - La clausola LIMIT

  • $offset( int ) - La clausola OFFSET

Returns

Istanza CI_DB_result (concatenamento di metodi)

Return Type

CI_DB_result

Usa il codice seguente per ottenere tutti i record dal database. La prima istruzione recupera tutti i record dalla tabella "stud" e restituisce l'oggetto, che verrà archiviato in $ query object. La seconda istruzione chiama il fileresult() funzione con $ oggetto query per ottenere tutti i record come array.

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

Chiusura di una connessione

La connessione al database può essere chiusa manualmente, eseguendo il codice seguente:

$this->db->close();

Esempio

Crea una classe controller chiamata Stud_controller.php e salvalo in application/controller/Stud_controller.php

Ecco un esempio completo, in cui vengono eseguite tutte le operazioni sopra menzionate. Prima di eseguire il seguente esempio, creare un database e una tabella come indicato all'inizio di questo capitolo e apportare le modifiche necessarie al file di configurazione del database memorizzato inapplication/config/database.php

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

Crea una classe modello chiamata Stud_Model.php e salvalo in application/models/Stud_Model.php

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

Crea un file di visualizzazione chiamato Stud_add.php e salvalo in application/views/Stud_add.php

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

Crea un file di visualizzazione chiamato Stud_edit.php e salvalo in application/views/Stud_edit.php

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

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

Crea un file di visualizzazione chiamato Stud_view.php e salvalo in application/views/Stud_view.php

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

Apporta la seguente modifica al file di rotta in application/config/routes.php e aggiungi la seguente riga alla fine del file.

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

Ora, eseguiamo questo esempio visitando il seguente URL nel browser. Sostituisci yoursite.com con il tuo URL.

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

La parte essenziale di un framework CodeIgniter sono le sue librerie. Fornisce un ricco set di librerie, che aumentano indirettamente la velocità di sviluppo di un'applicazione. La libreria di sistema si trova in system / libraries. Tutto quello che dobbiamo fare è caricare la libreria che vogliamo utilizzare. La libreria può essere caricata come mostrato di seguito:

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

Dove class nameè il nome della libreria che vogliamo caricare. Se vogliamo caricare più librerie, possiamo semplicemente passare un array come argomento alibrary() funziona come mostrato di seguito -

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

Classi di libreria

Le classi della libreria si trovano in system/libraries. Ogni classe ha varie funzioni per semplificare il lavoro di sviluppo. La tabella seguente mostra i nomi della classe della libreria e la sua descrizione.

SN Classe e descrizione della libreria
1

Benchmarking Class

La classe di benchmarking è sempre attiva, consentendo di calcolare la differenza di tempo tra due punti contrassegnati.

2

Caching Class

Questa classe memorizzerà le pagine nella cache, per accedere rapidamente alla velocità della pagina.

3

Calendaring Class

Utilizzando questa classe, puoi creare dinamicamente calendari.

4

Shopping Cart Class

Usando questa classe, puoi aggiungere o rimuovere articoli dal carrello. Gli elementi vengono salvati in sessione e rimarranno attivi fino a quando l'utente non navigherà sul sito.

5

Config Class

Le preferenze di configurazione possono essere recuperate utilizzando questa classe. Questa classe viene inizializzata automaticamente.

6

Email Class

Questa classe fornisce funzionalità relative alla posta elettronica, come inviare o rispondere a posta elettronica.

7

Encryption Class

Questa classe fornisce funzionalità di crittografia dei dati a due vie.

8

File Uploading Class

Questa classe fornisce funzionalità relative al caricamento di file. Puoi impostare varie preferenze come il tipo di file da caricare, la dimensione dei file ecc.

9

Form Validation Class

Questa classe fornisce varie funzioni per convalidare il modulo.

10

FTP Class

Questa classe fornisce varie funzioni relative all'FTP come il trasferimento di file per rimuovere il server, lo spostamento, la ridenominazione o l'eliminazione di file sul server.

11

Image Manipulation Class

La manipolazione di immagini come il ridimensionamento, la creazione di miniature, il ritaglio, la rotazione, la filigrana può essere eseguita con l'aiuto di questa classe.

12

Input Class

Questa classe pre-elabora i dati di input per motivi di sicurezza.

13

Language Class

Questa classe viene utilizzata per l'internazionalizzazione.

14

Loader Class

Questa classe carica elementi come Visualizza file, driver, helper, modelli ecc.

15

Migrations Class

Questa classe fornisce funzionalità relative alle migrazioni del database.

16

Output Class

Questa classe invia l'output al browser e inoltre memorizza nella cache quella pagina web.

17

Pagination Class

Questa classe aggiunge funzionalità di impaginazione alla pagina web.

18

Template Parser Class

La classe Template Parser può eseguire semplici sostituzioni di testo per pseudo-variabili contenute nei file di visualizzazione. Può analizzare variabili semplici o coppie di tag variabili.

19

Security Class

Questa classe contiene funzioni relative alla sicurezza come XSS Filtering, CSRF ecc.

20

Session Library

Questa classe fornisce funzionalità per mantenere la sessione dell'applicazione.

21

HTML Table

Questa classe viene utilizzata per generare automaticamente tabelle HTML da risultati di array o database.

22

Trackback Class

La classe Trackback fornisce funzioni che consentono di inviare e ricevere dati Trackback.

23

Typography Class

La classe Typography fornisce metodi che aiutano a formattare il testo.

24

Unit Testing Class

Questa classe fornisce funzionalità per testare l'unità dell'applicazione e generare il risultato.

25

URI Class

La classe URI fornisce metodi che consentono di recuperare le informazioni dalle stringhe URI. Se utilizzi il routing URI, puoi anche recuperare informazioni sui segmenti reindirizzati.

26

User Agent Class

La classe agente utente fornisce funzioni che aiutano a identificare le informazioni sul browser, dispositivo mobile o robot che visita il tuo sito. Inoltre, è possibile ottenere informazioni sul referrer, nonché informazioni sulla lingua e sul set di caratteri supportato.

27

XML-RPC and XML-RPC Server Classes

Le classi XML-RPC di CodeIgniter consentono di inviare richieste a un altro server o di impostare il proprio server XML-RPC per ricevere richieste.

28

Zip Encoding Class

Questa classe viene utilizzata per creare archivi zip dei tuoi dati.

Creazione di librerie

CodeIgniter ha un ricco set di librerie, che puoi trovare in system/libraries cartella ma CodeIgniter non si limita solo alle librerie di sistema, puoi anche creare le tue librerie, che possono essere archiviate in application/librariescartella. Puoi creare librerie in tre modi.

  • Crea nuova libreria
  • Estendi la libreria nativa
  • Sostituisci la libreria nativa

Crea nuova libreria

Durante la creazione di una nuova libreria, tenere presente quanto segue:

  • Il nome del file deve iniziare con una lettera maiuscola, ad esempio Mylibrary.php
  • Il nome della classe deve iniziare con una lettera maiuscola, ad esempio class Mylibrary
  • Il nome della classe e il nome del file devono corrispondere.

Mylibrary.php

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

Loading the Custom Library

La libreria di cui sopra può essere caricata semplicemente eseguendo la riga seguente nel controller.

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

mylibrary è il nome della tua libreria e puoi scriverlo in lettere minuscole e maiuscole. Usa il nome della libreria senza l'estensione “.php”. Dopo aver caricato la libreria, puoi anche chiamare la funzione di quella classe come mostrato di seguito.

$this->mylibrary->some_function();

Estendi la libreria nativa

A volte, potrebbe essere necessario aggiungere la propria funzionalità alla libreria fornita da CodeIgniter. CodeIgniter fornisce una struttura con la quale è possibile estendere la libreria nativa e aggiungere le proprie funzioni. Per ottenere ciò, è necessario estendere la classe della classe della libreria nativa. Ad esempio, se si desidera estendere la libreria di posta elettronica, è possibile farlo come mostrato di seguito:

Class MY_Email extends CI_Email { 
}

Qui, nell'esempio precedente, la classe MY_Email sta estendendo la classe di posta elettronica della libreria nativa CI_Email. Questa libreria può essere caricata con il modo standard di caricare la libreria di posta elettronica. Salva il codice sopra nel file My_Email.php

Sostituisci la libreria nativa

In alcune situazioni, non si desidera utilizzare la libreria nativa nel modo in cui funziona e si desidera sostituirla con la propria. Questo può essere fatto sostituendo la libreria nativa. Per ottenere ciò, è sufficiente fornire lo stesso nome di classe come è denominato nella libreria nativa. Ad esempio, se desideri sostituire il fileEmail class, quindi utilizza il codice come mostrato di seguito. Salva il nome del file conEmail.php e dai un nome alla classe CI_Email.

Email.php

Class CI_Email { 
}

Molte volte, durante l'utilizzo dell'applicazione, ci imbattiamo in errori. È molto fastidioso per gli utenti se gli errori non vengono gestiti correttamente. CodeIgniter fornisce un semplice meccanismo di gestione degli errori.

Si desidera visualizzare i messaggi quando l'applicazione è in modalità di sviluppo piuttosto che in modalità di produzione poiché i messaggi di errore possono essere risolti facilmente nella fase di sviluppo.

L'ambiente della tua applicazione può essere modificato, cambiando la riga indicata di seguito da index.phpfile. Questo può essere impostato su qualsiasi cosa, ma normalmente ci sono tre valori (sviluppo, test, produzione) utilizzati per questo scopo.

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

Un ambiente diverso richiederà diversi livelli di segnalazione degli errori. Per impostazione predefinita, la modalità di sviluppo visualizzerà gli errori e il test e la modalità live li nasconderanno. CodeIgniter fornisce tre funzioni come mostrato di seguito per gestire gli errori.

  • show_error() la funzione visualizza gli errori in formato HTML nella parte superiore dello schermo.

Syntax

show_error ( $ messaggio,$status_code, $header = 'Si è verificato un errore' )

Parameters

  • $message( misto ): messaggio di errore

  • $status_code( int ) - Codice di stato della risposta HTTP

  • $heading( stringa ) - Intestazione della pagina di errore

Return Type

misto
  • show_404() la funzione visualizza un errore se stai tentando di accedere a una pagina che non esiste.

Syntax

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

Parameters

  • $page( stringa ) - stringa URI

  • $log_error( bool ) - Indica se registrare l'errore

Return Type

vuoto
  • log_message()viene utilizzata per scrivere messaggi di registro. Questo è utile quando vuoi scrivere messaggi personalizzati.

Syntax

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

Parameters

  • $level( stringa ) - Livello di registro: "errore", "debug" o "informazioni"

  • $message( stringa ) - Messaggio da registrare

  • $php_error( bool ) - Indica se stiamo registrando un messaggio di errore PHP nativo

Return Type

vuoto

La registrazione può essere abilitata in application/config/config.phpfile. Di seguito è riportato lo screenshot del file config.php, in cui è possibile impostare il valore di soglia.

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

Puoi trovare i messaggi di log in application/log/. Assicurati che questa directory sia scrivibile prima di abilitare i file di registro.

Vari modelli per i messaggi di errore possono essere trovati in application/views/errors/cli o application/views/errors/html.

Utilizzando la classe File Uploading, possiamo caricare file e possiamo anche limitare il tipo e la dimensione del file da caricare. Segui i passaggi mostrati nell'esempio fornito per comprendere il processo di caricamento dei file in CodeIgniter.

Esempio

Copia il codice seguente e conservalo in application/view/Upload_form.php.

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

Copia il codice fornito di seguito e conservalo in application/view/Upload_success.php

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

Copia il codice fornito di seguito e conservalo in application/controllers/Upload.php. Creare "uploads"Nella cartella principale di CodeIgniter, ovvero nella directory principale della cartella dell'applicazione.

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

Apporta la seguente modifica al file di rotta in application/config/routes.php e aggiungi la seguente riga alla fine del file.

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

Ora eseguiamo questo esempio visitando il seguente URL nel browser. Sostituisci yoursite.com con il tuo URL.

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

Produrrà la seguente schermata:

Dopo aver caricato con successo un file, vedrai la seguente schermata:

L'invio di e-mail in CodeIgniter è molto più semplice. Puoi anche configurare le preferenze relative alla posta elettronica in CodeIgniter. CodeIgniter fornisce le seguenti funzionalità per l'invio di e-mail:

  • Protocolli multipli: posta, Sendmail e SMTP
  • Crittografia TLS e SSL per SMTP
  • Più destinatari
  • CC e BCC
  • Email HTML o in testo normale
  • Attachments
  • Word wrapping
  • Priorities
  • Modalità batch BCC, che consente di suddividere elenchi di e-mail di grandi dimensioni in piccoli batch BCC.
  • Strumenti di debug della posta elettronica

La classe Email ha le seguenti funzioni per semplificare il lavoro di invio di email.

SN Sintassi Parametri Ritorno Tipo di ritorno
1 from ( $ from [, $ name = '' [, $ return_path = NULL ]])

$from( stringa ) - Indirizzo e-mail "Da"

$name( stringa ) - Nome visualizzato "Da"

$return_path( stringa ) - Indirizzo e-mail opzionale a cui reindirizzare i messaggi di posta elettronica non consegnati

Istanza CI_Email (concatenamento di metodi) CI_Email
2 reply_to ( $ replyto [, $ name = '' ])

$replyto( stringa ) - Indirizzo e-mail per le risposte

$name( stringa ): nome visualizzato per l'indirizzo e-mail di risposta

Istanza CI_Email (concatenamento di metodi) CI_Email
2 a ( $ a )

$to( misto ): stringa delimitata da virgole o matrice di indirizzi e-mail

Istanza CI_Email (concatenamento di metodi) CI_Email
3 cc ( $ cc )

$cc( misto ): stringa delimitata da virgole o matrice di indirizzi e-mail

Istanza CI_Email (concatenamento di metodi) CI_Email
4 bcc ( $ bcc [, $ limit = '' ])

$bcc( misto ): stringa delimitata da virgole o matrice di indirizzi e-mail

$limit( int ) - Numero massimo di e-mail da inviare per batch

Istanza CI_Email (concatenamento di metodi) CI_Email
5 soggetto ( $ soggetto )

$subject( stringa ) - Riga dell'oggetto dell'e-mail

Istanza CI_Email (concatenamento di metodi) CI_Email
6 messaggio ( $ body )

$body( stringa ) - Corpo del messaggio di posta elettronica

Istanza CI_Email (concatenamento di metodi) CI_Email
7 set_alt_message ( $ str )

$str( stringa ): corpo del messaggio di posta elettronica alternativo

Istanza CI_Email (concatenamento di metodi) CI_Email
8 set_header ( $ intestazione, $ valore )

$header( stringa ): nome dell'intestazione

$value( stringa ): valore dell'intestazione

Istanza CI_Email (concatenamento di metodi) CI_Email
9 cancella ([ $ clear_attachments = FALSE ])

$clear_attachments( bool ) - Indica se cancellare o meno gli allegati

Istanza CI_Email (concatenamento di metodi) CI_Email
10 invia ([ $ auto_clear = TRUE ])

$auto_clear( bool ) - Indica se cancellare automaticamente i dati del messaggio

Istanza CI_Email (concatenamento di metodi) CI_Email
11 allegare ($ nomefile [, $disposition = ''[, $newname = NULL [, $ mime = '']]])

$filename( stringa ) - Nome del file

$disposition( stringa ) - "disposizione" dell'allegato. La maggior parte dei client di posta elettronica prende la propria decisione indipendentemente dalla specifica MIME utilizzata qui. iana

$newname( stringa ): nome del file personalizzato da utilizzare nell'e-mail

$mime( stringa ) - Tipo MIME da utilizzare (utile per i dati memorizzati nel buffer)

Istanza CI_Email (concatenamento di metodi) CI_Email
12 allegato_cid ( $ nomefile )

$filename( stringa ): nome del file allegato esistente

Content-ID allegato o FALSE se non trovato corda

Invio di un'e-mail

Per inviare un'e-mail utilizzando CodeIgniter, devi prima caricare la libreria delle e-mail utilizzando quanto segue:

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

Dopo aver caricato la libreria, è sufficiente eseguire le seguenti funzioni per impostare gli elementi necessari per inviare un'e-mail. Ilfrom() viene utilizzata per impostare - da dove viene inviata l'e-mail e to()viene utilizzata la funzione: a chi viene inviata l'email. Ilsubject() e message() viene utilizzata per impostare l'oggetto e il messaggio dell'email.

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

Dopodiché, esegui il file send() funzione come mostrato di seguito per inviare un'e-mail.

$this->email->send();

Esempio

Crea un file controller Email_controller.php e salvalo in application/controller/Email_controller.php.

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

Crea un file di visualizzazione chiamato email_form.php e salvalo in application/views/email_form.php

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

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

Apporta le modifiche nel file routes.php file in application/config/routes.php e aggiungi la seguente riga alla fine del file.

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

Eseguire l'esempio precedente visitando il seguente collegamento. Sostituisci yoursite.com con l'URL del tuo sito.

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

La convalida è un processo importante durante la creazione dell'applicazione web. Garantisce che i dati che riceviamo siano corretti e validi per l'archiviazione o l'elaborazione. CodeIgniter ha reso questo compito molto semplice. Cerchiamo di capire questo processo con un semplice esempio.

Esempio

Crea un file di visualizzazione myform.php e salva il codice seguente in application/views/myform.php. Questa pagina mostrerà un modulo in cui l'utente può inviare il proprio nome e convalideremo questa pagina per assicurarci che non debba essere vuota durante l'invio.

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

Crea un file di visualizzazione formsuccess.php e salvalo in application/views/formsuccess.php. Questa pagina verrà visualizzata se il modulo viene convalidato correttamente.

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

Crea un file controller Form.php e salvalo in application/controller/Form.php. Questo modulo mostrerà errori se non viene convalidato correttamente o reindirizzato aformsuccess.php pagina.

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

Aggiungi la seguente riga application/config/routes.php.

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

Eseguiamo questo esempio visitando il seguente URL nel browser. Questo URL potrebbe essere diverso in base al tuo sito.

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

Produrrà la seguente schermata:

Abbiamo aggiunto una convalida nel controller: Nameè un campo obbligatorio prima di inviare il modulo. Quindi, se fai clic sul pulsante di invio senza inserire nulla nel campo del nome, ti verrà chiesto di inserire il nome prima di inviare come mostrato nella schermata sottostante.

Dopo aver inserito correttamente il nome, verrai reindirizzato alla schermata come mostrato di seguito.

Nell'esempio precedente, abbiamo utilizzato l'impostazione della regola richiesta. Ci sono molte regole disponibili in CodeIgniter, descritte di seguito.

Riferimento alla regola di convalida

Di seguito è riportato un elenco di tutte le regole native disponibili per l'uso:

Regola Parametro Descrizione Esempio

required

No Restituisce FALSE se l'elemento del modulo è vuoto.

matches

Restituisce FALSE se l'elemento del modulo non corrisponde a quello nel parametro. corrisponde a [form_item]

regex_match

Restituisce FALSE se l'elemento del modulo non corrisponde all'espressione regolare. regex_match [/ regex /]

differs

Restituisce FALSE se l'elemento del modulo non è diverso da quello nel parametro. differisce [form_item]

is_unique

Restituisce FALSE se l'elemento del modulo non è univoco per la tabella e il nome del campo nel parametro. Nota: questa regola richiede che il Generatore di query sia abilitato per funzionare. is_unique [table.field]

min_length

Restituisce FALSE se l'elemento del modulo è più corto del valore del parametro. min_length [3]

max_length

Restituisce FALSE se l'elemento del modulo è più lungo del valore del parametro. max_length [12]

exact_length

Restituisce FALSE se l'elemento del modulo non è esattamente il valore del parametro. lunghezza_esatta [8]

greater_than

Restituisce FALSE se l'elemento del modulo è minore o uguale al valore del parametro o non è numerico. maggiore_di [8]

greater_than_equal_to

Restituisce FALSE se l'elemento del modulo è inferiore al valore del parametro o non è numerico. maggiore_than_equal_to [8]

less_than

Restituisce FALSE se l'elemento del modulo è maggiore o uguale al valore del parametro o non è numerico. less_than [8]

less_than_equal_to

Restituisce FALSE se l'elemento del modulo è maggiore del valore del parametro o non è numerico. less_than_equal_to [8]

in_list

Restituisce FALSE se l'elemento del modulo non si trova in un elenco predeterminato. in_list [rosso, blu, verde]

alpha

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso dai caratteri alfabetici.

alpha_numeric

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso dai caratteri alfanumerici.

alpha_numeric_spaces

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso da caratteri alfanumerici o spazi. Dovrebbe essere usato dopo il taglio per evitare spazi all'inizio o alla fine

alpha_dash

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso da caratteri alfanumerici, trattini bassi o trattini.

numeric

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso dai caratteri numerici.

integer

No Restituisce FALSE se l'elemento del form contiene qualcosa di diverso da un numero intero.

decimal

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso da un numero decimale.

is_natural

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso da un numero naturale - 0, 1, 2, 3, ecc.

is_natural_no_zero

No Restituisce FALSE se l'elemento del modulo contiene qualcosa di diverso da un numero naturale, ma non zero - 1, 2, 3, ecc.

valid_url

No Restituisce FALSE se l'elemento del modulo non contiene un URL valido.

valid_email

No Restituisce FALSE se l'elemento del modulo non contiene un indirizzo e-mail valido.

valid_emails

No Restituisce FALSE se qualsiasi valore fornito in un elenco separato da virgole non è un messaggio di posta elettronica valido.

valid_ip

No Restituisce FALSE se l'IP fornito non è valido. Accetta un parametro facoltativo di "ipv4" o "ipv6" per specificare un formato IP.

valid_base64

No Restituisce FALSE se la stringa fornita contiene qualcosa di diverso dai caratteri Base64 validi.

Quando creiamo siti web, spesso abbiamo bisogno di tenere traccia dell'attività e dello stato dell'utente e, a questo scopo, dobbiamo usare session. CodeIgniter ha una classe di sessione per questo scopo.

Inizializzazione di una sessione

I dati delle sessioni sono disponibili a livello globale attraverso il sito, ma per utilizzare quei dati dobbiamo prima inizializzare la sessione. Possiamo farlo eseguendo la seguente riga nel costruttore.

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

Dopo aver caricato la libreria della sessione, puoi semplicemente utilizzare l'oggetto della sessione come mostrato di seguito.

$this->session

Aggiungi dati di sessione

In PHP, usiamo semplicemente $_SESSION array per impostare tutti i dati nella sessione come mostrato di seguito.

$_SESSION[‘key’] = value;

Dove 'key'è la chiave di array e value è assegnato a destra di uguale al segno.

La stessa cosa può essere eseguita in CodeIgniter come mostrato di seguito.

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

set_userdata()la funzione accetta due argomenti. Il primo argomento,some_name, è il nome della variabile di sessione, sotto la quale, some_value verrà memorizzato.

set_userdata() funzione supporta anche un'altra sintassi in cui è possibile passare array per memorizzare i valori come mostrato di seguito.

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

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

Rimuovi i dati della sessione

In PHP, possiamo rimuovere i dati memorizzati nella sessione utilizzando il unset() funzionare come mostrato di seguito.

unset($_SESSION[‘some_name’]);

La rimozione dei dati di sessione in CodeIgniter è molto semplice come mostrato di seguito. La versione sottostante diunset_userdata() la funzione rimuoverà solo una variabile dalla sessione.

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

Se desideri rimuovere più valori dalla sessione o rimuovere un intero array, puoi utilizzare la versione di seguito di unset_userdata() funzione.

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

Recupera i dati della sessione

Dopo aver impostato i dati nella sessione, possiamo anche recuperare quei dati come mostrato di seguito. Userdata()a questo scopo verrà utilizzata la funzione. Questa funzione torneràNULL se i dati a cui stai tentando di accedere non sono disponibili.

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

Esempio

Crea una classe controller chiamata Session_controller.php e salvalo in application/controller/Session_controller.php.

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

Crea un file di visualizzazione chiamato session_view.php e salvalo in application/views/session_view.php

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

Apporta le modifiche nel file routes.php file in application/config/routes.php e aggiungi la seguente riga alla fine del file.

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

Eseguire l'esempio precedente utilizzando il seguente indirizzo. Sostituireyoursite.com con l'URL del tuo sito.

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

Durante la creazione dell'applicazione Web, è necessario memorizzare alcuni dati solo per una volta e successivamente rimuovere tali dati. Ad esempio, per visualizzare un messaggio di errore o un messaggio informativo. In PHP, dobbiamo farlo manualmente ma CodeIgniter ha reso questo lavoro semplice per noi. In CodeIgniter, i dati flash saranno disponibili solo fino alla richiesta successiva e verranno eliminati automaticamente.

Aggiungi Flashdata

Possiamo semplicemente memorizzare i dati flash come mostrato di seguito.

$this->session->mark_as_flash('item');
  • mark_as_flash()a questo scopo viene utilizzata la funzione, che richiede solo un argomento del valore da memorizzare. Possiamo anche passare un array per memorizzare più valori.

  • set_flashdata()può essere utilizzata anche la funzione, che accetta due argomenti, nome e valore, come mostrato di seguito. Possiamo anche passare un array.

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

Recupera dati Flash

Flashdata può essere recuperato utilizzando la funzione flashdata () che accetta un argomento dell'elemento da recuperare come mostrato di seguito. La funzione flashdata () assicura che si ottengano solo dati flash e non altri dati.

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

Se non si passa alcun argomento, è possibile ottenere un array con la stessa funzione.

Esempio

Crea una classe chiamata FlashData_Controller.php e salvalo in application/controller/FlashData_Controller.php.

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

Crea un file di visualizzazione chiamato flashdata_home.php e salvalo in application/views/ flashdata_home.php

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

Apporta le modifiche nel file routes.php file in application/config/routes.php e aggiungi la seguente riga alla fine del file.

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

Eseguire l'esempio precedente visitando il seguente collegamento. Sostituisci yoursite.com con l'URL del tuo sito.

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

Dopo aver visitato l'URL sopra, vedrai una schermata come mostrato di seguito.

Clicca su "Click Here"E vedrai una schermata come mostrato di seguito. Qui, in questa schermata vedrai un valore della variabile di dati flash. Aggiorna di nuovo la pagina e vedrai una schermata come sopra e la variabile dei dati flash verrà rimossa automaticamente.

In alcune situazioni, in cui si desidera rimuovere i dati archiviati nella sessione dopo un determinato periodo di tempo, è possibile farlo utilizzando tempdata funzionalità in CodeIgniter.

Aggiungi Tempdata

Per aggiungere dati come tempdata, dobbiamo usare mark_as_tempdata()funzione. Questa funzione accetta due elementi argomento o elementi da memorizzare cometempdata e il tempo di scadenza per tali articoli è mostrato di seguito.

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

Puoi anche passare un array per archiviare più dati. Tutti gli elementi memorizzati di seguito scadranno dopo 300 secondi.

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

È inoltre possibile impostare tempi di scadenza diversi per ogni articolo come mostrato di seguito.

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

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

Recupera Tempdata

Possiamo recuperare i tempdata usando tempdata()funzione. Questa funzione assicura che si ottengano solo tempdata e non altri dati. Guarda l'esempio fornito di seguito per vedere come recuperare tempdata.tempdata() la funzione richiederà un argomento dell'elemento da recuperare.

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

Se ometti l'argomento, puoi recuperare tutti i dati temporanei esistenti.

Rimuovi Tempdata

Tempdata viene rimosso automaticamente dopo la sua scadenza, ma se desideri rimuovere tempdata prima, puoi fare come mostrato di seguito utilizzando il unset_tempdata() funzione, che accetta un argomento dell'elemento da rimuovere.

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

Esempio

Crea una classe chiamata Tempdata_controller.php e salvalo in application/controller/Tempdata_controller.php.

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

Crea un file chiamato tempdata_view.php e salvalo in application/views/tempdata_view.php

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

Apporta le modifiche nel file routes.php file in application / config / routes.php e aggiungi la seguente riga alla fine del file.

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

Eseguire l'esempio precedente visitando il seguente collegamento. Sostituisci yoursite.com con l'URL del tuo sito.

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

Dopo aver visitato l'URL sopra, vedrai una schermata come mostrato di seguito.

Clicca su “Click Here” link e vedrai una schermata come mostrato di seguito.

Qui, in questa schermata vedrai un valore della variabile dei dati temporanei. Aggiorna di nuovo la stessa pagina dopo cinque secondi poiché abbiamo impostato i dati sulla temperatura per cinque secondi e vedrai una schermata come sopra e la variabile dei dati sulla temperatura verrà rimossa automaticamente dopo cinque secondi. Se aggiorni la stessa pagina prima di 5 secondi, i dati temporanei non verranno rimossi, poiché il periodo di tempo non è terminato.

Distruggere una sessione

In PHP, stiamo usando il session_destroy() funzione per distruggere la sessione e in CodeIgniter possiamo distruggere la funzione come mostrato di seguito.

$this->session->sess_destroy();

Dopo aver chiamato questa funzione, tutti i dati della sessione compreso il file flashdata e tempdata verrà eliminato definitivamente e non potrà essere recuperato.

Il cookie è una piccola porzione di dati inviata dal server web per essere archiviata sul computer del cliente. CodeIgniter ha un helper chiamato "Cookie Helper" per la gestione dei cookie.

Syntax

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

Parameters

  • $name( misto ): nome del cookie o matrice associativa di tutti i parametri disponibili per questa funzione

  • $value( stringa ): valore del cookie

  • $expire( int ) - Numero di secondi fino alla scadenza

  • $domain( stringa ) - Dominio del cookie (solitamente: .tuodominio.com)

  • $path( stringa ) - Percorso del cookie

  • $prefix( stringa ) - Prefisso del nome del cookie

  • $secure( bool ) - Indica se inviare il cookie solo tramite HTTPS

  • $httponly( bool ) - Indica se nascondere il cookie da JavaScript

Return Type

vuoto

Nel set_cookie()possiamo passare tutti i valori in due modi. Nel primo modo si può passare solo l'array e nel secondo si possono passare anche parametri individuali.

Syntax

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

Parameters

  • $index( stringa ) - Nome del cookie

  • $xss_clean( bool ) - Indica se applicare il filtro XSS al valore restituito

Return

Il valore del cookie o NULL se non trovato

Return Type

misto

Il get_cookie() viene utilizzata per ottenere il cookie che è stato impostato utilizzando la funzione set_cookie ().

Syntax

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

Parameters

  • $name( stringa ) - Nome del cookie

  • $domain( stringa ) - Dominio del cookie (solitamente: .tuodominio.com)

  • $path( stringa ) - Percorso del cookie

  • $prefix( stringa ) - Prefisso del nome del cookie

Return Type

vuoto

Il delete_cookie() viene utilizzata per eliminare il cookie ().

Esempio

Crea un controller chiamato Cookie_controller.php e salvalo in application/controller/Cookie_controller.php

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

Crea un file di visualizzazione chiamato Cookie_view.php e salvalo in application/views/Cookie_view.php

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

Cambia il file routes.php in application / config / routes.php per aggiungere route per il controller di cui sopra e aggiungi la seguente riga alla fine del file.

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

Dopodiché, puoi eseguire il seguente URL nel browser per eseguire l'esempio.

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

Produrrà un output come mostrato nello screenshot seguente.

Le funzioni della libreria CodeIgniter e le funzioni di supporto devono essere inizializzate prima di essere utilizzate, ma ci sono alcune funzioni comuni, che non devono essere inizializzate.

Queste funzioni comuni e le relative descrizioni sono fornite di seguito.

Sintassi is_php ( $ version )
Parametri

$version( stringa ) - Numero di versione

Ritorno TRUE se la versione PHP in esecuzione è almeno quella specificata o FALSE in caso contrario
Tipo di ritorno vuoto
Descrizione Determina se la versione PHP utilizzata è maggiore del numero di versione fornito.
Sintassi è_really_writable ( $ file )
Parametri

$file( stringa ) - Percorso del file

Ritorno TRUE se il percorso è scrivibile, FALSE in caso contrario
Tipo di ritorno bool
Descrizione controlla se il file è scrivibile o meno.
Sintassi config_item ( $ chiave )
Parametri

$key( stringa ) - Chiave dell'elemento di configurazione

Ritorno Valore della chiave di configurazione o NULL se non trovato
Tipo di ritorno misto
Descrizione Questa funzione viene utilizzata per ottenere l'elemento di configurazione
Sintassi set_status_header ( $ code [, $ text = '' ])
Parametri

$code( int ) - Codice di stato della risposta HTTP

$text( stringa ) - Un messaggio personalizzato da impostare con il codice di stato

Ritorno
Tipo di ritorno vuoto
Descrizione Questa funzione consente di impostare manualmente un'intestazione di stato del server.
Sintassi remove_invisible_characters ( $ str [, $ url_encoded = TRUE ])
Parametri

$str( stringa ): stringa di input

$url_encoded( bool ) - Indica se rimuovere anche i caratteri codificati in URL

Ritorno Stringa igienizzata
Tipo di ritorno corda
Descrizione Questa funzione impedisce l'inserimento di caratteri NULL tra i caratteri ASCII
Sintassi html_escape ( $ var )
Parametri

$var( misto ) - Variabile di cui eseguire l'escape (stringa o array)

Ritorno Stringhe HTML con escape
Tipo di ritorno misto
Descrizione Questa funzione agisce come una funzione nativa di PHP htmlspecialchars ().
Sintassi get_mimes ()
Ritorno Un array associativo di tipi di file
Tipo di ritorno Vettore
Descrizione Questa funzione restituisce un riferimento all'array MIME da application / config / mimes.php .
Sintassi is_https ()

Ritorno VERO se attualmente si utilizza HTTP su SSL, FALSO in caso contrario
Tipo di ritorno bool
Descrizione Restituisce TRUE se viene utilizzata una connessione sicura (HTTPS) e FALSE in qualsiasi altro caso (comprese le richieste non HTTP).
Sintassi is_cli ()
Ritorno TRUE se attualmente in esecuzione sotto CLI, FALSE altrimenti
Tipo di ritorno bool
Descrizione Restituisce TRUE se l'applicazione viene eseguita tramite la riga di comando e FALSE in caso contrario.
Sintassi funzione_usabile ( $ nome_funzione )
Parametri

$function_name( stringa ): nome della funzione

Tipo di ritorno bool
Descrizione Restituisce TRUE se una funzione esiste ed è utilizzabile, FALSE in caso contrario.

Di seguito è riportato un esempio, che dimostra tutte le funzioni di cui sopra.

Esempio

Qui abbiamo creato un solo controller in cui useremo le funzioni di cui sopra. Copia il codice indicato di seguito e salvalo in application/controller/CommonFun_Controller.php.

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

Cambiare il routes.php file in application / config / routes.php per aggiungere route per il controller di cui sopra e aggiungere la riga seguente alla fine del file.

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

Digita il seguente URL nella barra degli indirizzi del tuo browser per eseguire l'esempio.

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

La memorizzazione nella cache di una pagina migliorerà la velocità di caricamento della pagina. Se la pagina è memorizzata nella cache, verrà archiviata nello stato di rendering completo. La prossima volta, quando il server riceve una richiesta per la pagina memorizzata nella cache, verrà inviata direttamente al browser richiesto.

I file memorizzati nella cache vengono archiviati in application/cachecartella. La memorizzazione nella cache può essere abilitata per pagina. Durante l'attivazione della cache, dobbiamo impostare il tempo, fino al quale deve rimanere nella cartella cache e dopo quel periodo, verrà eliminato automaticamente.

Abilita la memorizzazione nella cache

La memorizzazione nella cache può essere abilitata eseguendo la riga seguente in uno qualsiasi dei metodi del controller.

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

Dove $n è il numero di minutes, desideri che la pagina rimanga memorizzata nella cache tra gli aggiornamenti.

Disabilita la cache

Il file della cache viene eliminato quando scade ma quando si desidera eliminarlo manualmente, è necessario disabilitarlo. È possibile disabilitare la memorizzazione nella cache eseguendo la riga seguente.

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

Esempio

Crea un controller chiamato Cache_controller.php e salvalo in application/controller/Cache_controller.php

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

Crea un file di visualizzazione chiamato test.php e salvalo in application/views/test.php

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

Cambiare il routes.php file in application/config/routes.php per aggiungere il percorso per il controller di cui sopra e aggiungere la seguente riga alla fine del file.

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

Digita il seguente URL nel browser per eseguire l'esempio.

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

Dopo aver visitato l'URL sopra, vedrai che verrà creato un file di cache per questo application/cachecartella. Per eliminare il file, visitare il seguente URL.

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

Durante la creazione di un'applicazione Web, spesso è necessario reindirizzare l'utente da una pagina a un'altra. CodeIgniter ci rende questo lavoro facile. Ilredirect() a questo scopo viene utilizzata la funzione.

Syntax

reindirizzare($uri = '', $metodo = 'auto', $ code = NULL )

Parameters

  • $uri( stringa ) - stringa URI

  • $method( stringa ) - Metodo di reindirizzamento ('auto', 'location' o 'refresh')

  • $code( stringa ) - Codice di risposta HTTP (solitamente 302 o 303)

Return type

vuoto

Il primo argomento può avere due tipi di URI. Possiamo passare l'URL completo del sito o i segmenti URI al controller che desideri indirizzare.

Il secondo parametro opzionale può avere uno qualsiasi dei tre valori da auto, location o refresh. L'impostazione predefinita è auto.

Il terzo parametro facoltativo è disponibile solo con i reindirizzamenti di posizione e consente di inviare un codice di risposta HTTP specifico.

Esempio

Crea un controller chiamato Redirect_controller.php e salvalo in application/controller/Redirect_controller.php

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

Cambiare il routes.php file in application/config/routes.php per aggiungere il percorso per il controller di cui sopra e aggiungere la seguente riga alla fine del file.

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

Digita il seguente URL nel browser per eseguire l'esempio.

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

L'URL sopra riportato ti reindirizzerà al sito Web tutorialspoint.com e se visiti il ​​seguente URL, ti reindirizzerà al tutorial di computer grafica su tutorialspoint.com.

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

Quando creiamo un'applicazione web, siamo molto preoccupati per le prestazioni del sito web in termini di tempo impiegato dal controller per l'esecuzione e quanta memoria viene utilizzata. Non solo le prestazioni, ma abbiamo anche bisogno di vedere le intuizioni di dati come i dati POST, i dati delle query di database, i dati di sessione ecc. Per scopi di debug durante lo sviluppo di alcune applicazioni. CodeIgniter ci ha semplificato questo lavoro profilando un'applicazione.

Abilita profilazione

Per abilitare la profilazione della tua applicazione, esegui semplicemente il comando indicato di seguito in uno qualsiasi dei metodi del tuo controller.

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

Il report della profilazione è visibile in fondo alla pagina dopo averlo abilitato.

Disabilita la profilazione

Per disabilitare la profilazione della tua applicazione, esegui semplicemente il comando indicato di seguito in uno qualsiasi dei metodi del tuo controller.

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

Abilita / Disabilita la sezione Profiler

La profilazione può essere eseguita in base alla sezione. È possibile abilitare o disabilitare la creazione di profili di una sezione impostando un valore booleano TRUE o FALSE. Se vuoi impostare la profilazione sull'applicazione, puoi farlo in un file situato inapplication/config/profiler.php

Ad esempio, il comando seguente abiliterà le query di profilatura per l'intera applicazione.

$config['queries'] = TRUE;

Nella tabella seguente, la chiave è il parametro, che può essere impostato nell'array di configurazione per abilitare o disabilitare un particolare profilo.

Chiave Descrizione Predefinito

benchmarks

Tempo trascorso dei punti di benchmark e tempo di esecuzione totale VERO

config

Variabili CodeIgniterConfig VERO

controller_info

La classe e il metodo Controller richiesti VERO

get

Tutti i dati GET passati nella richiesta VERO

http_headers

Le intestazioni HTTP per la richiesta corrente VERO

memory_usage

Quantità di memoria consumata dalla richiesta corrente, in byte VERO

post

Tutti i dati POST passati nella richiesta VERO

queries

Elenco di tutte le query di database eseguite, incluso il tempo di esecuzione VERO

uri_string

L'URI della richiesta corrente VERO

session_data

Dati memorizzati nella sessione corrente VERO

query_toggle_count

Il numero di query dopo le quali il blocco di query sarà nascosto per impostazione predefinita. 25

Il profiler impostato nel file in application/config/profiler.php può essere sovrascritto utilizzando il set_profiler_sections() funzione nei controller come mostrato di seguito.

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

Impostazione dei punti di riferimento

Se si desidera misurare il tempo impiegato per eseguire un insieme di righe o l'utilizzo della memoria, è possibile calcolarlo utilizzando i punti di benchmarking in CodeIgniter. C'è un separato "Benchmarking"Classe per questo scopo in CodeIgniter.

Questa classe viene caricata automaticamente; non devi caricarlo. Può essere utilizzato ovunque nel controller, nella vista e nelle classi del modello. Tutto quello che devi fare è contrassegnare un punto iniziale e un punto finale e quindi eseguire ilelapsed_time() funzione tra questi due punti contrassegnati e puoi ottenere il tempo necessario per eseguire quel codice come mostrato di seguito.

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

Per visualizzare l'utilizzo della memoria, utilizzare la funzione memory_usage() come mostrato nel codice seguente.

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

Esempio

Crea un controller chiamato Profiler_controller.php e salvalo in application/controller/Profiler_controller.php

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

Crea un file di visualizzazione chiamato test.php e salvalo in application/views/test.php

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

Cambia il file routes.php in application/config/routes.php per aggiungere il percorso per il controller di cui sopra e aggiungere la seguente riga alla fine del file.

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

Successivamente, puoi digitare il seguente URL nella barra degli indirizzi del tuo browser per eseguire l'esempio.

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

L'URL sopra abiliterà il profiler e produrrà un output come mostrato nello screenshot seguente.

Per disabilitare la profilazione, eseguire il seguente URL.

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

L'aggiunta di file JavaScript e CSS (Cascading Style Sheet) in CodeIgniter è molto semplice. Devi creare la cartella JS e CSS nella directory principale e copiare tutti i file .js nella cartella JS e i file .css nella cartella CSS come mostrato in figura.

Ad esempio, supponiamo di aver creato un file JavaScript sample.js e un file CSS style.css. Ora, per aggiungere questi file alle visualizzazioni, carica l'helper URL nel controller come mostrato di seguito.

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

Dopo aver caricato l'helper URL nel controller, aggiungi semplicemente le righe indicate di seguito nel file di visualizzazione, per caricare il file sample.js e style.css nella vista come mostrato di seguito.

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

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

Esempio

Crea un controller chiamato Test.php e salvalo in application/controller/Test.php

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

Crea un file di visualizzazione chiamato test.php e salvalo in application/views/test.php

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

Crea un file CSS chiamato style.css e salvalo in css/style.css

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

Crea un file JS chiamato sample.js e salvalo in js/sample.js

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

Cambiare il routes.php file in application/config/routes.php per aggiungere il percorso per il controller di cui sopra e aggiungere la seguente riga alla fine del file.

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

Utilizza il seguente URL nel browser per eseguire l'esempio precedente.

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

La classe di lingua in CodeIgniter fornisce un modo semplice per supportare più lingue per l'internazionalizzazione. In una certa misura, possiamo utilizzare file di lingue diverse per visualizzare il testo in molte lingue diverse.

Possiamo mettere diversi file di lingua nella directory dell'applicazione / lingua. I file della lingua di sistema possono essere trovati nella directory system / language, ma per aggiungere la propria lingua all'applicazione, è necessario creare una cartella separata per ciascuna lingua nella directory application / language.

Creazione di file Lingua

Per creare un file di lingua, è necessario terminarlo con _lang.php. Ad esempio, se si desidera creare un file di lingua per la lingua francese, è necessario salvarlo confrench_lang.php. All'interno di questo file è possibile memorizzare tutti i testi in lingua in chiave, combinazione di valori in$lang matrice come mostrato di seguito.

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

Caricamento del file della lingua

Per utilizzare qualsiasi lingua nella tua applicazione, devi prima caricare il file di quella particolare lingua per recuperare i vari testi memorizzati in quel file. È possibile utilizzare il codice seguente per caricare il file della lingua.

$this->lang->load('filename', 'language');
  • filename- È il nome del file che desideri caricare. Non utilizzare l'estensione del file qui ma solo il nome del file.

  • Language - È il set di lingue che lo contiene.

Recupero del testo in lingua

Per recuperare una riga dal file della lingua è sufficiente eseguire il codice seguente.

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

Dove language_key è il parametro chiave utilizzato per recuperare il valore della chiave nel file di lingua caricato.

Lingue di caricamento automatico

Se hai bisogno di una lingua a livello globale, puoi caricarla automaticamente application/config/autoload.php file come mostrato di seguito.

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

Semplicemente, passa le diverse lingue per essere caricato automaticamente da CodeIgniter.

Esempio

Crea un controller chiamato Lang_controller.php e salvalo in application/controller/Lang_controller.php

<?php
   class Lang_controller extends CI_Controller {

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

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

Crea un file di visualizzazione chiamato lang_view.php e salvalo in application/views/ lang_view.php

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

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

Crea tre cartelle chiamate inglese, francese e tedesco in application/language come mostrato nella figura sotto.

Copia il codice indicato di seguito e salvalo in formato english_lang.php file in application/language/english cartella.

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

Copia il codice indicato di seguito e salvalo in formato french_lang.php file in application/language/French cartella.

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

Copia il codice indicato di seguito e salvalo in formato german_lang.php file in application/language/german cartella.

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

Cambiare il routes.php file in application/config/routes.php per aggiungere il percorso per il controller di cui sopra e aggiungere la seguente riga alla fine del file.

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

Esegui il seguente URL nel browser per eseguire l'esempio precedente.

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

Produrrà un output come mostrato nello screenshot seguente. Se si modifica la lingua nell'elenco a discesa, anche la lingua della frase scritta sotto il menu a discesa cambierà di conseguenza.

Prevenzione XSS

XSS significa cross-site scripting. CodeIgniter viene fornito con la sicurezza del filtro XSS. Questo filtro impedirà qualsiasi codice JavaScript dannoso o qualsiasi altro codice che tenti di dirottare i cookie e svolgere attività dannose. Per filtrare i dati tramite il filtro XSS, utilizzare ilxss_clean() metodo come mostrato di seguito.

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

Dovresti usare questa funzione solo quando invii i dati. Il secondo parametro booleano opzionale può essere utilizzato anche per controllare il file immagine per l'attacco XSS. Questo è utile per la funzione di caricamento dei file. Se il suo valore è vero, significa che l'immagine è sicura e non altrimenti.

Prevenzione di SQL Injection

L'iniezione di SQL è un attacco effettuato sulla query del database. In PHP, usiamomysql_real_escape_string() funzione per impedire ciò insieme ad altre tecniche, ma CodeIgniter fornisce funzioni e librerie integrate per impedirlo.

Possiamo impedire SQL Injection in CodeIgniter nei seguenti tre modi:

  • Query in fuga
  • Richiesta di query
  • Classe record attiva

Query in fuga

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

$this->db->escape() La funzione aggiunge automaticamente virgolette singole intorno ai dati e determina il tipo di dati in modo che possa sfuggire solo ai dati stringa.

Richiesta di query

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

Nell'esempio precedente, il punto interrogativo (?) Verrà sostituito dall'array nel secondo parametro della funzione query (). Il vantaggio principale di creare query in questo modo è che i valori vengono automaticamente sottoposti a escape, il che produce query sicure. Il motore CodeIgniter lo fa automaticamente, quindi non devi ricordarlo.

Classe record attiva

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

Utilizzando i record attivi, la sintassi della query viene generata da ogni adattatore di database. Consente inoltre query più sicure, poiché i valori escono automaticamente.

Nascondere gli errori PHP

Nell'ambiente di produzione, spesso non si desidera visualizzare alcun messaggio di errore agli utenti. Va bene se è abilitato nell'ambiente di sviluppo per scopi di debug. Questi messaggi di errore possono contenere alcune informazioni, che non dovremmo mostrare agli utenti del sito per motivi di sicurezza.

Esistono tre file CodeIgniter correlati agli errori.

Livello di segnalazione errori PHP

Un ambiente diverso richiede diversi livelli di segnalazione degli errori. Per impostazione predefinita, lo sviluppo mostrerà gli errori ma i test e il live li nasconderanno. C'è un file chiamatoindex.phpnella directory principale di CodeIgniter, che viene utilizzata per questo scopo. Se passiamo zero come argomento aerror_reporting() funzione quindi che nasconderà tutti gli errori.

Errore di Database

Anche se hai disattivato gli errori PHP, gli errori MySQL sono ancora aperti. Puoi disattivarlo inapplication/config/database.php. Impostare ildb_debug opzione in $db matrice a FALSE come mostrato di seguito.

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

Registro degli errori

Un altro modo è trasferire gli errori nei file di registro. Quindi, non verrà mostrato agli utenti sul sito. Semplicemente, imposta il filelog_threshold valore in $config matrice a 1 pollice application/cofig/config.php file come mostrato di seguito.

$config['log_threshold'] = 1;

Prevenzione CSRF

CSRF sta per cross-site request forgery. Puoi prevenire questo attacco abilitandolo nel fileapplication/config/config.php file come mostrato di seguito.

$config['csrf_protection'] = TRUE;

Quando crei un modulo usando form_open()funzione, inserirà automaticamente un CSRF come campo nascosto. Puoi anche aggiungere manualmente il CSRF utilizzando il fileget_csrf_token_name() e get_csrf_hash()funzione. Ilget_csrf_token_name() la funzione restituirà il nome del CSRF e get_csrf_hash() restituirà il valore hash di CSRF.

Il token CSRF può essere rigenerato ogni volta per l'invio oppure puoi mantenerlo lo stesso per tutta la vita del cookie CSRF. Impostando il valoreTRUE, nell'array di configurazione con chiave ‘csrf_regenerate’ rigenererà il token come mostrato di seguito.

$config['csrf_regenerate'] = TRUE;

È anche possibile inserire nella whitelist gli URL dalla protezione CSRF impostandoli nell'array di configurazione utilizzando la chiave ‘csrf_exclude_uris’come mostrato di seguito. Puoi anche usare espressioni regolari.

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

Gestione delle password

Molti sviluppatori non sanno come gestire la password nelle applicazioni web, motivo per cui molti hacker trovano così facile entrare nei sistemi. Tenere presente i seguenti punti durante la gestione delle password:

  • NON memorizzare le password in formato di testo normale.

  • Esegui sempre l'hash delle tue password.

  • NON utilizzare Base64 o codifiche simili per memorizzare le password.

  • NON utilizzare algoritmi di hashing deboli o non funzionanti come MD5 o SHA1. Utilizza solo algoritmi di hashing delle password complessi come BCrypt, che viene utilizzato nelle funzioni di hash delle password di PHP.

  • NON visualizzare o inviare mai una password in formato testo normale.

  • NON porre limiti inutili alle password dei tuoi utenti.