CodeIgniter - Szybki przewodnik
CodeIgniter to framework do tworzenia aplikacji, który może być używany do tworzenia stron internetowych przy użyciu PHP. Jest to framework Open Source. Posiada bardzo bogaty zestaw funkcjonalności, który przyspieszy prace nad tworzeniem strony internetowej.
Jeśli dobrze znasz PHP, CodeIgniter ułatwi Ci zadanie. Posiada bardzo bogaty zestaw bibliotek i pomocników. Używając CodeIgniter zaoszczędzisz dużo czasu, jeśli tworzysz stronę internetową od podstaw. Co więcej, strona internetowa zbudowana w CodeIgniter jest również bezpieczna, ponieważ ma możliwość zapobiegania różnym atakom, które mają miejsce za pośrednictwem stron internetowych.
Funkcje CodeIgniter
Niektóre z ważnych funkcji CodeIgniter są wymienione poniżej -
System oparty na modelu-widoku-kontrolerze
Niezwykle lekki
W pełni funkcjonalne klasy bazy danych z obsługą kilku platform.
Obsługa bazy danych Query Builder
Walidacja formularzy i danych
Bezpieczeństwo i filtrowanie XSS
Zarządzanie sesjami
Klasa wysyłania wiadomości e-mail. Obsługuje załączniki, wiadomości e-mail HTML / tekstowe, wiele protokołów (sendmail, SMTP i Mail) i nie tylko.
Biblioteka manipulacji obrazami (kadrowanie, zmiana rozmiaru, obracanie itp.). Obsługuje GD, ImageMagick i NetPBM
Klasa przesyłania plików
Klasa FTP
Localization
Pagination
Szyfrowanie danych
Benchmarking
Buforowanie całej strony
Rejestrowanie błędów
Profilowanie aplikacji
Klasa kalendarza
Klasa agenta użytkownika
Klasa kodowania Zip
Klasa silnika szablonu
Klasa Trackback
Biblioteka XML-RPC
Klasa testów jednostkowych
Przyjazne dla wyszukiwarek adresy URL
Elastyczny routing URI
Wsparcie dla hooków i rozszerzeń klas
Duża biblioteka funkcji pomocniczych
Instalacja CodeIgnitera jest bardzo łatwa. Po prostu wykonaj kroki podane poniżej -
Step-1- Pobierz CodeIgniter z linku CodeIgniter
Step-2 - Rozpakuj folder.
Step-3 - Prześlij wszystkie pliki i foldery na swój serwer.
Step-4 - Po załadowaniu wszystkich plików na serwer, odwiedź adres URL swojego serwera, np. Www.nazwa-domeny.com.
Po odwiedzeniu adresu URL zobaczysz następujący ekran -
Architekturę aplikacji CodeIgniter przedstawiono poniżej.
Jak pokazano na rysunku, za każdym razem, gdy żądanie przychodzi do CodeIgniter, najpierw trafia do index.php strona.
W drugim kroku Routing zdecyduje, czy przekazać to żądanie do kroku 3 w celu buforowania, czy też do kroku 4 w celu sprawdzenia bezpieczeństwa.
Jeśli żądana strona już istnieje Caching, następnie Routing przekaże żądanie do kroku 3, a odpowiedź wróci do użytkownika.
Jeśli żądana strona nie istnieje w Caching, następnie Routing przekaże żądaną stronę do kroku 4 dla Security czeki.
Przed przekazaniem wniosku do Application Controller, the Securityz przesłanych danych jest sprawdzana. PoSecurity Sprawdź Application Controller konieczne ładunki Models, Libraries, Helpers, Plugins i Scripts i przekaż dalej View.
Plik View wyrenderuje stronę z dostępnymi danymi i przekaże ją dalej Caching. Ponieważ żądana strona nie była wcześniej buforowana, tym razem zostanie zapisana w pamięci podręcznejCaching, aby szybko przetworzyć tę stronę dla przyszłych żądań.
Struktura katalogów
Poniższy obraz przedstawia strukturę katalogów CodeIgniter.
Struktura katalogów CodeIgniter jest podzielona na 3 foldery -
- Application
- System
- User_guide
Podanie
Jak wskazuje nazwa, folder aplikacji zawiera cały kod aplikacji, którą tworzysz. To jest folder, w którym będziesz rozwijać swój projekt. Folder aplikacji zawiera kilka innych folderów, które wyjaśniono poniżej -
Cache- Ten folder zawiera wszystkie zapisane w pamięci podręcznej strony aplikacji. Te strony w pamięci podręcznej zwiększą ogólną szybkość dostępu do stron.
Config- Ten folder zawiera różne pliki do konfigurowania aplikacji. Z pomocąconfig.phpużytkownik może skonfigurować aplikację. Za pomocądatabase.php użytkownik może skonfigurować bazę danych aplikacji.
Controllers- W tym folderze znajdują się kontrolery Twojej aplikacji. To podstawowa część Twojej aplikacji.
Core - Ten folder będzie zawierał klasę bazową Twojej aplikacji.
Helpers - W tym folderze możesz umieścić klasę pomocniczą swojej aplikacji.
Hooks - Pliki w tym folderze umożliwiają wykorzystanie i modyfikowanie wewnętrznego działania frameworka bez hakowania podstawowych plików.
Language - Ten folder zawiera pliki związane z językami.
Libraries - Ten folder zawiera pliki bibliotek opracowanych dla Twojej aplikacji.
Logs - Ten folder zawiera pliki związane z dziennikiem systemu.
Models - Dane logowania do bazy danych zostaną umieszczone w tym folderze.
Third_party - W tym folderze możesz umieścić dowolne wtyczki, które będą używane w Twojej aplikacji.
Views - Pliki HTML aplikacji zostaną umieszczone w tym folderze.
System
Ten folder zawiera podstawowe kody CodeIgniter, biblioteki, pomocniki i inne pliki, które ułatwiają kodowanie. Te biblioteki i pomocniki są ładowane i używane podczas tworzenia aplikacji sieci Web.
Ten folder zawiera cały kod konsekwencji CodeIgniter, uporządkowany w różnych folderach -
Core- Ten folder zawiera podstawową klasę CodeIgniter. Nie modyfikuj niczego tutaj. Cała Twoja praca będzie odbywać się w folderze aplikacji. Nawet jeśli twoim zamiarem jest rozszerzenie rdzenia CodeIgniter, musisz to zrobić za pomocą haków, a haki znajdują się w folderze aplikacji.
Database - Folder bazy danych zawiera podstawowe sterowniki bazy danych i inne narzędzia bazy danych.
Fonts - Folder czcionek zawiera informacje i narzędzia związane z czcionkami.
Helpers - Folder pomocników zawiera standardowe pomocniki CodeIgniter (takie jak pomocniki daty, plików cookie i adresów URL).
Language- Folder językowy zawiera pliki językowe. Na razie możesz to zignorować.
Libraries- Folder bibliotek zawiera standardowe biblioteki CodeIgniter (aby pomóc Ci z pocztą e-mail, kalendarzami, przesyłaniem plików i nie tylko). Możesz tworzyć własne biblioteki lub rozszerzać (a nawet zastępować) standardowe biblioteki, ale zostaną one zapisane w formacieapplication/libraries katalogu, aby oddzielić je od standardowych bibliotek CodeIgniter zapisanych w tym konkretnym folderze.
User_guide
To jest Twój przewodnik użytkownika CodeIgniter. Jest to w zasadzie wersja offline podręcznika użytkownika na stronie CodeIgniter. Dzięki temu można poznać funkcje różnych bibliotek, pomocników i klas. Zaleca się przeczytanie tego przewodnika użytkownika przed utworzeniem pierwszej aplikacji internetowej w CodeIgniter.
Oprócz tych trzech folderów jest jeszcze jeden ważny plik o nazwie „index.php”. W tym pliku możemy ustawić środowisko aplikacji i poziom błędów oraz możemy zdefiniować nazwę systemu i folderu aplikacji. Zaleca się, aby nie edytować tych ustawień, jeśli nie masz wystarczającej wiedzy na temat tego, co zamierzasz zrobić.
CodeIgniter jest oparty na Model-View-Controller (MVC) development pattern. MVC to podejście programowe, które oddziela logikę aplikacji od prezentacji. W praktyce pozwala na to, aby Twoje strony internetowe zawierały minimalną liczbę skryptów, ponieważ prezentacja jest niezależna od skryptów PHP.
Plik Modelreprezentuje struktury danych. Zwykle klasy modelu zawierają funkcje, które pomagają w pobieraniu, wstawianiu i aktualizowaniu informacji w bazie danych.
Plik Viewto informacje prezentowane użytkownikowi. Widok będzie zwykle stroną internetową, ale w CodeIgniter widok może być również fragmentem strony, takim jak nagłówek lub stopka. Może to być również strona RSS lub jakikolwiek inny typ „strony”.
Plik Controller służy jako pośrednik między modelem, widokiem i innymi zasobami potrzebnymi do przetworzenia żądania HTTP i wygenerowania strony internetowej.
Kontrolery
Kontroler to prosty plik klasy. Jak sama nazwa wskazuje, kontroluje całą aplikację poprzez URI.
Tworzenie kontrolera
Najpierw przejdź do application/controllersteczka. Znajdziesz tam dwa pliki,index.html i Welcome.php. Te pliki są dostarczane z CodeIgniterem.
Zachowaj te pliki bez zmian. Utwórz nowy plik pod tą samą ścieżką o nazwie „Test.php”. Napisz następujący kod w tym pliku -
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
Plik Test class rozszerza wbudowaną klasę o nazwie CI_Controller. Ta klasa musi być rozszerzona, gdy chcesz stworzyć własną klasę Controller.
Wołanie kontrolera
Powyższy kontroler można wywołać przez URI w następujący sposób -
http://www.your-domain.com/index.php/test
Zwróć uwagę na słowo „test”W powyższym identyfikatorze URI po index.php. Wskazuje nazwę klasy kontrolera. Ponieważ podaliśmy nazwę administratora „Test", piszemy "test”Po pliku index.php. Nazwa klasy musi zaczynać się oduppercase letter ale musimy pisać lowercase letterkiedy nazywamy ten kontroler przez URI. Ogólna składnia wywołania kontrolera jest następująca -
http://www.your-domain.com/index.php/controller/method-name
Tworzenie i wywoływanie metody konstruktora
Zmodyfikujmy powyższą klasę i stwórzmy inną metodę o nazwie „hello”.
<?php
class Test extends CI_Controller {
public function index() {
echo "This is default function.";
}
public function hello() {
echo "This is hello function.";
}
}
?>
Możemy wykonać powyższy kontroler na trzy sposoby -
- 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
Po odwiedzeniu pierwszego URI w przeglądarce otrzymujemy dane wyjściowe pokazane na poniższym obrazku. Jak widać, otrzymaliśmy wynik metody „index”, Mimo że nie przekazaliśmy nazwy metody URI. Użyliśmy tylko nazwy kontrolera w URI. W takich sytuacjach CodeIgniter wywołuje metodę domyślną „index”.
Odwiedzając drugi URI w przeglądarce, otrzymujemy takie same dane wyjściowe, jak pokazano na powyższym obrazku. Tutaj przekazaliśmy nazwę metody po nazwie kontrolera w URI. Ponieważ nazwa metody to „index”, Otrzymujemy ten sam wynik.
Odwiedzając trzeci identyfikator URI w przeglądarce, otrzymujemy dane wyjściowe pokazane na poniższym obrazku. Jak widać, otrzymujemy wynik metody „hello”Ponieważ zdaliśmy”hello”Jako nazwa metody, po nazwie kontrolera”test”W identyfikatorze URI.
Punkty do zapamiętania
Nazwa klasy kontrolera musi zaczynać się wielką literą.
Kontroler należy wywołać z użyciem małej litery.
Nie używaj tej samej nazwy metody, co klasa nadrzędna, ponieważ spowoduje to przesłonięcie funkcjonalności klasy nadrzędnej.
Wyświetlenia
Może to być prosta lub złożona strona internetowa, którą może wywołać kontroler. Strona internetowa może zawierać nagłówek, stopkę, pasek boczny itp. Widok nie może być wywołany bezpośrednio. Stwórzmy prosty widok. Utwórz nowy plik podapplication/views z imieniem „test.php”I skopiuj poniższy kod do tego pliku.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
Zmień kod application/controllers/test.php plik, jak pokazano poniżej.
Ładowanie widoku
Widok można załadować za pomocą następującej składni -
$this->load->view('name');
Gdzie nazwa to plik widoku, który jest renderowany. Jeśli planujesz przechowywać plik widoku w jakimś katalogu, możesz użyć następującej składni -
$this->load->view('directory-name/name');
Nie jest konieczne określanie rozszerzenia jako php, chyba że zostanie użyte coś innego niż .php.
Metoda index () wywołuje metodę view i przekazuje „test” jako argument do metody view (), ponieważ zapisaliśmy kod HTML w „test.php”Plik pod application/views/test.php.
<?php
class Test extends CI_Controller {
public function index() {
$this->load->view('test');
}
}
?>
Oto wynik powyższego kodu -
Poniższy schemat blokowy ilustruje, jak wszystko działa -
Modele
Klasy modeli są przeznaczone do pracy z informacjami w bazie danych. Na przykład, jeśli używasz CodeIgniter do zarządzania użytkownikami w swojej aplikacji, musisz mieć klasę modelu, która zawiera funkcje do wstawiania, usuwania, aktualizowania i pobierania danych użytkowników.
Tworzenie klasy modelu
Klasy modelu są przechowywane w plikach application/modelsinformator. Poniższy kod pokazuje, jak utworzyć klasę modelu w CodeIgniter.
<?php
Class Model_name extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Gdzie nazwa_modelu to nazwa klasy modelu, którą chcesz nadać. Każda klasa modelu musi dziedziczyć klasę CI_Model CodeIgniter. Pierwsza litera klasy modelu musi być zapisana wielką literą. Poniżej znajduje się kod klasy modelu użytkowników.
<?php
Class User_model extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Powyższą klasę modelu należy zapisać jako User_model.php. Nazwa klasy i nazwa pliku muszą być takie same.
Ładowanie modelu
Model można wywołać w kontrolerze. Poniższy kod może zostać użyty do załadowania dowolnego modelu.
$this->load->model('model_name');
Gdzie nazwa_modelu to nazwa modelu do załadowania. Po załadowaniu modelu możesz po prostu wywołać jego metodę, jak pokazano poniżej.
$this->model_name->method();
Modele ładowane automatycznie
Mogą wystąpić sytuacje, w których będziesz potrzebować jakiejś klasy modelu w całej aplikacji. W takich sytuacjach lepiej jest go automatycznie doładować.
/*
| ---------------------------------------------------------------
| 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();
Jak pokazano na powyższym rysunku, podaj nazwę modelu w tablicy, którą chcesz automatycznie załadować, a zostanie on automatycznie załadowany, gdy system jest w stanie inicjalizacji i jest dostępny w całej aplikacji.
Pomocnicy
Jak sama nazwa wskazuje, pomoże ci zbudować system. Jest podzielony na małe funkcje, które mają służyć różnej funkcjonalności. W CodeIgniter dostępnych jest wielu pomocników, których lista znajduje się w poniższej tabeli. Możemy też zbudować własnych pomocników.
Pomocnicy są zwykle przechowywani w Twoim system/helperslub application/helpers directory. Pomocnicy niestandardowi są przechowywani w plikachapplication/helpers katalog i pomoce systemowe są przechowywane w system/helpersinformator. CodeIgniter będzie wyglądać jako pierwszy w Twoimapplication/helpers directory. Jeśli katalog nie istnieje lub nie ma określonego helpera, CodeIgniter zajrzy do twojego globalsystem/helpers/ directory. Każdy pomocnik, niezależnie od tego, czy jest to pomocnik niestandardowy, czy systemowy, musi zostać załadowany przed użyciem.
SN | Nazwa i opis pomocnika |
---|---|
1 | Array Helper Plik Array Helper zawiera funkcje pomagające w pracy z tablicami. |
2 | CAPTCHA Helper Plik pomocnika CAPTCHA zawiera funkcje pomagające w tworzeniu obrazów CAPTCHA. |
3 | Cookie Helper Plik Cookie Helper zawiera funkcje ułatwiające pracę z plikami cookie. |
4 | Date Helper Plik pomocnika daty zawiera funkcje ułatwiające pracę z datami. |
5 | Directory Helper Plik Directory Helper zawiera funkcje pomagające w pracy z katalogami. |
6 | Download Helper Pomocnik pobierania umożliwia pobieranie danych na pulpit. |
7 | Email Helper Pomocnik poczty e-mail udostępnia kilka funkcji pomocniczych do pracy z pocztą e-mail. Aby uzyskać bardziej niezawodne rozwiązanie e-mail, zobacz Klasa e-mail CodeIgniter. |
8 | File Helper Plik File Helper zawiera funkcje pomagające w pracy z plikami. |
9 | Form Helper Plik Form Helper zawiera funkcje pomagające w pracy z formularzami. |
10 | HTML Helper Plik pomocniczy HTML zawiera funkcje pomagające w pracy z językiem HTML. |
11 | Inflector Helper Plik Inflector Helper zawiera funkcje, które umożliwiają zmianę słów na liczbę mnogą, pojedynczą, wielkość liter itp. |
12 | Language Helper Plik Language Helper zawiera funkcje pomagające w pracy z plikami językowymi. |
13 | Number Helper Plik Number Helper zawiera funkcje ułatwiające pracę z danymi liczbowymi. |
14 | Path Helper Plik Path Helper zawiera funkcje umożliwiające pracę ze ścieżkami plików na serwerze. |
15 | Security Helper Plik Security Helper zawiera funkcje związane z bezpieczeństwem. |
16 | Smiley Helper Plik Smiley Helper zawiera funkcje umożliwiające zarządzanie uśmieszkami (emotikonami). |
17 | String Helper Plik String Helper zawiera funkcje, które pomagają w pracy z ciągami. |
18 | Text Helper Plik pomocnika tekstu zawiera funkcje pomagające w pracy z tekstem. |
19 | Typography Helper Plik pomocnika typografii zawiera funkcje, które ułatwiają formatowanie tekstu w odpowiedni semantycznie sposób. |
20 | URL Helper Plik URL Helper zawiera funkcje pomagające w pracy z adresami URL. |
21 | XML Helper Plik pomocniczy XML zawiera funkcje pomagające w pracy z danymi XML. |
Ładowanie pomocnika
Pomocnika można załadować, jak pokazano poniżej -
$this->load->helper('name');
Gdzie imię to imię pomocnika. Na przykład, jeśli chcesz załadować pomocnika adresu URL, możesz go załadować jako -
$this->load->helper('url');
Wytyczanie
CodeIgniter ma przyjazny dla użytkownika system routingu URI, dzięki czemu możesz łatwo przekierować adres URL. Zwykle istnieje relacja jeden do jednego między ciągiem adresu URL a odpowiadającą mu klasą / metodą kontrolera. Segmenty w identyfikatorze URI zwykle są zgodne z tym wzorcem -
your-domain.com/class/method/id/
Plik first segment reprezentuje klasę kontrolera, która powinna zostać wywołana.
Plik second segment reprezentuje funkcję lub metodę klasy, którą należy wywołać.
Plik thirdi wszelkie dodatkowe segmenty reprezentują identyfikator i wszelkie zmienne, które zostaną przekazane do kontrolera.
W niektórych sytuacjach możesz chcieć zmienić ten domyślny mechanizm routingu. CodeIgniter zapewnia narzędzie, dzięki któremu możesz ustawić własne reguły routingu.
Dostosuj reguły routingu
Istnieje specjalny plik, w którym możesz sobie z tym wszystkim poradzić. Plik znajduje się w application / config / tours.php. Znajdziesz tablicę o nazwie$route in which you can customize your routing rules. The key in the $tablica tras zadecyduje, co trasować, a wartość zadecyduje, dokąd trasować. W CodeIgniter są trzy zarezerwowane trasy.
SN | Zarezerwowane trasy i opis |
---|---|
1 | $route['default_controller'] Ta trasa wskazuje, która klasa kontrolera powinna zostać załadowana, jeśli identyfikator URI nie zawiera danych, co będzie miało miejsce, gdy ludzie załadują Twój główny adres URL. Zachęcamy do posiadania domyślnej trasy, w przeciwnym razie domyślnie pojawi się strona 404. W tym miejscu możemy ustawić stronę domową serwisu, aby była ładowana domyślnie. |
2 | $route['404_override'] Ta trasa wskazuje, która klasa kontrolera powinna zostać załadowana, jeśli żądany kontroler nie zostanie znaleziony. Zastąpi domyślną stronę błędu 404. Nie wpłynie to nashow_404() funkcja, która będzie kontynuowała ładowanie domyślnej error_404.php plik w application/views/errors/error_404.php. |
3 | $route['translate_uri_dashes'] Jak widać po wartości logicznej, nie jest to dokładnie trasa. Ta opcja umożliwia automatyczne zastępowanie myślników („-”) podkreśleniami w segmentach kontrolera i identyfikatora URI metody, oszczędzając w ten sposób dodatkowe wpisy tras, jeśli trzeba to zrobić. Jest to wymagane, ponieważ myślnik nie jest prawidłowym znakiem klasy lub nazwy metody i spowoduje błąd krytyczny, jeśli spróbujesz go użyć. |
Trasy można dostosować według wildcards lub używając regular expressions ale pamiętaj, że te niestandardowe reguły routingu muszą następować po zastrzeżonych regułach.
Symbole wieloznaczne
Możemy użyć dwóch symboli wieloznacznych, jak wyjaśniono poniżej -
(:num) - Dopasuje segment zawierający tylko cyfry.
(:any) - Dopasuje segment zawierający dowolny znak.
Example
$route['product/:num']='catalog/product_lookup';
W powyższym przykładzie, jeśli dosłowne słowo „produkt” znajduje się w pierwszym segmencie adresu URL, a liczba w drugim segmencie, zamiast tego używana jest klasa „katalog” i metoda „product_lookup”.
Wyrażenia regularne
Podobnie jak symbole wieloznaczne, możemy również używać wyrażeń regularnych w $route array keyczęść. Jeśli jakikolwiek identyfikator URI pasuje do wyrażenia regularnego, zostanie przekierowany do części wartości ustawionej w tablicy $ route.
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
W powyższym przykładzie identyfikator URI podobny do products / shoes / 123 będzie zamiast tego nazywać „shoes”Klasa kontrolera i„id_123" metoda.
Po skonfigurowaniu witryny, następną rzeczą, którą powinniśmy zrobić, jest skonfigurowanie witryny. Folder application / config zawiera grupę plików, które określają podstawową konfigurację witryny.
Konfigurowanie podstawowego adresu URL
Podstawowy adres URL witryny można skonfigurować w pliku application / config / config.php. Jest to adres URL do Twojego katalogu głównego CodeIgniter. Zazwyczaj będzie to Twój podstawowy adres URL z końcowym ukośnikiem, np
http://example.com/
Jeśli nie jest ustawione, CodeIgniter spróbuje odgadnąć protokół, domenę i ścieżkę do Twojej instalacji. Jednak należy zawsze konfigurować to jawnie i nigdy nie polegać na autoguessingu, szczególnie w środowiskach produkcyjnych. Możesz skonfigurować podstawowy adres URL w tablicy $ config za pomocą klucza „base_url”, jak pokazano poniżej -
$config['base_url'] = 'http://your-domain.com';
Konfiguracja bazy danych
Bazę danych serwisu można skonfigurować w pliku application / config / database.php. Często musimy skonfigurować bazę danych dla różnych środowisk, takich jak programowanie i produkcja. Dzięki wielowymiarowej tablicy dostarczonej w CodeIgniterze możemy skonfigurować bazę danych dla różnych środowisk. Ustawienia konfiguracji są przechowywane w tablicy, jak pokazano poniżej -
$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()
);
Możesz zostawić kilka opcji na ich domyślne wartości, z wyjątkiem nazwy hosta, nazwy użytkownika, hasła, bazy danych i dbdriver.
hostname - Podaj tutaj lokalizację swojej bazy danych, np. Localhost lub adres IP
username - Ustaw tutaj nazwę użytkownika swojej bazy danych.
password - Ustaw tutaj hasło do swojej bazy danych.
database - Ustaw tutaj nazwę bazy danych.
dbdriver - Ustaw typ używanej bazy danych, np. MySQL, MySQLi, Postgre SQL, ODBC i MS SQL.
Zmieniając klucz tablicy $db, możesz ustawić inną konfigurację bazy danych, jak pokazano poniżej. Tutaj ustawiliśmy klucz na‘test’ aby ustawić bazę danych dla środowiska testowego, zachowując inne środowisko bazodanowe bez zmian.
$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()
);
Możesz po prostu przełączyć się do innego środowiska, zmieniając wartość zmiennej, jak pokazano poniżej -
$active_group = ‘default’; //This will set the default environment
$active_group = ‘test’; //This will set the test environment
Konfiguracja automatycznego ładowania
Ten plik domyślnie określa, które systemy powinny zostać załadowane. Aby struktura była jak najlżejsza, domyślnie ładowane są tylko absolutnie minimalne zasoby. Należy automatycznie ładować często używany system, zamiast wielokrotnie ładować go na poziomie lokalnym. Oto rzeczy, które możesz załadować automatycznie -
Libraries- Jest to lista bibliotek, które powinny być ładowane automatycznie. Podaj listę bibliotek w tablicy, jak pokazano poniżej, aby były automatycznie ładowane przez CodeIgniter. W tym przykładzie automatycznie ładujemy biblioteki bazy danych, poczty e-mail i sesji.
$autoload['libraries'] = array('database', 'email', 'session');
Drivers- Te klasy znajdują się w system / libraries / lub w katalogu application / libraries /, ale są również umieszczane we własnym podkatalogu i rozszerzają klasę CI_Driver_Library. Oferują wiele wymiennych opcji sterowników. Poniżej znajduje się przykład automatycznego ładowania sterowników pamięci podręcznej.
$autoload['drivers'] = array('cache');
Helper files- Jest to lista plików pomocniczych, które mają być automatycznie ładowane. Podaj listę bibliotek w tablicy, jak pokazano poniżej, do automatycznego ładowania przez CodeIgniter. W podanym przykładzie automatycznie ładujemy adresy URL i pomocniki plików.
$autoload['helper'] = array('url', 'file');
Custom config files- Te pliki są przeznaczone do użytku, tylko jeśli utworzono niestandardowe pliki konfiguracyjne. W przeciwnym razie pozostaw to pole puste. Poniżej znajduje się przykład automatycznego ładowania więcej niż jednego pliku konfiguracyjnego.
$autoload['config'] = array('config1', 'config2');
Language files- Jest to lista plików językowych, które powinny być ładowane automatycznie. Spójrz na przykład podany poniżej. Podaj listę języków w tablicy, jak pokazano poniżej, aby były automatycznie ładowane przez CodeIgniter. Pamiętaj, że nie umieszczaj w pliku części „_lang”. Na przykład „codeigniter_lang.php” będzie przywoływany jako tablica („codeigniter”);
Models- Jest to plik z listą modeli, które powinny zostać automatycznie załadowane. Podaj listę modeli w tablicy, jak pokazano poniżej, aby były automatycznie ładowane przez CodeIgniter. Poniżej znajduje się przykład automatycznego ładowania więcej niż jednego pliku modeli.
$autoload['model'] = array('first_model', 'second_model');
Jak każdy inny framework, musimy często wchodzić w interakcję z bazą danych, a CodeIgniter ułatwia nam to zadanie. Zapewnia bogaty zestaw funkcjonalności do interakcji z bazą danych.
W tej sekcji zrozumiemy, jak funkcje CRUD (tworzenie, odczytywanie, aktualizowanie, usuwanie) współpracują z CodeIgniter. Użyjemystud tabeli, aby wybrać, zaktualizować, usunąć i wstawić dane stud stół.
Nazwa tabeli: kołek | |
---|---|
roll_no | int (11) |
Nazwa | varchar (30) |
Łączenie się z bazą danych
Możemy połączyć się z bazą danych na dwa sposoby -
Automatic Connecting- Automatyczne połączenie można wykonać za pomocą pliku application / config / autoload.php. Automatyczne połączenie załaduje bazę danych dla każdej strony. Musimy tylko dodać bibliotekę bazy danych, jak pokazano poniżej -
$autoload['libraries'] = array(‘database’);
Manual Connecting- Jeśli chcesz połączyć się z bazą danych tylko dla niektórych stron, możemy przejść do połączenia ręcznego. Możemy połączyć się z bazą danych ręcznie, dodając następujący wiersz w dowolnej klasie.
$this->load->database();
Tutaj nie przekazujemy żadnego argumentu, ponieważ wszystko jest ustawione w pliku konfiguracyjnym bazy danych application / config / database.php
Wstawianie rekordu
Aby wstawić rekord do bazy danych, używana jest funkcja insert (), jak pokazano w poniższej tabeli -
Syntax |
insert ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]]) |
Parameters |
|
Returns |
PRAWDA w przypadku sukcesu, FAŁSZ w przypadku porażki |
Return Type |
bool |
Poniższy przykład pokazuje, jak wstawić rekord w studstół. Dane $ to tablica, w której ustawiliśmy dane i wstawiliśmy te dane do tabelistud, Po prostu trzeba przekazać tę tablicę do funkcji insert w 2 nd argument.
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);
Aktualizacja rekordu
Aby zaktualizować rekord w bazie danych, plik update() funkcja jest używana wraz z set() i where()działa zgodnie z poniższymi tabelami. Plikset() funkcja ustawi dane do aktualizacji.
Syntax |
set ( $ key [, $ value = '' [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Instancja CI_DB_query_builder (łączenie metod) |
Return Type |
CI_DB_query_builder |
Plik where() funkcja zdecyduje, który rekord zaktualizować.
Syntax |
gdzie ( $ klucz [, $ wartość = NULL [, $ ucieczka = NULL ]]) |
Parameters |
|
Returns |
Instancja DB_query_builder |
Return Type |
obiekt |
Wreszcie update() funkcja zaktualizuje dane w bazie danych.
Syntax |
update ([ $ table = '' [, $ set = NULL [,$where = NULL[, $limit = NULL ]]]]) |
Parameters |
|
Returns |
PRAWDA w przypadku sukcesu, FAŁSZ w przypadku porażki |
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);
Usuwanie rekordu
Aby usunąć rekord w bazie danych, używana jest funkcja delete (), jak pokazano w poniższej tabeli -
Syntax |
delete ([ $ table = '' [, $ where = '' [,$limit = NULL[, $reset_data = TRUE ]]]]) |
Parameters |
|
Returns |
Instancja CI_DB_query_builder (łączenie metod) lub FALSE w przypadku niepowodzenia |
Return Type |
mieszany |
Użyj poniższego kodu, aby usunąć rekord w studstół. Pierwszy argument wskazuje nazwę tabeli do usunięcia rekordu, a drugi argument decyduje, który rekord należy usunąć.
$this->db->delete("stud", "roll_no = 1");
Wybór rekordu
Aby wybrać rekord w bazie danych, plik get jest używana funkcja, jak pokazano w poniższej tabeli -
Syntax |
get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
Returns |
Instancja CI_DB_result (łączenie metod) |
Return Type |
CI_DB_result |
Użyj poniższego kodu, aby pobrać wszystkie rekordy z bazy danych. Pierwsza instrukcja pobiera wszystkie rekordy z tabeli „stud” i zwraca obiekt, który zostanie zapisany w $ query object. Druga instrukcja nazywaresult() funkcja z obiektem $ query, aby pobrać wszystkie rekordy jako tablicę.
$query = $this->db->get("stud"); $data['records'] = $query->result();
Zamykanie połączenia
Połączenie z bazą danych można zamknąć ręcznie, wykonując następujący kod -
$this->db->close();
Przykład
Utwórz klasę kontrolera o nazwie Stud_controller.php i zapisz go w application/controller/Stud_controller.php
Oto kompletny przykład, w którym wykonywane są wszystkie wyżej wymienione operacje. Przed wykonaniem poniższego przykładu utwórz bazę danych i tabelę zgodnie z instrukcjami podanymi na początku tego rozdziału i wprowadź niezbędne zmiany w pliku konfiguracyjnym bazy danych przechowywanym wapplication/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);
}
}
?>
Utwórz klasę modelu o nazwie Stud_Model.php i zapisz go w 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);
}
}
?>
Utwórz plik widoku o nazwie Stud_add.php i zapisz go w 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>
Utwórz plik widoku o nazwie Stud_edit.php i zapisz go w 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>
Utwórz plik widoku o nazwie Stud_view.php i zapisz go w 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>
Wprowadź następującą zmianę w pliku trasy w application/config/routes.php i dodaj następujący wiersz na końcu pliku.
$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';
Teraz wykonajmy ten przykład, odwiedzając następujący adres URL w przeglądarce. Zastąp twojawitryna.com swoim adresem URL.
http://yoursite.com/index.php/stud
Zasadniczą częścią frameworka CodeIgniter są jego biblioteki. Udostępnia bogaty zestaw bibliotek, które pośrednio zwiększają szybkość tworzenia aplikacji. Biblioteka systemowa znajduje się w system / libraries. Wszystko, co musimy zrobić, to załadować bibliotekę, z której chcemy korzystać. Bibliotekę można załadować, jak pokazano poniżej -
$this->load->library('class name');
Gdzie class nameto nazwa biblioteki, którą chcemy załadować. Jeśli chcemy załadować wiele bibliotek, możemy po prostu przekazać tablicę jako argumentlibrary() funkcja, jak pokazano poniżej -
$this->load->library(array('email', 'table'));
Klasy biblioteczne
Klasy biblioteki znajdują się w system/libraries. Każda klasa ma różne funkcje ułatwiające pracę programistyczną. Poniższa tabela przedstawia nazwy klas biblioteki i jej opis.
SN | Klasa i opis biblioteki |
---|---|
1 | Benchmarking Class Klasa porównawcza jest zawsze aktywna, umożliwiając obliczenie różnicy czasu między dowolnymi dwoma zaznaczonymi punktami. |
2 | Caching Class Ta klasa będzie buforować strony, aby szybko uzyskać dostęp do szybkości strony. |
3 | Calendaring Class Korzystając z tej klasy, możesz dynamicznie tworzyć kalendarze. |
4 | Shopping Cart Class Korzystając z tej klasy, możesz dodać lub usunąć przedmiot z koszyka. Pozycje są zapisywane w sesji i pozostaną aktywne do czasu przeglądania strony przez użytkownika. |
5 | Config Class Korzystając z tej klasy, można pobrać preferencje konfiguracji. Ta klasa jest inicjowana automatycznie. |
6 | Email Class Ta klasa zapewnia funkcje związane z wiadomościami e-mail, takie jak wysyłanie wiadomości e-mail lub odpowiadanie na nie. |
7 | Encryption Class Ta klasa zapewnia dwukierunkowe szyfrowanie danych. |
8 | File Uploading Class Ta klasa udostępnia funkcje związane z przesyłaniem plików. Możesz ustawić różne preferencje, takie jak typ przesyłanego pliku, rozmiar plików itp. |
9 | Form Validation Class Ta klasa udostępnia różne funkcje do walidacji formularza. |
10 | FTP Class Ta klasa udostępnia różne funkcje związane z FTP, takie jak przesyłanie plików w celu usunięcia serwera, przenoszenie, zmiana nazwy lub usuwanie plików na serwerze. |
11 | Image Manipulation Class Manipulowanie obrazem, takie jak zmiana rozmiaru, tworzenie miniatur, kadrowanie, obracanie, znak wodny można wykonać za pomocą tej klasy. |
12 | Input Class Ta klasa wstępnie przetwarza dane wejściowe ze względów bezpieczeństwa. |
13 | Language Class Ta klasa jest używana do internacjonalizacji. |
14 | Loader Class Ta klasa ładuje elementy, takie jak pliki widoku, sterowniki, pomoce, modele itp. |
15 | Migrations Class Ta klasa udostępnia funkcje związane z migracjami baz danych. |
16 | Output Class Ta klasa wysyła dane wyjściowe do przeglądarki, a także buforuje tę stronę internetową. |
17 | Pagination Class Ta klasa dodaje funkcje paginacji do strony internetowej. |
18 | Template Parser Class Klasa Template Parser może wykonywać proste podstawianie tekstu dla pseudozmiennych zawartych w plikach widoku. Może analizować proste zmienne lub pary zmiennych zmiennych. |
19 | Security Class Ta klasa zawiera funkcje związane z bezpieczeństwem, takie jak filtrowanie XSS, CSRF itp. |
20 | Session Library Ta klasa zapewnia funkcje do utrzymywania sesji aplikacji. |
21 | HTML Table Ta klasa służy do automatycznego generowania tabel HTML na podstawie wyników tablicy lub bazy danych. |
22 | Trackback Class Klasa Trackback udostępnia funkcje umożliwiające wysyłanie i odbieranie danych Trackback. |
23 | Typography Class Klasa Typography udostępnia metody, które pomagają w formatowaniu tekstu. |
24 | Unit Testing Class Ta klasa zapewnia funkcje do testowania jednostkowego aplikacji i generowania wyniku. |
25 | URI Class Klasa URI udostępnia metody, które pomagają w pobieraniu informacji z ciągów identyfikatorów URI. Jeśli używasz routingu URI, możesz również pobrać informacje o przekierowanych segmentach. |
26 | User Agent Class Klasa User Agent zapewnia funkcje, które pomagają zidentyfikować informacje o przeglądarce, urządzeniu mobilnym lub robocie odwiedzającym Twoją witrynę. Ponadto możesz uzyskać informacje o stronie odsyłającej, a także o języku i obsługiwanym zestawie znaków. |
27 | XML-RPC and XML-RPC Server Classes Klasy XML-RPC w CodeIgniter pozwalają na wysyłanie żądań do innego serwera lub skonfigurowanie własnego serwera XML-RPC do odbierania żądań. |
28 | Zip Encoding Class Ta klasa służy do tworzenia archiwów zip Twoich danych. |
Tworzenie bibliotek
CodeIgniter posiada bogaty zestaw bibliotek, które można znaleźć w system/libraries folder, ale CodeIgniter nie ogranicza się tylko do bibliotek systemowych, możesz także tworzyć własne biblioteki, które można przechowywać w application/librariesteczka. Biblioteki można tworzyć na trzy sposoby.
- Utwórz nową bibliotekę
- Rozszerz bibliotekę natywną
- Zastąp bibliotekę natywną
Utwórz nową bibliotekę
Tworząc nową bibliotekę należy pamiętać o następujących rzeczach -
- Nazwa pliku musi zaczynać się od dużej litery, np. Mylibrary.php
- Nazwa klasy musi zaczynać się od dużej litery, np. Class Mylibrary
- Nazwa klasy i nazwa pliku muszą być zgodne.
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
Powyższą bibliotekę można załadować, po prostu wykonując następujący wiersz w kontrolerze.
$this->load->library(‘mylibrary’);
mylibrary to nazwa Twojej biblioteki, którą możesz zapisać zarówno małymi, jak i dużymi literami. Użyj nazwy biblioteki bez rozszerzenia „.php”. Po załadowaniu biblioteki możesz również wywołać funkcję tej klasy, jak pokazano poniżej.
$this->mylibrary->some_function();
Rozszerz bibliotekę natywną
Czasami może być konieczne dodanie własnej funkcjonalności do biblioteki dostarczonej przez CodeIgniter. CodeIgniter zapewnia narzędzie, dzięki któremu możesz rozszerzyć natywną bibliotekę i dodać własne funkcje. Aby to osiągnąć, należy rozszerzyć klasę rodzimej klasy biblioteki. Na przykład, jeśli chcesz rozszerzyć bibliotekę poczty e-mail, możesz to zrobić, jak pokazano poniżej -
Class MY_Email extends CI_Email {
}
Tutaj, w powyższym przykładzie, klasa MY_Email rozszerza klasę poczty e-mail CI_Email biblioteki natywnej. Bibliotekę tę można załadować standardowym sposobem ładowania biblioteki poczty elektronicznej. Zapisz powyższy kod w pliku My_Email.php
Zastąp bibliotekę natywną
W niektórych sytuacjach nie chcesz używać biblioteki natywnej w sposób, w jaki działa i chcesz ją zastąpić na swój własny sposób. Można to zrobić, zastępując bibliotekę natywną. Aby to osiągnąć, wystarczy podać taką samą nazwę klasy, jak w bibliotece natywnej. Na przykład, jeśli chcesz zastąpić plikEmail class, a następnie użyj kodu, jak pokazano poniżej. Zapisz nazwę pliku wEmail.php i nadaj nazwę klasy CI_Email.
Email.php
Class CI_Email {
}
Wielokrotnie podczas korzystania z aplikacji natrafiamy na błędy. Jest to bardzo irytujące dla użytkowników, jeśli błędy nie są prawidłowo obsługiwane. CodeIgniter zapewnia łatwy mechanizm obsługi błędów.
Chcesz, aby komunikaty były wyświetlane, gdy aplikacja jest w trybie programowania, a nie w trybie produkcyjnym, ponieważ komunikaty o błędach można łatwo rozwiązać na etapie programowania.
Środowisko twojej aplikacji można zmienić, zmieniając podaną poniżej linię z index.phpplik. Można ustawić dowolną wartość, ale zwykle do tego celu służą trzy wartości (programowanie, testowanie, produkcja).
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
Różne środowiska będą wymagać różnych poziomów raportowania błędów. Domyślnie tryb programistyczny wyświetla błędy i testy, a tryb na żywo je ukrywa. CodeIgniter zapewnia trzy funkcje, jak pokazano poniżej, do obsługi błędów.
show_error() funkcja wyświetla błędy w formacie HTML u góry ekranu.
Syntax |
show_error ( $ wiadomość,$status_code, $header = 'Napotkano błąd' ) |
Parameters |
|
Return Type |
mieszany |
show_404() funkcja wyświetla błąd, jeśli próbujesz uzyskać dostęp do strony, która nie istnieje.
Syntax |
show_404 ( $ page = '', $ log_error = TRUE ) |
Parameters |
|
Return Type |
unieważnić |
log_message()Funkcja służy do zapisywania komunikatów dziennika. Jest to przydatne, gdy chcesz pisać własne wiadomości.
Syntax |
log_message ( $ poziom,$message, $php_error = FALSE ) |
Parameters |
|
Return Type |
unieważnić |
Logowanie można włączyć w application/config/config.phpplik. Poniżej znajduje się zrzut ekranu z pliku config.php, w którym można ustawić wartość progową.
/*
|--------------------------------------------------------------------------------
| 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;
Komunikaty dziennika można znaleźć w application/log/. Przed włączeniem plików dziennika upewnij się, że w tym katalogu można zapisywać.
Różne szablony komunikatów o błędach można znaleźć w application/views/errors/cli lub application/views/errors/html.
Korzystając z klasy File Uploading, możemy przesyłać pliki, a także możemy ograniczyć typ i rozmiar przesyłanego pliku. Postępuj zgodnie z krokami przedstawionymi w podanym przykładzie, aby zrozumieć proces przesyłania plików w CodeIgniter.
Przykład
Skopiuj następujący kod i zapisz go pod adresem 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>
Skopiuj poniższy kod i zapisz go pod adresem 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>
Skopiuj poniższy kod i zapisz go pod adresem application/controllers/Upload.php. Stwórz "uploads”W katalogu głównym CodeIgniter, tj. W katalogu nadrzędnym folderu aplikacji.
<?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);
}
}
}
?>
Wprowadź następującą zmianę w pliku trasy w application/config/routes.php i dodaj następujący wiersz na końcu pliku.
$route['upload'] = 'Upload';
Teraz wykonajmy ten przykład, odwiedzając następujący adres URL w przeglądarce. Zastąp twojawitryna.com swoim adresem URL.
http://yoursite.com/index.php/upload
Spowoduje to wyświetlenie następującego ekranu -
Po pomyślnym przesłaniu pliku zobaczysz następujący ekran -
Wysyłanie wiadomości e-mail w CodeIgniter jest znacznie łatwiejsze. Możesz także skonfigurować preferencje dotyczące poczty elektronicznej w CodeIgniter. CodeIgniter zapewnia następujące funkcje do wysyłania wiadomości e-mail -
- Wiele protokołów - poczta, Sendmail i SMTP
- Szyfrowanie TLS i SSL dla SMTP
- Wielu odbiorców
- CC i BCC
- E-mail w formacie HTML lub Plaintext
- Attachments
- Zawijanie słów
- Priorities
- Tryb BCC Batch, umożliwiający rozbicie dużych list e-mailowych na małe partie BCC.
- Narzędzia do debugowania poczty e-mail
Klasa poczty e-mail ma następujące funkcje, aby uprościć zadanie wysyłania wiadomości e-mail.
SN | Składnia | Parametry | Powrót | Typ zwrotu |
---|---|---|---|---|
1 | from ( $ from [, $ name = '' [, $ return_path = NULL ]]) | $from( string ) - adres e-mail „Od” $name( string ) - nazwa wyświetlana „Od” $return_path( string ) - Opcjonalny adres e-mail, na który ma przekierowywać niedostarczoną wiadomość e-mail |
Instancja CI_Email (łączenie metod) | CI_Email |
2 | Reply_to ( $ replyto [, $ name = '' ]) | $replyto( string ) - adres e-mail do odpowiedzi $name( string ) - Nazwa wyświetlana dla adresu zwrotnego |
Instancja CI_Email (łączenie metod) | CI_Email |
2 | do ( $ do ) | $to( mieszane ) - ciąg rozdzielany przecinkami lub tablica adresów e-mail |
Instancja CI_Email (łączenie metod) | CI_Email |
3 | cc ( $ cc ) | $cc( mieszane ) - ciąg rozdzielany przecinkami lub tablica adresów e-mail |
Instancja CI_Email (łączenie metod) | CI_Email |
4 | bcc ( $ bcc [, $ limit = '' ]) | $bcc( mieszane ) - ciąg rozdzielany przecinkami lub tablica adresów e-mail $limit( int ) - Maksymalna liczba e-maili do wysłania na paczkę |
Instancja CI_Email (łączenie metod) | CI_Email |
5 | temat ( $ subject ) | $subject( string ) - wiersz tematu wiadomości e-mail |
Instancja CI_Email (łączenie metod) | CI_Email |
6 | wiadomość ( $ body ) | $body( string ) - treść wiadomości e-mail |
Instancja CI_Email (łączenie metod) | CI_Email |
7 | set_alt_message ( $ str ) | $str( string ) - alternatywna treść wiadomości e-mail |
Instancja CI_Email (łączenie metod) | CI_Email |
8 | set_header ( nagłówek $, wartość $ ) | $header( string ) - nazwa nagłówka $value( string ) - wartość nagłówka |
Instancja CI_Email (łączenie metod) | CI_Email |
9 | wyczyść ([ $ clear_attachments = FALSE ]) | $clear_attachments( bool ) - czy usuwać załączniki |
Instancja CI_Email (łączenie metod) | CI_Email |
10 | wyślij ([ $ auto_clear = TRUE ]) | $auto_clear( bool ) - czy automatycznie czyścić dane wiadomości |
Instancja CI_Email (łączenie metod) | CI_Email |
11 | załącz ($ filename [, $disposition = ''[, $newname = NULL [, $ mime = '']]]) | $filename( string ) - nazwa pliku $disposition( string ) - „dyspozycja” załącznika. Większość klientów poczty e-mail podejmuje własne decyzje niezależnie od zastosowanej tutaj specyfikacji MIME. Iana $newname( string ) - niestandardowa nazwa pliku do użycia w wiadomości e-mail $mime( string ) - typ MIME do użycia (przydatne w przypadku danych buforowanych) |
Instancja CI_Email (łączenie metod) | CI_Email |
12 | załącznik_cid ( $ filename ) | $filename( string ) - nazwa istniejącego pliku załącznika |
Załącznik Content-ID lub FALSE, jeśli nie zostanie znaleziony | strunowy |
Wysyłanie wiadomości e-mail
Aby wysłać wiadomość e-mail za pomocą CodeIgniter, najpierw musisz załadować bibliotekę poczty e-mail za pomocą następującego -
$this->load->library('email');
Po załadowaniu biblioteki po prostu wykonaj następujące funkcje, aby ustawić niezbędne elementy do wysłania wiadomości e-mail. Plikfrom() służy do ustawiania - skąd wysyłana jest wiadomość e-mail oraz to()wykorzystywana jest funkcja - do kogo wysyłana jest wiadomość e-mail. Pliksubject() i message() Funkcja służy do ustawienia tematu i treści wiadomości e-mail.
$this->email->from('[email protected]', 'Your Name'); $this->email->to('[email protected]');
$this->email->subject('Email Test'); $this->email->message('Testing the email class.');
Następnie wykonaj send() jak pokazano poniżej, aby wysłać wiadomość e-mail.
$this->email->send();
Przykład
Utwórz plik kontrolera Email_controller.php i zapisz go w 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');
}
}
?>
Utwórz plik widoku o nazwie email_form.php i zapisz go w 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>
Wprowadź zmiany w routes.php plik w application/config/routes.php i dodaj następujący wiersz na końcu pliku.
$route['email'] = 'Email_Controller';
Wykonaj powyższy przykład, odwiedzając poniższy link. Zastąp twojawitryna.com adresem URL swojej witryny.
http://yoursite.com/index.php/email
Walidacja to ważny proces podczas tworzenia aplikacji internetowej. Gwarantuje, że dane, które otrzymujemy, są prawidłowe i ważne do przechowywania lub przetwarzania. CodeIgniter bardzo ułatwiło to zadanie. Zrozummy ten proces na prostym przykładzie.
Przykład
Utwórz plik widoku myform.php i zapisz poniższy kod w formacie application/views/myform.php. Ta strona wyświetli formularz, w którym użytkownik może podać swoje imię i nazwisko, a my zweryfikujemy tę stronę, aby upewnić się, że nie powinna być pusta podczas przesyłania.
<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>
Utwórz plik widoku formsuccess.php i zapisz go w application/views/formsuccess.php. Ta strona zostanie wyświetlona, jeśli formularz zostanie pomyślnie zweryfikowany.
<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>
Utwórz plik kontrolera Form.php i zapisz go w application/controller/Form.php. Ten formularz również pokaże błędy, jeśli nie zostanie poprawnie zweryfikowany lub przekierowany doformsuccess.php strona.
<?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');
}
}
}
?>
Dodaj następujący wiersz application/config/routes.php.
$route['validation'] = 'Form';
Wykonajmy ten przykład, odwiedzając następujący adres URL w przeglądarce. Ten adres URL może być inny w zależności od Twojej witryny.
http://yoursite.com/index.php/validation
Spowoduje to wyświetlenie następującego ekranu -
Dodaliśmy walidację w kontrolerze - Namejest wymagane przed wysłaniem formularza. Tak więc, jeśli klikniesz przycisk przesyłania bez wpisywania czegokolwiek w polu nazwy, zostaniesz poproszony o wpisanie nazwy przed przesłaniem, jak pokazano na poniższym ekranie.
Po pomyślnym wpisaniu nazwy nastąpi przekierowanie do ekranu, jak pokazano poniżej.
W powyższym przykładzie użyliśmy wymaganego ustawienia reguły. W CodeIgniterze dostępnych jest wiele reguł, które opisano poniżej.
Odniesienie do zasad walidacji
Poniżej znajduje się lista wszystkich natywnych reguł, których można używać -
Reguła | Parametr | Opis | Przykład |
---|---|---|---|
required |
Nie | Zwraca FALSE, jeśli element formularza jest pusty. | |
matches |
tak | Zwraca FALSE, jeśli element formularza nie pasuje do elementu w parametrze. | pasuje do [form_item] |
regex_match |
tak | Zwraca FALSE, jeśli element formularza nie pasuje do wyrażenia regularnego. | regex_match [/ regex /] |
differs |
tak | Zwraca FALSE, jeśli element formularza nie różni się od elementu w parametrze. | differs [form_item] |
is_unique |
tak | Zwraca FALSE, jeśli element formularza nie jest unikatowy dla tabeli i nazwy pola w parametrze. Uwaga - aby ta reguła działała, musi być włączona funkcja Query Builder . | is_unique [table.field] |
min_length |
tak | Zwraca FALSE, jeśli element formularza jest krótszy niż wartość parametru. | min_length [3] |
max_length |
tak | Zwraca FALSE, jeśli element formularza jest dłuższy niż wartość parametru. | max_length [12] |
exact_length |
tak | Zwraca FALSE, jeśli element formularza nie jest dokładnie wartością parametru. | exact_length [8] |
greater_than |
tak | Zwraca FALSE, jeśli element formularza jest mniejszy lub równy wartości parametru lub nie jest liczbowy. | Greater_than [8] |
greater_than_equal_to |
tak | Zwraca FALSE, jeśli element formularza jest mniejszy niż wartość parametru lub nie jest liczbą. | Greater_than_equal_to [8] |
less_than |
tak | Zwraca FALSE, jeśli element formularza jest większy lub równy wartości parametru lub nie jest liczbą. | less_than [8] |
less_than_equal_to |
tak | Zwraca FALSE, jeśli element formularza jest większy niż wartość parametru lub nie jest liczbą. | less_than_equal_to [8] |
in_list |
tak | Zwraca FALSE, jeśli element formularza nie znajduje się na z góry określonej liście. | in_list [czerwony, niebieski, zielony] |
alpha |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż znaki alfabetyczne. | |
alpha_numeric |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż znaki alfanumeryczne. | |
alpha_numeric_spaces |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż znaki alfanumeryczne lub spacje. Powinien być używany po przycięciu, aby uniknąć odstępów na początku lub na końcu | |
alpha_dash |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż znaki alfanumeryczne, podkreślenia lub myślniki. | |
numeric |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż znaki numeryczne. | |
integer |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż liczba całkowita. | |
decimal |
Nie | Zwraca FALSE, jeśli element formularza zawiera coś innego niż liczba dziesiętna. | |
is_natural |
Nie | Zwraca FALSE, jeśli element formularza zawiera cokolwiek innego niż liczba naturalna - 0, 1, 2, 3 itd. | |
is_natural_no_zero |
Nie | Zwraca FALSE, jeśli element formularza zawiera coś innego niż liczba naturalna, ale nie zero - 1, 2, 3 itd. | |
valid_url |
Nie | Zwraca FALSE, jeśli element formularza nie zawiera prawidłowego adresu URL. | |
valid_email |
Nie | Zwraca FALSE, jeśli element formularza nie zawiera prawidłowego adresu e-mail. | |
valid_emails |
Nie | Zwraca FALSE, jeśli jakakolwiek wartość podana na liście oddzielonej przecinkami nie jest prawidłowym adresem e-mail. | |
valid_ip |
Nie | Zwraca FALSE, jeśli podany adres IP jest nieprawidłowy. Akceptuje opcjonalny parametr „ipv4” lub „ipv6” w celu określenia formatu IP. | |
valid_base64 |
Nie | Zwraca FALSE, jeśli podany ciąg zawiera cokolwiek innego niż prawidłowe znaki Base64. |
Budując serwisy internetowe często musimy śledzić aktywność i stan użytkownika iw tym celu musimy korzystać session. CodeIgniter ma do tego celu klasę sesji.
Inicjowanie sesji
Dane sesji są dostępne na całym świecie za pośrednictwem witryny, ale aby z nich skorzystać, musimy najpierw zainicjować sesję. Możemy to zrobić, wykonując następujący wiersz w konstruktorze.
$this->load->library('session');
Po załadowaniu biblioteki sesji możesz po prostu użyć obiektu sesji, jak pokazano poniżej.
$this->session
Dodaj dane sesji
W PHP po prostu używamy $_SESSION tablica, aby ustawić dowolne dane w sesji, jak pokazano poniżej.
$_SESSION[‘key’] = value;
Gdzie 'key'to klucz tablicy i value jest przypisany po prawej stronie znaku równości.
To samo można zrobić w CodeIgniter, jak pokazano poniżej.
$this->session->set_userdata('some_name', 'some_value');
set_userdata()funkcja przyjmuje dwa argumenty. Pierwszy argument,some_name, to nazwa zmiennej sesyjnej, pod którą some_value będą przechowywane.
set_userdata() funkcja obsługuje również inną składnię, w której można przekazać tablicę do przechowywania wartości, jak pokazano poniżej.
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Usuń dane sesji
W PHP możemy usunąć dane zapisane w sesji za pomocą rozszerzenia unset() działają, jak pokazano poniżej.
unset($_SESSION[‘some_name’]);
Usuwanie danych sesji w CodeIgniter jest bardzo proste, jak pokazano poniżej. Poniższa wersjaunset_userdata() funkcja usunie tylko jedną zmienną z sesji.
$this->session->unset_userdata('some_name');
Jeśli chcesz usunąć więcej wartości z sesji lub usunąć całą tablicę, możesz użyć poniższej wersji unset_userdata() funkcjonować.
$this->session->unset_userdata($array_items);
Pobierz dane sesji
Po ustawieniu danych w sesji możemy również odzyskać te dane, jak pokazano poniżej. Userdata()W tym celu zostanie wykorzystana funkcja. Ta funkcja zwróciNULL jeśli dane, do których próbujesz uzyskać dostęp, nie są dostępne.
$name = $this->session->userdata('name');
Przykład
Utwórz klasę kontrolera o nazwie Session_controller.php i zapisz go w 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');
}
}
?>
Utwórz plik widoku o nazwie session_view.php i zapisz go w 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>
Wprowadź zmiany w routes.php plik w application/config/routes.php i dodaj następujący wiersz na końcu pliku.
$route['sessionex'] = 'Session_Controller';
Wykonaj powyższy przykład, używając następującego adresu. Zastąpićyoursite.com z adresem URL swojej witryny.
http://yoursite.com/index.php/sessionexBudując aplikację webową musimy tylko raz przechowywać niektóre dane, po czym chcemy je usunąć. Na przykład, aby wyświetlić jakiś komunikat o błędzie lub komunikat informacyjny. W PHP musimy to zrobić ręcznie, ale CodeIgniter ułatwił nam to zadanie. W CodeIgniterze flashdata będą dostępne tylko do następnego żądania i zostaną automatycznie usunięte.
Dodaj Flashdata
Możemy po prostu przechowywać dane flash, jak pokazano poniżej.
$this->session->mark_as_flash('item');
mark_as_flash()służy do tego funkcja, która przyjmuje tylko jeden argument wartości do zapisania. Możemy również przekazać tablicę do przechowywania wielu wartości.
set_flashdata()Można również użyć funkcji, która przyjmuje dwa argumenty, nazwę i wartość, jak pokazano poniżej. Możemy również przekazać tablicę.
$this->session->set_flashdata('item','value');
Pobierz Flashdata
Flashdata można pobrać za pomocą funkcji flashdata (), która pobiera jeden argument elementu do pobrania, jak pokazano poniżej. Funkcja flashdata () zapewnia, że otrzymujesz tylko dane flash, a nie inne dane.
$this->session->flashdata('item');
Jeśli nie przekażesz żadnego argumentu, możesz otrzymać tablicę z tą samą funkcją.
Przykład
Utwórz klasę o nazwie FlashData_Controller.php i zapisz go w 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');
}
}
?>
Utwórz plik widoku o nazwie flashdata_home.php i zapisz go w 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>
Wprowadź zmiany w routes.php plik w application/config/routes.php i dodaj następujący wiersz na końcu pliku.
$route['flashdata'] = 'FlashData_Controller';
$route['flashdata/add'] = 'FlashData_Controller/add';
Wykonaj powyższy przykład, odwiedzając poniższy link. Zastąp twojawitryna.com adresem URL swojej witryny.
http://yoursite.com/index.php/flashdata
Po odwiedzeniu powyższego adresu URL zobaczysz ekran pokazany poniżej.
Kliknij "Click Here”, A zobaczysz ekran pokazany poniżej. Tutaj na tym ekranie zobaczysz wartość zmiennej danych flash. Odśwież stronę ponownie, a zobaczysz ekran jak powyżej, a zmienna flash data zostanie automatycznie usunięta.
W niektórych sytuacjach, gdy chcesz usunąć dane zapisane w sesji po określonym czasie, możesz to zrobić za pomocą tempdata funkcjonalność w CodeIgniter.
Dodaj Tempdata
Aby dodać dane jako tempdata, musimy użyć mark_as_tempdata()funkcjonować. Ta funkcja przyjmuje dwa argumenty lub elementy, które mają być przechowywane jakotempdata a czas wygaśnięcia tych pozycji przedstawiono poniżej.
// 'item' will be erased after 300 seconds(5 minutes)
$this->session->mark_as_temp('item',300);
Możesz również przekazać tablicę do przechowywania wielu danych. Wszystkie zapisane poniżej elementy utracą ważność po 300 sekundach.
$this->session->mark_as_temp(array('item','item2'),300);
Możesz również ustawić inny czas wygaśnięcia dla każdego elementu, jak pokazano poniżej.
// '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
));
Pobierz Tempdata
Możemy pobrać tempdata za pomocą tempdata()funkcjonować. Ta funkcja zapewnia, że otrzymujesz tylko dane tymczasowe, a nie inne dane. Spójrz na poniższy przykład, aby zobaczyć, jak pobrać dane tymczasowe.tempdata() funkcja pobierze jeden argument elementu do pobrania.
$this->session->tempdata('item');
Jeśli pominiesz argument, możesz pobrać wszystkie istniejące tymczasowe dane.
Usuń Tempdata
Dane tymczasowe są usuwane automatycznie po upływie czasu ich wygaśnięcia, ale jeśli chcesz usunąć dane tymczasowe wcześniej, możesz wykonać poniższe czynności za pomocą unset_tempdata() funkcja, która przyjmuje jeden argument elementu do usunięcia.
$this->session->unset_tempdata('item');
Przykład
Utwórz klasę o nazwie Tempdata_controller.php i zapisz go w 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');
}
}
?>
Utwórz plik o nazwie tempdata_view.php i zapisz go w 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>
Wprowadź zmiany w routes.php plik w application / config / tours.php i dodaj następujący wiersz na końcu pliku.
$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";
Wykonaj powyższy przykład, odwiedzając poniższy link. Zastąp twojawitryna.com adresem URL swojej witryny.
http://yoursite.com/index.php/tempdata
Po odwiedzeniu powyższego adresu URL zobaczysz ekran pokazany poniżej.
Kliknij “Click Here” link, a zobaczysz ekran, jak pokazano poniżej.
Tutaj na tym ekranie zobaczysz wartość zmiennej danych tymczasowych. Odśwież tę samą stronę ponownie po pięciu sekundach, ponieważ ustawiliśmy dane tymczasowe na pięć sekund, a zobaczysz ekran podobny do powyższego, a zmienna danych tymczasowych zostanie automatycznie usunięta po pięciu sekundach. Jeśli odświeżysz tę samą stronę przed upływem 5 sekund, dane tymczasowe nie zostaną usunięte, ponieważ okres czasu się nie skończył.
Niszczenie sesji
W PHP używamy session_destroy() function, aby zniszczyć sesję, aw CodeIgniter możemy zniszczyć funkcję, jak pokazano poniżej.
$this->session->sess_destroy();
Po wywołaniu tej funkcji wszystkie dane sesji, w tym plik flashdata i tempdata zostanie trwale usunięty i nie będzie można go odzyskać.
Cookie to niewielka część danych wysyłana z serwera WWW do przechowywania na komputerze klienta. CodeIgniter ma jednego pomocnika o nazwie „Cookie Helper” do zarządzania plikami cookie.
Syntax |
set_cookie ( $ name [, $ value = '' [, $ expire = '' [, $ domain = '' [, $ path = '/' [, $ prefix = '' [, $ secure = FALSE [, $ httponly = FAŁSZ ]]]]]]]]) |
Parameters |
|
Return Type |
unieważnić |
w set_cookie()funkcji, możemy przekazać wszystkie wartości na dwa sposoby. W pierwszym przypadku można przekazać tylko tablicę, aw drugim - poszczególne parametry.
Syntax |
get_cookie ( $ index [, $ xss_clean = NULL ]]) |
Parameters |
|
Return |
Wartość pliku cookie lub NULL, jeśli nie zostanie znaleziona |
Return Type |
mieszany |
Plik get_cookie() funkcja służy do pobrania pliku cookie, który został ustawiony za pomocą funkcji set_cookie ().
Syntax |
delete_cookie ( $ name [, $ domain = '' [, $ path = '/' [, $ prefix = '' ]]]]) |
Parameters |
|
Return Type |
unieważnić |
Plik delete_cookie() Funkcja służy do usuwania cookie ().
Przykład
Utwórz kontroler o nazwie Cookie_controller.php i zapisz go w 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');
}
}
?>
Utwórz plik widoku o nazwie Cookie_view.php i zapisz go w 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>
Zmień plik tours.php w application / config / tours.php, aby dodać trasę dla powyższego kontrolera i dodaj następującą linię na końcu pliku.
$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie";
$route['cookie/delete'] = "Cookie_controller/deletecookie";
Następnie możesz wykonać następujący adres URL w przeglądarce, aby wykonać przykład.
http://yoursite.com/index.php/cookie
Wygeneruje dane wyjściowe, jak pokazano na poniższym zrzucie ekranu.
Funkcje biblioteki CodeIgniter i funkcje pomocnicze muszą zostać zainicjowane przed ich użyciem, ale są pewne typowe funkcje, których nie trzeba inicjować.
Te wspólne funkcje i ich opisy podano poniżej.
Składnia | is_php ( wersja $ ) |
---|---|
Parametry | $version( string ) - numer wersji |
Powrót | PRAWDA, jeśli uruchomiona wersja PHP jest co najmniej podana lub FAŁSZ, jeśli nie |
Typ zwrotu | unieważnić |
Opis | Określa, czy używana wersja PHP jest większa niż podany numer wersji. |
Składnia | is_really_writable ( $ file ) |
---|---|
Parametry | $file( string ) - ścieżka do pliku |
Powrót | TRUE, jeśli ścieżka jest zapisywalna, FALSE, jeśli nie |
Typ zwrotu | bool |
Opis | sprawdza, czy plik jest zapisywalny, czy nie. |
Składnia | config_item ( $ klucz ) |
---|---|
Parametry | $key( string ) - Klucz pozycji konfiguracji |
Powrót | Wartość klucza konfiguracji lub NULL, jeśli nie zostanie znaleziona |
Typ zwrotu | mieszany |
Opis | Ta funkcja jest używana do pobrania elementu konfiguracji |
Składnia | set_status_header ( $ code [, $ text = '' ]) |
---|---|
Parametry | $code( int ) - kod statusu odpowiedzi HTTP $text( string ) - niestandardowy komunikat do ustawienia z kodem stanu |
Powrót | |
Typ zwrotu | unieważnić |
Opis | Ta funkcja umożliwia ręczne ustawienie nagłówka statusu serwera. |
Składnia | remove_invisible_characters ( $ str [, $ url_encoded = TRUE ]) |
---|---|
Parametry | $str( string ) - ciąg wejściowy $url_encoded( bool ) - czy usunąć również znaki zakodowane w URL |
Powrót | Odkażony sznurek |
Typ zwrotu | strunowy |
Opis | Ta funkcja zapobiega wstawianiu znaków NULL między znaki ASCII |
Składnia | html_escape ( $ var ) |
---|---|
Parametry | $var( mieszane ) - zmienna do ucieczki (ciąg lub tablica) |
Powrót | Ciąg (y) ze ucieczką HTML |
Typ zwrotu | mieszany |
Opis | Ta funkcja działa jako natywna funkcja PHP htmlspecialchars (). |
Składnia | get_mimes () |
---|---|
Powrót | Asocjacyjna tablica typów plików |
Typ zwrotu | szyk |
Opis | Ta funkcja zwraca odniesienie do tablicy MIME z application / config / mimes.php . |
Składnia | is_https () |
---|---|
Powrót | TRUE, jeśli obecnie używasz protokołu HTTP-over-SSL, FALSE, jeśli nie |
Typ zwrotu | bool |
Opis | Zwraca TRUE, jeśli używane jest bezpieczne połączenie (HTTPS), i FALSE w każdym innym przypadku (w tym żądania inne niż HTTP). |
Składnia | is_cli () |
---|---|
Powrót | TRUE, jeśli aktualnie działa pod CLI, FALSE w przeciwnym razie |
Typ zwrotu | bool |
Opis | Zwraca TRUE, jeśli aplikacja jest uruchamiana z wiersza poleceń, lub FALSE, jeśli nie. |
Składnia | function_usable ( $ function_name ) |
---|---|
Parametry | $function_name( string ) - nazwa funkcji |
Typ zwrotu | bool |
Opis | Zwraca TRUE, jeśli funkcja istnieje i jest użyteczna, FALSE w przeciwnym razie. |
Poniżej podano przykład, który demonstruje wszystkie powyższe funkcje.
Przykład
Tutaj stworzyliśmy tylko jeden kontroler, w którym będziemy korzystać z powyższych funkcji. Skopiuj poniższy kod i zapisz go w 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";
}
}
?>
Zmienić routes.php plik w application / config / tours.php, aby dodać trasę dla powyższego kontrolera i dodać następujący wiersz na końcu pliku.
$route['commonfunctions'] = 'CommonFun_Controller';
Wpisz następujący adres URL w pasku adresu przeglądarki, aby wykonać przykład.
http://yoursite.com/index.php/commonfunctions
Buforowanie strony poprawi szybkość ładowania strony. Jeśli strona jest buforowana, zostanie zapisana w stanie pełnego wyrenderowania. Następnym razem, gdy serwer otrzyma żądanie dotyczące strony z pamięci podręcznej, zostanie ono wysłane bezpośrednio do żądanej przeglądarki.
Pliki z pamięci podręcznej są przechowywane w plikach application/cacheteczka. Buforowanie można włączyć dla każdej strony. Włączając cache musimy ustawić czas, do którego ma on pozostać w folderze cache i po tym czasie zostanie automatycznie usunięty.
Włącz buforowanie
Buforowanie można włączyć, wykonując następujący wiersz w dowolnej metodzie kontrolera.
$this->output->cache($n);
Gdzie $n jest liczbą minutes, chcesz, aby strona pozostawała w pamięci podręcznej między odświeżeniami.
Wyłącz buforowanie
Plik pamięci podręcznej jest usuwany po wygaśnięciu, ale jeśli chcesz go usunąć ręcznie, musisz go wyłączyć. Możesz wyłączyć buforowanie, wykonując następujący wiersz.
// Deletes cache for the currently requested URI
$this->output->delete_cache();
// Deletes cache for /foo/bar
$this->output->delete_cache('/foo/bar');
Przykład
Utwórz kontroler o nazwie Cache_controller.php i zapisz go w 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');
}
}
?>
Utwórz plik widoku o nazwie test.php i zapisz go w 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>
Zmienić routes.php plik w application/config/routes.php aby dodać trasę dla powyższego kontrolera i dodać następujący wiersz na końcu pliku.
$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';
Wpisz następujący adres URL w przeglądarce, aby wykonać przykład.
http://yoursite.com/index.php/cachecontroller
Po odwiedzeniu powyższego adresu URL zobaczysz, że plik pamięci podręcznej zostanie utworzony w formacie application/cacheteczka. Aby usunąć plik, odwiedź następujący adres URL.
http://yoursite.com/index.php/cachecontroller/delete
Budując aplikację internetową, często musimy przekierować użytkownika z jednej strony na inną. CodeIgniter ułatwia nam tę pracę. Plikredirect() służy do tego funkcja.
Syntax |
przeadresować($uri = '', $metoda = 'auto', $ code = NULL ) |
Parameters |
|
Return type |
unieważnić |
Pierwszy argument może mieć dwa typy identyfikatorów URI. Możemy przekazać pełne segmenty adresu URL witryny lub URI do kontrolera, do którego chcesz skierować.
Drugi opcjonalny parametr może mieć dowolną z trzech wartości: auto, location lub refresh. Wartość domyślna to auto.
Trzeci opcjonalny parametr jest dostępny tylko z przekierowaniami lokalizacji i umożliwia wysłanie określonego kodu odpowiedzi HTTP.
Przykład
Utwórz kontroler o nazwie Redirect_controller.php i zapisz go w 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');
}
}
?>
Zmienić routes.php plik w application/config/routes.php aby dodać trasę dla powyższego kontrolera i dodać następujący wiersz na końcu pliku.
$route['redirect'] = 'Redirect_controller';
$route['redirect/version2'] = 'Redirect_controller/version2'; $route['redirect/computer_graphics'] = 'Redirect_controller/computer_graphics';
Wpisz następujący adres URL w przeglądarce, aby wykonać przykład.
http://yoursite.com/index.php/redirect
Powyższy adres URL przekieruje Cię do witryny tutorialspoint.com i jeśli odwiedzisz następujący adres URL, przekieruje Cię do samouczka grafiki komputerowej na tutorialspoint.com.
http://yoursite.com/index.php/redirect/computer_graphics
Tworząc aplikację internetową, jesteśmy bardzo zaniepokojeni wydajnością strony internetowej pod względem tego, ile czasu zajęło wykonanie kontrolera i ile pamięci jest używane. Nie tylko wydajność, ale musimy również zobaczyć wgląd w dane, takie jak dane POST, dane zapytań do bazy danych, dane sesji itp. W celu debugowania podczas tworzenia niektórych aplikacji. CodeIgniter ułatwił nam tę pracę, profilując aplikację.
Włącz profilowanie
Aby włączyć profilowanie swojej aplikacji, po prostu wykonaj poniższe polecenie w dowolnej metodzie kontrolera.
$this->output->enable_profiler(TRUE);
Raport z profilowania można zobaczyć na dole strony po jego włączeniu.
Wyłącz profilowanie
Aby wyłączyć profilowanie aplikacji, po prostu wykonaj poniższe polecenie w dowolnej metodzie kontrolera.
$this->output->enable_profiler(FALSE);
Włącz / wyłącz sekcję profilera
Profilowanie można przeprowadzić na podstawie sekcji. Możesz włączyć lub wyłączyć profilowanie sekcji, ustawiając wartość logiczną TRUE lub FALSE. Jeśli chcesz ustawić profilowanie w aplikacji to możesz to zrobić w pliku znajdującym się wapplication/config/profiler.php
Na przykład poniższe polecenie włączy zapytania profilujące dla całej aplikacji.
$config['queries'] = TRUE;
W poniższej tabeli kluczem jest parametr, który można ustawić w tablicy config, aby włączyć lub wyłączyć określony profil.
Klucz | Opis | Domyślna |
---|---|---|
benchmarks |
Upływający czas punktów wzorcowych i całkowity czas wykonania | PRAWDZIWE |
config |
Zmienne CodeIgniterConfig | PRAWDZIWE |
controller_info |
Żądana klasa i metoda kontrolera | PRAWDZIWE |
get |
Wszelkie dane GET przekazane w żądaniu | PRAWDZIWE |
http_headers |
Nagłówki HTTP dla bieżącego żądania | PRAWDZIWE |
memory_usage |
Ilość pamięci używanej przez bieżące żądanie w bajtach | PRAWDZIWE |
post |
Wszelkie dane POST przekazane w żądaniu | PRAWDZIWE |
queries |
Lista wszystkich wykonanych zapytań do bazy danych, w tym czas wykonania | PRAWDZIWE |
uri_string |
Identyfikator URI bieżącego żądania | PRAWDZIWE |
session_data |
Dane przechowywane w bieżącej sesji | PRAWDZIWE |
query_toggle_count |
Liczba zapytań, po których blok zapytania zostanie domyślnie ukryty. | 25 |
Profiler ustawiony w pliku w application/config/profiler.php można zastąpić za pomocą set_profiler_sections() działają w kontrolerach, jak pokazano poniżej.
$sections = array(
'config' => TRUE,
'queries' => TRUE
);
$this->output->set_profiler_sections($sections);
Ustalanie punktów wzorcowych
Jeśli chcesz zmierzyć czas potrzebny na wykonanie zestawu wierszy lub użycie pamięci, możesz go obliczyć za pomocą punktów Benchmarking w CodeIgniter. Istnieje oddzielna „Benchmarking”W tym celu w CodeIgniter.
Ta klasa jest ładowana automatycznie; nie musisz go ładować. Może być używany w dowolnym miejscu w klasach kontrolera, widoku i modelu. Wszystko, co musisz zrobić, to zaznaczyć punkt początkowy i końcowy, a następnie wykonaćelapsed_time() funkcji między tymi dwoma zaznaczonymi punktami i możesz uzyskać czas potrzebny do wykonania tego kodu, jak pokazano poniżej.
<?php
$this->benchmark->mark('code_start'); // Some code happens here $this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
?>
Aby wyświetlić wykorzystanie pamięci, użyj funkcji memory_usage() jak pokazano w poniższym kodzie.
<?php
echo $this->benchmark->memory_usage();
?>
Przykład
Utwórz kontroler o nazwie Profiler_controller.php i zapisz go w 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');
}
}
?>
Utwórz plik widoku o nazwie test.php i zapisz go w 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>
Zmień plik route.php pod adresem application/config/routes.php aby dodać trasę dla powyższego kontrolera i dodać następujący wiersz na końcu pliku.
$route['profiler'] = "Profiler_controller"; $route['profiler/disable'] = "Profiler_controller/disable"
Następnie możesz wpisać następujący adres URL w pasku adresu przeglądarki, aby wykonać przykład.
http://yoursite.com/index.php/profiler
Powyższy adres URL włączy profiler i wygeneruje dane wyjściowe, jak pokazano na poniższym zrzucie ekranu.
Aby wyłączyć profilowanie, wykonaj następujący adres URL.
http://yoursite.com/index.php/profiler/disable
Dodanie pliku JavaScript i CSS (Cascading Style Sheet) w CodeIgniter jest bardzo proste. Musisz utworzyć folder JS i CSS w katalogu głównym i skopiować wszystkie pliki .js do folderu JS i pliki .css do folderu CSS, jak pokazano na rysunku.
Na przykład załóżmy, że utworzyłeś jeden plik JavaScript sample.js i jeden plik CSS style.css. Teraz, aby dodać te pliki do swoich widoków, załaduj pomocnika adresu URL w kontrolerze, jak pokazano poniżej.
$this->load->helper('url');
Po załadowaniu pomocnika adresu URL do kontrolera, po prostu dodaj poniższe linie w pliku widoku, aby załadować pliki sample.js i style.css w widoku, jak pokazano poniżej.
<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>
Przykład
Utwórz kontroler o nazwie Test.php i zapisz go w application/controller/Test.php
<?php
class Test extends CI_Controller {
public function index() {
$this->load->helper('url');
$this->load->view('test');
}
}
?>
Utwórz plik widoku o nazwie test.php i zapisz go w 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>
Utwórz plik CSS o nazwie style.css i zapisz go w css/style.css
body {
background:#000;
color:#FFF;
}
Utwórz plik JS o nazwie sample.js i zapisz go w js/sample.js
function test() {
alert('test');
}
Zmienić routes.php plik w application/config/routes.php aby dodać trasę dla powyższego kontrolera i dodać następujący wiersz na końcu pliku.
$route['profiler'] = "Profiler_controller";
$route['profiler/disable'] = "Profiler_controller/disable"
Użyj następującego adresu URL w przeglądarce, aby wykonać powyższy przykład.
http://yoursite.com/index.php/test
Klasa językowa w CodeIgniter zapewnia łatwy sposób obsługi wielu języków w celu internacjonalizacji. Do pewnego stopnia możemy używać różnych plików językowych do wyświetlania tekstu w wielu różnych językach.
W katalogu application / language możemy umieścić różne pliki językowe. Pliki języków systemowych można znaleźć w katalogu system / język, ale aby dodać własny język do aplikacji, należy utworzyć osobny folder dla każdego języka w katalogu application / language.
Tworzenie plików Język
Aby utworzyć plik językowy, musisz zakończyć go rozszerzeniem _lang.php. Na przykład, jeśli chcesz utworzyć plik językowy dla języka francuskiego, musisz go zapisać z rozszerzeniemfrench_lang.php. W tym pliku możesz przechowywać wszystkie swoje teksty językowe w kombinacji klucza i wartości w formacie$lang tablica, jak pokazano poniżej.
$lang[‘key’] = ‘val’;
Ładowanie pliku językowego
Aby użyć dowolnego języka w swojej aplikacji, musisz najpierw załadować plik tego konkretnego języka, aby pobrać różne teksty zapisane w tym pliku. Możesz użyć następującego kodu, aby załadować plik językowy.
$this->lang->load('filename', 'language');
filename- Jest to nazwa pliku, który chcesz załadować. Nie używaj tutaj rozszerzenia pliku, ale tylko nazwę pliku.
Language - Jest to zestaw językowy, który go zawiera.
Pobieranie tekstu językowego
Aby pobrać wiersz z pliku językowego, po prostu wykonaj następujący kod.
$this->lang->line('language_key');
Gdzie language_key to parametr klucza używany do pobierania wartości klucza w załadowanym pliku językowym.
Języki automatycznego ładowania
Jeśli potrzebujesz języka na całym świecie, możesz go automatycznie załadować application/config/autoload.php plik, jak pokazano poniżej.
| -----------------------------------------------------------------------
| 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();
Po prostu przekaż różne języki, aby zostały automatycznie załadowane przez CodeIgniter.
Przykład
Utwórz kontroler o nazwie Lang_controller.php i zapisz go w 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);
}
}
?>
Utwórz plik widoku o nazwie lang_view.php i zapisz go w 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>
Utwórz trzy foldery o nazwach angielski, francuski i niemiecki w formacie application/language jak pokazano na poniższym rysunku.
Skopiuj poniższy kod i zapisz go w english_lang.php plik w application/language/english teczka.
<?php
$lang['msg'] = "CodeIgniter Internationalization example.";
?>
Skopiuj poniższy kod i zapisz go w french_lang.php plik w application/language/French teczka.
<?php
$lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>
Skopiuj poniższy kod i zapisz go w german_lang.php plik w application/language/german teczka.
<?php
$lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>
Zmienić routes.php plik w application/config/routes.php aby dodać trasę dla powyższego kontrolera i dodać następujący wiersz na końcu pliku.
$route['lang'] = "Lang_controller";
Uruchom następujący adres URL w przeglądarce, aby wykonać powyższy przykład.
http://yoursite.com/index.php/lang
Wygeneruje dane wyjściowe, jak pokazano na poniższym zrzucie ekranu. Jeśli zmienisz język na liście rozwijanej, język zdania zapisanego poniżej listy rozwijanej również się odpowiednio zmieni.
Zapobieganie XSS
XSS oznacza cross-site scripting. CodeIgniter jest wyposażony w zabezpieczenia filtrujące XSS. Ten filtr zapobiega złośliwemu kodowi JavaScript lub wszelkiemu innemu kodowi, który próbuje przejąć plik cookie i wykonać złośliwe działania. Aby filtrować dane przez filtr XSS, użyj rozszerzeniaxss_clean() metoda, jak pokazano poniżej.
$data = $this->security->xss_clean($data);
Powinieneś używać tej funkcji tylko podczas przesyłania danych. Opcjonalny drugi parametr logiczny może być również użyty do sprawdzenia pliku obrazu pod kątem ataku XSS. Jest to przydatne przy ładowaniu plików. Jeśli jego wartość jest prawdziwa, oznacza, że obraz jest bezpieczny, a nie inaczej.
Zapobieganie iniekcjom SQL
Wstrzyknięcie SQL to atak na zapytanie do bazy danych. W PHP używamymysql_real_escape_string() function, aby temu zapobiec wraz z innymi technikami, ale CodeIgniter zapewnia wbudowane funkcje i biblioteki, aby temu zapobiec.
Możemy zapobiec iniekcji SQL w CodeIgniter na trzy sposoby -
- Escaping Queries
- Zapytanie Biding
- Klasa Active Record
Escaping Queries
<?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() funkcja automatycznie dodaje pojedyncze cudzysłowy wokół danych i określa typ danych, aby można było zmienić tylko dane w postaci łańcuchów.
Zapytanie Biding
<?php
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
?>
W powyższym przykładzie znak zapytania (?) Zostanie zastąpiony tablicą w drugim parametrze funkcji query (). Główną zaletą budowania zapytań w ten sposób jest to, że wartości są automatycznie zmieniane, co daje bezpieczne zapytania. Silnik CodeIgniter robi to za Ciebie automatycznie, więc nie musisz o tym pamiętać.
Klasa Active Record
<?php
$this->db->get_where('subscribers_tbl',array
('status'=> active','email' => '[email protected]'));
?>
Przy użyciu rekordów aktywnych składnia zapytania jest generowana przez każdy adapter bazy danych. Umożliwia również bezpieczniejsze zapytania, ponieważ wartości są automatycznie zmieniane.
Ukrywanie błędów PHP
W środowisku produkcyjnym często nie chcemy wyświetlać użytkownikom żadnych komunikatów o błędach. Dobrze, jeśli jest włączony w środowisku programistycznym do celów debugowania. Te komunikaty o błędach mogą zawierać pewne informacje, których ze względów bezpieczeństwa nie powinniśmy pokazywać użytkownikom witryny.
Istnieją trzy pliki CodeIgniter związane z błędami.
Poziom raportowania błędów PHP
Różne środowiska wymagają różnych poziomów raportowania błędów. Domyślnie programowanie pokaże błędy, ale testowanie i transmisja na żywo je ukryją. Istnieje plik o nazwieindex.phpw katalogu głównym CodeIgniter, który jest używany do tego celu. Jeśli przekażemy zero jako argument doerror_reporting() funkcja, która ukryje wszystkie błędy.
Błąd bazy danych
Nawet jeśli wyłączyłeś błędy PHP, błędy MySQL są nadal otwarte. Możesz to wyłączyć wapplication/config/database.php. Ustawdb_debug opcja w $db tablica do FALSE jak pokazano niżej.
$db['default']['db_debug'] = FALSE;
Dziennik błędów
Innym sposobem jest przeniesienie błędów do plików dziennika. Nie będzie więc wyświetlany użytkownikom witryny. Po prostu ustawlog_threshold wartość w $config tablica do 1 cala application/cofig/config.php plik, jak pokazano poniżej.
$config['log_threshold'] = 1;
Zapobieganie CSRF
CSRF oznacza fałszowanie żądań między lokacjami. Możesz zapobiec temu atakowi, włączając go wapplication/config/config.php plik, jak pokazano poniżej.
$config['csrf_protection'] = TRUE;
Podczas tworzenia formularza za pomocą form_open()funkcja, automatycznie wstawi CSRF jako ukryte pole. Możesz również ręcznie dodać CSRF przy użyciu rozszerzeniaget_csrf_token_name() i get_csrf_hash()funkcjonować. Plikget_csrf_token_name() funkcja zwróci nazwę CSRF i get_csrf_hash() zwróci wartość skrótu CSRF.
Token CSRF można wygenerować za każdym razem w celu przesłania lub można go również zachować przez cały okres istnienia pliku cookie CSRF. Ustawiając wartośćTRUE, w tablicy config z kluczem ‘csrf_regenerate’ zregeneruje token, jak pokazano poniżej.
$config['csrf_regenerate'] = TRUE;
Możesz również dodać adresy URL do białej listy z ochrony CSRF, ustawiając je w tablicy config za pomocą klucza ‘csrf_exclude_uris’jak pokazano niżej. Możesz także użyć wyrażenia regularnego.
$config['csrf_exclude_uris'] = array('api/person/add');
Obsługa haseł
Wielu programistów nie wie, jak obchodzić się z hasłami w aplikacjach internetowych, prawdopodobnie dlatego wielu hakerów uważa, że włamanie do systemów jest tak łatwe. Podczas obsługi haseł należy pamiętać o następujących kwestiach -
NIE przechowuj haseł w formacie zwykłego tekstu.
Zawsze haszuj swoje hasła.
NIE używaj kodowania Base64 ani podobnego do przechowywania haseł.
NIE używaj słabych lub uszkodzonych algorytmów haszujących, takich jak MD5 lub SHA1. Używaj tylko silnych algorytmów haszowania haseł, takich jak BCrypt, który jest używany we własnych funkcjach haszowania haseł PHP.
Nigdy nie wyświetlaj ani nie wysyłaj hasła w formacie zwykłego tekstu.
NIE nakładaj niepotrzebnych ograniczeń na hasła użytkowników.