CodeIgniter - Краткое руководство
CodeIgniter - это фреймворк для разработки приложений, который можно использовать для разработки веб-сайтов с использованием PHP. Это платформа с открытым исходным кодом. Обладает очень богатым набором функциональных возможностей, что позволит увеличить скорость работы по созданию сайта.
Если вы хорошо знаете PHP, CodeIgniter облегчит вашу задачу. Имеет очень богатый набор библиотек и помощников. Используя CodeIgniter, вы сэкономите много времени, если разрабатываете сайт с нуля. Мало того, веб-сайт, построенный на CodeIgniter, также безопасен, так как он может предотвращать различные атаки, которые происходят через веб-сайты.
Возможности CodeIgniter
Некоторые из важных функций CodeIgniter перечислены ниже -
Система на основе модели-представления-контроллера
Чрезвычайно легкий вес
Полнофункциональные классы баз данных с поддержкой нескольких платформ.
Поддержка базы данных построителя запросов
Форма и проверка данных
Безопасность и фильтрация XSS
Управление сессией
Класс отправки электронной почты. Поддерживает вложения, HTML / текстовую электронную почту, несколько протоколов (sendmail, SMTP и Mail) и многое другое.
Библиотека управления изображениями (обрезка, изменение размера, поворот и т. Д.). Поддерживает GD, ImageMagick и NetPBM
Класс загрузки файлов
Класс FTP
Localization
Pagination
Шифрование данных
Benchmarking
Кеширование всей страницы
Регистрация ошибок
Профилирование приложений
Класс календаря
Класс пользовательского агента
Класс кодирования Zip
Класс движка шаблонов
Класс трекбэка
Библиотека XML-RPC
Класс модульного тестирования
Удобные для поисковых систем URL
Гибкая маршрутизация URI
Поддержка хуков и расширений классов
Большая библиотека «вспомогательных» функций
Установить CodeIgniter очень просто. Просто следуйте инструкциям, приведенным ниже -
Step-1- Загрузите CodeIgniter по ссылке CodeIgniter
Step-2 - Распаковать папку.
Step-3 - Загрузите все файлы и папки на свой сервер.
Step-4 - После загрузки всех файлов на ваш сервер перейдите по URL-адресу вашего сервера, например, www.domain-name.com.
При посещении URL-адреса вы увидите следующий экран -
Архитектура приложения CodeIgniter показана ниже.
Как показано на рисунке, всякий раз, когда к CodeIgniter приходит запрос, он сначала переходит к index.php страница.
На втором этапе Routing решит, следует ли передать этот запрос на шаг 3 для кэширования или передать этот запрос на шаг 4 для проверки безопасности.
Если запрошенная страница уже есть Caching, тогда Routing передаст запрос на шаг 3, и ответ вернется к пользователю.
Если запрошенная страница не существует в Caching, тогда Routing передаст запрошенную страницу на шаг 4 для Security чеки.
Перед передачей запроса Application Controller, то Securityпредставленных данных проверяется. ПослеSecurity проверить Application Controller необходимые грузы Models, Libraries, Helpers, Plugins и Scripts и передать это View.
В View отобразит страницу с доступными данными и передаст ее для Caching. Поскольку запрошенная страница ранее не кэшировалась, на этот раз она будет кэширована вCaching, чтобы быстро обработать эту страницу для будущих запросов.
Структура каталогов
На приведенном ниже изображении показана структура каталогов CodeIgniter.
Структура каталогов CodeIgniter разделена на 3 папки -
- Application
- System
- User_guide
заявка
Как видно из названия, папка Application содержит весь код вашего приложения, которое вы создаете. Это папка, в которой вы будете развивать свой проект. Папка приложения содержит несколько других папок, которые описаны ниже -
Cache- Эта папка содержит все кешированные страницы вашего приложения. Эти кэшированные страницы увеличивают общую скорость доступа к страницам.
Config- Эта папка содержит различные файлы для настройки приложения. С помощьюconfig.phpфайл, пользователь может настроить приложение. С помощьюdatabase.php файл, пользователь может настроить базу данных приложения.
Controllers- В этой папке хранятся контроллеры вашего приложения. Это основная часть вашего приложения.
Core - Эта папка будет содержать базовый класс вашего приложения.
Helpers - В эту папку вы можете поместить вспомогательный класс вашего приложения.
Hooks - Файлы в этой папке предоставляют средства для изменения внутренней работы фреймворка без взлома основных файлов.
Language - Эта папка содержит файлы, связанные с языком.
Libraries - В этой папке находятся файлы библиотек, разработанных для вашего приложения.
Logs - В этой папке находятся файлы, относящиеся к журналу системы.
Models - Логин базы данных будет помещен в эту папку.
Third_party - В этой папке вы можете разместить любые плагины, которые будут использоваться для вашего приложения.
Views - HTML-файлы приложения будут помещены в эту папку.
Система
Эта папка содержит основные коды CodeIgniter, библиотеки, помощники и другие файлы, которые помогают упростить кодирование. Эти библиотеки и помощники загружаются и используются при разработке веб-приложений.
Эта папка содержит весь код последствий CodeIgniter, организованный в различные папки -
Core- Эта папка содержит основной класс CodeIgniter. Здесь ничего не изменяйте. Вся ваша работа будет проходить в папке приложения. Даже если вы намереваетесь расширить ядро CodeIgniter, вам придется делать это с помощью хуков, а хуки находятся в папке приложения.
Database - Папка базы данных содержит основные драйверы базы данных и другие утилиты базы данных.
Fonts - Папка шрифтов содержит информацию о шрифтах и служебные программы.
Helpers - Папка помощников содержит стандартные помощники CodeIgniter (например, помощники по дате, файлам cookie и URL).
Language- Языковая папка содержит языковые файлы. Вы можете пока игнорировать это.
Libraries- Папка библиотек содержит стандартные библиотеки CodeIgniter (чтобы помочь вам с электронной почтой, календарями, загрузкой файлов и т. Д.). Вы можете создавать свои собственные библиотеки или расширять (и даже заменять) стандартные, но они будут сохранены вapplication/libraries каталог, чтобы хранить их отдельно от стандартных библиотек CodeIgniter, сохраненных в этой конкретной папке.
Гид пользователя
Это ваше руководство пользователя CodeIgniter. По сути, это офлайн-версия руководства пользователя на сайте CodeIgniter. Используя это, можно изучить функции различных библиотек, помощников и классов. Перед созданием своего первого веб-приложения в CodeIgniter рекомендуется ознакомиться с этим руководством пользователя.
Помимо этих трех папок есть еще один важный файл с именем «index.php». В этом файле мы можем установить среду приложения и уровень ошибки, а также определить имя системы и папки приложения. Рекомендуется не редактировать эти настройки, если у вас недостаточно знаний о том, что вы собираетесь делать.
CodeIgniter основан на Model-View-Controller (MVC) development pattern. MVC - это программный подход, который отделяет логику приложения от представления. На практике это позволяет вашим веб-страницам содержать минимальное количество сценариев, поскольку презентация отделена от сценариев PHP.
В Modelпредставляет ваши структуры данных. Обычно классы вашей модели будут содержать функции, которые помогут вам извлекать, вставлять и обновлять информацию в вашей базе данных.
В Viewэто информация, которая предоставляется пользователю. Представление обычно представляет собой веб-страницу, но в CodeIgniter представление также может быть фрагментом страницы, таким как верхний или нижний колонтитул. Это также может быть страница RSS или любой другой тип «страницы».
В Controller служит посредником между моделью, представлением и любыми другими ресурсами, необходимыми для обработки HTTP-запроса и создания веб-страницы.
Контроллеры
Контроллер - это простой файл класса. Как следует из названия, он управляет всем приложением по URI.
Создание контроллера
Сначала перейдите к application/controllersпапка. Вы найдете там два файла,index.html и Welcome.php. Эти файлы поставляются с CodeIgniter.
Сохраните эти файлы как есть. Создайте новый файл по тому же пути с именем «Test.php». Напишите в этом файле следующий код -
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
В Test class расширяет встроенный класс, называемый CI_Controller. Этот класс необходимо расширять всякий раз, когда вы хотите создать свой собственный класс контроллера.
Вызов контроллера
Вышеупомянутый контроллер можно вызвать по URI следующим образом:
http://www.your-domain.com/index.php/test
Обратите внимание на слово «test»В приведенном выше URI после index.php. Это указывает имя класса контроллера. Поскольку мы дали имя контроллеру «Test", мы пишем "test»После index.php. Название класса должно начинаться сuppercase letter но нам нужно написать lowercase letterкогда мы вызываем этот контроллер по URI. Общий синтаксис для вызова контроллера следующий:
http://www.your-domain.com/index.php/controller/method-name
Создание и вызов метода конструктора
Давайте изменим вышеуказанный класс и создадим другой метод с именем «hello».
<?php
class Test extends CI_Controller {
public function index() {
echo "This is default function.";
}
public function hello() {
echo "This is hello function.";
}
}
?>
Мы можем выполнить вышеуказанный контроллер следующими тремя способами:
- 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
После посещения первого URI в браузере мы получаем результат, как показано на рисунке ниже. Как видите, мы получили результат метода «index”, Даже если мы не передали имя метода в URI. Мы использовали только имя контроллера в URI. В таких ситуациях CodeIgniter вызывает метод по умолчанию «index».
Посещая второй URI в браузере, мы получаем тот же результат, что и на картинке выше. Здесь мы передали имя метода после имени контроллера в URI. Поскольку название метода «index”, Мы получаем тот же результат.
Посещая третий URI в браузере, мы получаем результат, как показано на рисунке ниже. Как видите, мы получаем результат метода «hello"Потому что мы прошли"hello"В качестве имени метода после имени контроллера"test»В URI.
Что следует помнить
Имя класса контроллера должно начинаться с заглавной буквы.
Контроллер должен называться строчными буквами.
Не используйте то же имя метода, что и у родительского класса, так как это переопределит функциональность родительского класса.
Просмотры
Это может быть простая или сложная веб-страница, которую может вызывать контроллер. Веб-страница может содержать верхний колонтитул, нижний колонтитул, боковую панель и т. Д. Просмотр не может быть вызван напрямую. Давайте создадим простой вид. Создайте новый файл в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>
Измените код application/controllers/test.php файл, как показано ниже.
Загрузка представления
Представление можно загрузить с помощью следующего синтаксиса -
$this->load->view('name');
Где имя - это визуализируемый файл представления. Если вы запланировали сохранить файл представления в каком-либо каталоге, вы можете использовать следующий синтаксис:
$this->load->view('directory-name/name');
Нет необходимости указывать расширение как php, если не используется иное, чем .php.
Метод index () вызывает метод представления и передает «test» в качестве аргумента методу view (), потому что мы сохранили кодировку html в «test.phpФайл под application/views/test.php.
<?php
class Test extends CI_Controller {
public function index() {
$this->load->view('test');
}
}
?>
Вот результат вышеприведенного кода -
Следующая блок-схема иллюстрирует, как все работает -
Модели
Классы моделей предназначены для работы с информацией в базе данных. Например, если вы используете CodeIgniter для управления пользователями в своем приложении, тогда у вас должен быть класс модели, который содержит функции для вставки, удаления, обновления и извлечения данных ваших пользователей.
Создание класса модели
Классы моделей хранятся в application/modelsкаталог. В следующем коде показано, как создать класс модели в CodeIgniter.
<?php
Class Model_name extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Где Model_name - это имя класса модели, который вы хотите предоставить. Каждый класс модели должен наследовать класс CI_Model CodeIgniter. Первая буква класса модели должна быть заглавной. Ниже приведен код класса модели пользователя.
<?php
Class User_model extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Вышеупомянутый класс модели должен быть сохранен как User_model.php. Имя класса и имя файла должны совпадать.
Загрузка модели
Модель можно вызвать в контроллере. Следующий код можно использовать для загрузки любой модели.
$this->load->model('model_name');
Где model_name - это имя загружаемой модели. После загрузки модели вы можете просто вызвать ее метод, как показано ниже.
$this->model_name->method();
Автозагрузка моделей
Могут возникнуть ситуации, когда вам понадобится какой-то класс модели во всем приложении. В таких ситуациях лучше автозагрузить.
/*
| ---------------------------------------------------------------
| 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();
Как показано на приведенном выше рисунке, передайте имя модели в массиве, который вы хотите автозагрузить, и она будет автоматически загружена, пока система находится в состоянии инициализации и доступна для всего приложения.
Помощники
Как следует из названия, это поможет вам построить вашу систему. Он разделен на небольшие функции для обслуживания различных функций. В CodeIgniter доступен ряд помощников, которые перечислены в таблице ниже. Мы тоже можем создавать собственных помощников.
Помощники обычно хранятся в вашем system/helpers, или же application/helpers directory. Пользовательские помощники хранятся вapplication/helpers каталог и помощники системы хранятся в system/helpersкаталог. CodeIgniter сначала будет искать в вашемapplication/helpers directory. Если каталог не существует или указанный помощник не найден, CodeIgniter вместо этого будет искать в вашем глобальномsystem/helpers/ directory. Каждый помощник, будь то пользовательский или системный помощник, должен быть загружен перед его использованием.
SN | Имя и описание помощника |
---|---|
1 | Array Helper Файл Array Helper содержит функции, помогающие работать с массивами. |
2 | CAPTCHA Helper Файл CAPTCHA Helper содержит функции, помогающие создавать изображения CAPTCHA. |
3 | Cookie Helper Файл Cookie Helper содержит функции, помогающие работать с файлами cookie. |
4 | Date Helper Файл Date Helper содержит функции, которые помогут вам работать с датами. |
5 | Directory Helper Файл Directory Helper содержит функции, помогающие работать с каталогами. |
6 | Download Helper Помощник по загрузке позволяет загружать данные на рабочий стол. |
7 | Email Helper Email Helper предоставляет некоторые вспомогательные функции для работы с электронной почтой. Для более надежного решения электронной почты см. Класс электронной почты CodeIgniter. |
8 | File Helper Файл File Helper содержит функции, которые помогают в работе с файлами. |
9 | Form Helper Файл Form Helper содержит функции, которые помогают в работе с формами. |
10 | HTML Helper Файл HTML Helper содержит функции, которые помогают в работе с HTML. |
11 | Inflector Helper Файл Inflector Helper содержит функции, которые позволяют вам изменять слова на множественное, единственное, верблюжий регистр и т. Д. |
12 | Language Helper Файл Language Helper содержит функции, помогающие работать с языковыми файлами. |
13 | Number Helper Файл Number Helper содержит функции, помогающие работать с числовыми данными. |
14 | Path Helper Файл Path Helper содержит функции, которые позволяют вам работать с путями к файлам на сервере. |
15 | Security Helper Файл Security Helper содержит функции, связанные с безопасностью. |
16 | Smiley Helper Файл Smiley Helper содержит функции, позволяющие управлять смайлами (смайликами). |
17 | String Helper Файл String Helper содержит функции, помогающие работать со строками. |
18 | Text Helper Файл Text Helper содержит функции, помогающие работать с текстом. |
19 | Typography Helper Файл Typography Helper содержит функции, которые помогают форматировать текст семантически релевантными способами. |
20 | URL Helper Файл помощника по URL-адресу содержит функции, помогающие работать с URL-адресами. |
21 год | XML Helper Файл XML Helper содержит функции, помогающие работать с данными XML. |
Загрузка помощника
Помощник может быть загружен, как показано ниже -
$this->load->helper('name');
Где имя - это имя помощника. Например, если вы хотите загрузить вспомогательный URL-адрес, его можно загрузить как -
$this->load->helper('url');
Маршрутизация
CodeIgniter имеет удобную систему маршрутизации URI, так что вы можете легко перенаправить URL. Обычно между строкой URL и соответствующим классом / методом контроллера существует взаимно однозначное отношение. Сегменты в URI обычно следуют этому шаблону -
your-domain.com/class/method/id/
В first segment представляет класс контроллера, который должен быть вызван.
В second segment представляет функцию или метод класса, который следует вызвать.
В third, и любые дополнительные сегменты представляют идентификатор и любые переменные, которые будут переданы контроллеру.
В некоторых ситуациях вы можете захотеть изменить этот механизм маршрутизации по умолчанию. CodeIgniter предоставляет средство, с помощью которого вы можете устанавливать свои собственные правила маршрутизации.
Настроить правила маршрутизации
Есть специальный файл, в котором вы можете справиться со всем этим. Файл находится в application / config / routes.php. Вы найдете массив под названием$route in which you can customize your routing rules. The key in the $Массив маршрута решит, что маршрутизировать, а значение решит, куда направить. В CodeIgniter есть три зарезервированных маршрута.
SN | Зарезервированные маршруты и описание |
---|---|
1 | $route['default_controller'] Этот маршрут указывает, какой класс контроллера следует загрузить, если URI не содержит данных, что будет иметь место, когда люди загружают ваш корневой URL. Рекомендуется использовать маршрут по умолчанию, иначе по умолчанию появится страница 404. Здесь мы можем установить домашнюю страницу сайта, чтобы она загружалась по умолчанию. |
2 | $route['404_override'] Этот маршрут указывает, какой класс контроллера следует загрузить, если запрошенный контроллер не найден. Он заменит страницу ошибки 404 по умолчанию. Это не повлияет наshow_404() функция, которая продолжит загрузку по умолчанию error_404.php файл в application/views/errors/error_404.php. |
3 | $route['translate_uri_dashes'] Как видно из логического значения, это не совсем маршрут. Этот параметр позволяет автоматически заменять дефисы ('-') подчеркиванием в сегментах URI контроллера и метода, тем самым сохраняя дополнительные записи маршрута, если вам это нужно. Это необходимо, потому что тире не является допустимым символом имени класса или метода и вызовет фатальную ошибку, если вы попытаетесь его использовать. |
Маршруты могут быть настроены wildcards или используя regular expressions но имейте в виду, что эти настраиваемые правила маршрутизации должны идти после зарезервированных правил.
Подстановочные знаки
Мы можем использовать два подстановочных символа, как описано ниже -
(:num) - Он будет соответствовать сегменту, содержащему только числа.
(:any) - Соответствует сегменту, содержащему любой символ.
Example
$route['product/:num']='catalog/product_lookup';
В приведенном выше примере, если буквальное слово «продукт» находится в первом сегменте URL-адреса, а число - во втором сегменте, вместо этого используются класс «catalog» и метод «product_lookup».
Регулярные выражения
Как и подстановочные знаки, мы также можем использовать регулярные выражения в $route array keyчасть. Если какой-либо URI совпадает с регулярным выражением, он будет перенаправлен на часть значения, установленную в массиве $ route.
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
В приведенном выше примере URI, похожий на products / shoes / 123, вместо этого будет вызывать «shoes»Класс контроллера и«id_123»Метод.
Следующее, что нам нужно сделать после настройки сайта, - это настроить сайт. Папка application / config содержит группу файлов, которые задают базовую конфигурацию вашего сайта.
Настройка базового URL
Базовый URL-адрес сайта можно настроить в файле application / config / config.php. Это URL-адрес вашего корня CodeIgniter. Как правило, это будет ваш базовый URL с косой чертой в конце, например
http://example.com/
Если это не установлено, CodeIgniter попытается угадать протокол, домен и путь к вашей установке. Однако вы всегда должны настраивать это явно и никогда не полагаться на автоматическое угадывание, особенно в производственных средах. Вы можете настроить базовый URL-адрес в массиве $ config с ключом «base_url», как показано ниже -
$config['base_url'] = 'http://your-domain.com';
Конфигурация базы данных
База данных сайта может быть настроена в файле application / config / database.php. Часто нам нужно настроить базу данных для разных сред, таких как разработка и производство. С помощью многомерного массива, представленного в CodeIgniter, мы можем настроить базу данных для различных сред. Параметры конфигурации хранятся в массиве, как показано ниже -
$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()
);
Вы можете оставить несколько параметров со значениями по умолчанию, кроме имени хоста, имени пользователя, пароля, базы данных и dbdriver.
hostname - Укажите здесь расположение вашей базы данных, например localhost или IP-адрес
username - Задайте здесь имя пользователя вашей базы данных.
password - Установите здесь пароль вашей базы данных.
database - Задайте здесь имя базы данных.
dbdriver - Установите тип используемой базы данных, например, MySQL, MySQLi, Postgre SQL, ODBC и MS SQL.
Изменяя ключ массива $db, вы можете установить другую конфигурацию базы данных, как показано ниже. Здесь мы установили ключ к‘test’ чтобы настроить базу данных для среды тестирования, оставив другую среду базы данных как есть.
$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()
);
Вы можете просто переключиться в другую среду, изменив значение переменной, как показано ниже -
$active_group = ‘default’; //This will set the default environment
$active_group = ‘test’; //This will set the test environment
Конфигурация автозагрузки
В этом файле по умолчанию указывается, какие системы должны быть загружены. Чтобы фреймворк был как можно более легким, по умолчанию загружаются только минимальные ресурсы. Следует автоматически загружать часто используемую систему, а не повторно загружать ее на локальном уровне. Ниже приведены вещи, которые вы можете загружать автоматически:
Libraries- Это список библиотек, которые должны загружаться автоматически. Предоставьте список библиотек в массиве, как показано ниже, для автоматической загрузки с помощью CodeIgniter. В этом примере мы автоматически загружаем базы данных, электронную почту и библиотеки сеансов.
$autoload['libraries'] = array('database', 'email', 'session');
Drivers- Эти классы находятся в system / libraries / или в каталоге вашего приложения / библиотеки /, но также помещаются в свой собственный подкаталог и расширяют класс CI_Driver_Library. Они предлагают несколько вариантов сменных драйверов. Ниже приведен пример автоматической загрузки драйверов кеша.
$autoload['drivers'] = array('cache');
Helper files- Это список вспомогательных файлов для автозагрузки. Предоставьте список библиотек в массиве, как показано ниже, для автоматической загрузки CodeIgniter. В данном примере мы автоматически загружаем URL-адреса и файловые помощники.
$autoload['helper'] = array('url', 'file');
Custom config files- Эти файлы предназначены для использования только в том случае, если вы создали собственные файлы конфигурации. В противном случае оставьте поле пустым. Ниже приведен пример автоматической загрузки более чем одного файла конфигурации.
$autoload['config'] = array('config1', 'config2');
Language files- Это список языковых файлов, которые должны быть загружены автоматически. Посмотрите на пример, приведенный ниже. Предоставьте список языков в массиве, как показано ниже, для автоматической загрузки CodeIgniter. Имейте в виду, что не включайте в файл часть "_lang". Например, "codeigniter_lang.php" будет обозначаться как array ('codeigniter');
Models- Это список файлов моделей, которые необходимо загрузить автоматически. Предоставьте список моделей в массиве, как показано ниже, для автоматической загрузки CodeIgniter. Ниже приведен пример автоматической загрузки нескольких файлов моделей.
$autoload['model'] = array('first_model', 'second_model');
Как и любой другой фреймворк, нам нужно очень часто взаимодействовать с базой данных, и CodeIgniter облегчает нам эту работу. Он предоставляет богатый набор функций для взаимодействия с базой данных.
В этом разделе мы поймем, как функции CRUD (Create, Read, Update, Delete) работают с CodeIgniter. Мы будем использоватьstud таблица для выбора, обновления, удаления и вставки данных в stud стол.
Название таблицы: шпилька | |
---|---|
roll_no | интервал (11) |
имя | варчар (30) |
Подключение к базе данных
Мы можем подключиться к базе данных двумя способами:
Automatic Connecting- Автоматическое подключение может быть выполнено с помощью файла application / config / autoload.php. Автоматическое соединение загрузит базу данных для каждой страницы. Нам просто нужно добавить библиотеку базы данных, как показано ниже -
$autoload['libraries'] = array(‘database’);
Manual Connecting- Если вам нужно подключение к базе данных только для некоторых страниц, мы можем перейти на подключение вручную. Мы можем подключиться к базе данных вручную, добавив следующую строку в любом классе.
$this->load->database();
Здесь мы не передаем никаких аргументов, потому что все установлено в файле конфигурации базы данных application / config / database.php
Вставка записи
Чтобы вставить запись в базу данных, используется функция insert (), как показано в следующей таблице -
Syntax |
insert ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]]) |
Parameters |
|
Returns |
ИСТИНА при успехе, ЛОЖЬ при неудаче |
Return Type |
bool |
В следующем примере показано, как вставить запись в studстол. $ Data - это массив, в котором мы установили данные и вставляем эти данные в таблицу.stud, нам просто нужно передать этот массив функции вставки во 2- м аргументе.
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);
Обновление записи
Чтобы обновить запись в базе данных, update() функция используется вместе с set() и where()функции, как показано в таблицах ниже. Вset() функция установит данные для обновления.
Syntax |
set ( $ key [, $ value = '' [, $ escape = NULL ]]) |
Parameters |
|
Returns |
Экземпляр CI_DB_query_builder (цепочка методов) |
Return Type |
CI_DB_query_builder |
В where() функция решит, какую запись обновить.
Syntax |
где ( $ key [, $ value = NULL [, $ escape = NULL ]]) |
Parameters |
|
Returns |
DB_query_builder экземпляр |
Return Type |
объект |
Наконец, update() функция обновит данные в базе данных.
Syntax |
update ([ $ table = '' [, $ set = NULL [,$where = NULL[, $limit = NULL ]]]]) |
Parameters |
|
Returns |
ИСТИНА при успехе, ЛОЖЬ при неудаче |
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);
Удаление записи
Чтобы удалить запись в базе данных, используется функция delete (), как показано в следующей таблице -
Syntax |
delete ([ $ table = '' [, $ where = '' [,$limit = NULL[, $reset_data = TRUE ]]]]) |
Parameters |
|
Returns |
Экземпляр CI_DB_query_builder (цепочка методов) или FALSE в случае сбоя |
Return Type |
смешанный |
Используйте следующий код, чтобы удалить запись в studстол. Первый аргумент указывает имя таблицы для удаления записи, а второй аргумент решает, какую запись удалить.
$this->db->delete("stud", "roll_no = 1");
Выбор записи
Чтобы выбрать запись в базе данных, get используется функция, как показано в следующей таблице -
Syntax |
get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
Returns |
Экземпляр CI_DB_result (цепочка методов) |
Return Type |
CI_DB_result |
Используйте следующий код, чтобы получить все записи из базы данных. Первый оператор выбирает все записи из таблицы «Stud» и возвращает объект, который будет сохранен в объекте $ query. Второе утверждение вызываетresult() функция с объектом $ query, чтобы получить все записи в виде массива.
$query = $this->db->get("stud"); $data['records'] = $query->result();
Закрытие соединения
Соединение с базой данных можно закрыть вручную, выполнив следующий код -
$this->db->close();
пример
Создайте класс контроллера с именем Stud_controller.php и сохраните его в application/controller/Stud_controller.php
Вот полный пример, в котором выполняются все вышеупомянутые операции. Перед выполнением следующего примера создайте базу данных и таблицу в соответствии с инструкциями в начале этой главы и внесите необходимые изменения в файл конфигурации базы данных, хранящийся вapplication/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);
}
}
?>
Создайте класс модели с именем Stud_Model.php и сохраните это в 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);
}
}
?>
Создайте файл представления с именем Stud_add.php и сохраните это в 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>
Создайте файл представления с именем Stud_edit.php и сохраните это в 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>
Создайте файл представления с именем Stud_view.php и сохраните это в 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>
Сделайте следующее изменение в файле маршрута на application/config/routes.php и добавьте следующую строку в конец файла.
$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';
Теперь давайте выполним этот пример, посетив следующий URL-адрес в браузере. Замените yoursite.com своим URL.
http://yoursite.com/index.php/stud
Существенной частью фреймворка CodeIgniter являются его библиотеки. Он предоставляет богатый набор библиотек, которые косвенно увеличивают скорость разработки приложения. Системная библиотека находится в system / libraries. Все, что нам нужно сделать, это загрузить библиотеку, которую мы хотим использовать. Библиотеку можно загрузить, как показано ниже -
$this->load->library('class name');
где class nameэто имя библиотеки, которую мы хотим загрузить. Если мы хотим загрузить несколько библиотек, мы можем просто передать массив в качестве аргумента вlibrary() работают, как показано ниже -
$this->load->library(array('email', 'table'));
Библиотечные классы
Классы библиотеки расположены в system/libraries. Каждый класс имеет различные функции, упрощающие разработку. В следующей таблице показаны имена класса библиотеки и его описание.
SN | Класс библиотеки и описание |
---|---|
1 | Benchmarking Class Класс сравнительного анализа всегда активен, что позволяет вычислить разницу во времени между любыми двумя отмеченными точками. |
2 | Caching Class Этот класс будет кэшировать страницы для быстрого доступа к скорости страницы. |
3 | Calendaring Class Используя этот класс, вы можете динамически создавать календари. |
4 | Shopping Cart Class Используя этот класс, вы можете добавить или удалить товар из корзины. Элементы сохраняются в сеансе и остаются активными, пока пользователь не просматривает сайт. |
5 | Config Class С помощью этого класса можно получить настройки конфигурации. Этот класс инициализируется автоматически. |
6 | Email Class Этот класс предоставляет функциональные возможности, связанные с электронной почтой, например отправку или ответ на электронную почту. |
7 | Encryption Class Этот класс обеспечивает двустороннее шифрование данных. |
8 | File Uploading Class Этот класс предоставляет функции, связанные с загрузкой файлов. Вы можете установить различные параметры, такие как тип загружаемого файла, размер файлов и т. Д. |
9 | Form Validation Class Этот класс предоставляет различные функции для проверки формы. |
10 | FTP Class Этот класс предоставляет различные функции, связанные с FTP, такие как передача файлов для удаления сервера, перемещение, переименование или удаление файлов на сервере. |
11 | Image Manipulation Class С помощью этого класса можно выполнять такие манипуляции с изображением, как изменение размера, создание миниатюр, обрезка, поворот, добавление водяных знаков. |
12 | Input Class Этот класс предварительно обрабатывает входные данные по соображениям безопасности. |
13 | Language Class Этот класс используется для интернационализации. |
14 | Loader Class Этот класс загружает такие элементы, как файлы просмотра, драйверы, помощники, модели и т. Д. |
15 | Migrations Class Этот класс предоставляет функции, связанные с миграцией базы данных. |
16 | Output Class Этот класс отправляет вывод в браузер, а также кэширует эту веб-страницу. |
17 | Pagination Class Этот класс добавляет на веб-страницу функции разбивки на страницы. |
18 | Template Parser Class Класс Template Parser Class может выполнять простую текстовую замену псевдопеременных, содержащихся в ваших файлах представления. Он может анализировать простые переменные или пары переменных тегов. |
19 | Security Class Этот класс содержит функции, связанные с безопасностью, такие как XSS Filtering, CSRF и т. Д. |
20 | Session Library Этот класс предоставляет функции для поддержки сеанса вашего приложения. |
21 год | HTML Table Этот класс используется для автоматического создания HTML-таблиц из результатов массива или базы данных. |
22 | Trackback Class Класс Trackback предоставляет функции, которые позволяют отправлять и получать данные Trackback. |
23 | Typography Class Класс Typography предоставляет методы, которые помогают форматировать текст. |
24 | Unit Testing Class Этот класс предоставляет функции для модульного тестирования вашего приложения и получения результата. |
25 | URI Class Класс URI предоставляет методы, которые помогают извлекать информацию из строк URI. Если вы используете URI-маршрутизацию, вы также можете получить информацию о перенаправленных сегментах. |
26 | User Agent Class Класс User Agent предоставляет функции, которые помогают идентифицировать информацию о браузере, мобильном устройстве или роботе, посещающем ваш сайт. Кроме того, вы можете получить информацию о реферере, а также информацию о языке и поддерживаемых наборах символов. |
27 | XML-RPC and XML-RPC Server Classes Классы XML-RPC CodeIgniter позволяют отправлять запросы на другой сервер или настраивать собственный сервер XML-RPC для приема запросов. |
28 | Zip Encoding Class Этот класс используется для создания zip-архивов ваших данных. |
Создание библиотек
CodeIgniter имеет богатый набор библиотек, которые вы можете найти в system/libraries папка, но CodeIgniter не ограничивается только системными библиотеками, вы также можете создавать свои собственные библиотеки, которые можно хранить в application/librariesпапка. Вы можете создавать библиотеки тремя способами.
- Создать новую библиотеку
- Расширить родную библиотеку
- Заменить родную библиотеку
Создать новую библиотеку
При создании новой библиотеки следует иметь в виду следующее:
- Имя файла должно начинаться с заглавной буквы, например Mylibrary.php.
- Имя класса должно начинаться с заглавной буквы, например class Mylibrary.
- Имя класса и имя файла должны совпадать.
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
Вышеупомянутую библиотеку можно загрузить, просто выполнив следующую строку в вашем контроллере.
$this->load->library(‘mylibrary’);
mylibrary - это имя вашей библиотеки, и вы можете писать его как строчными, так и прописными буквами. Используйте имя библиотеки без расширения «.php». После загрузки библиотеки вы также можете вызвать функцию этого класса, как показано ниже.
$this->mylibrary->some_function();
Расширить родную библиотеку
Иногда вам может потребоваться добавить свои собственные функции в библиотеку, предоставляемую CodeIgniter. CodeIgniter предоставляет средство, с помощью которого вы можете расширять собственную библиотеку и добавлять свои собственные функции. Для этого вы должны расширить класс собственной библиотеки. Например, если вы хотите расширить библиотеку электронной почты, это можно сделать, как показано ниже -
Class MY_Email extends CI_Email {
}
Здесь, в приведенном выше примере, класс MY_Email расширяет класс электронной почты собственной библиотеки CI_Email. Эту библиотеку можно загрузить стандартным способом загрузки почтовой библиотеки. Сохраните указанный выше код в файле My_Email.php
Заменить родную библиотеку
В некоторых ситуациях вы не хотите использовать собственную библиотеку так, как она работает, и хотите заменить ее на свой собственный. Это можно сделать, заменив родную библиотеку. Для этого вам просто нужно дать то же имя класса, что и в собственной библиотеке. Например, если вы хотите заменитьEmail class, затем используйте код, как показано ниже. Сохраните имя файла с помощьюEmail.php и дайте имя класса CI_Email.
Email.php
Class CI_Email {
}
Часто при использовании приложения мы сталкиваемся с ошибками. Если ошибки не обрабатываются должным образом, пользователей очень раздражает. CodeIgniter предоставляет простой механизм обработки ошибок.
Вы хотите, чтобы сообщения отображались, когда приложение находится в режиме разработки, а не в производственном режиме, поскольку сообщения об ошибках могут быть легко устранены на этапе разработки.
Среду вашего приложения можно изменить, изменив приведенную ниже строку с index.phpфайл. Это может быть установлено любое значение, но обычно для этой цели используются три значения (разработка, тестирование, производство).
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
В разных средах требуются разные уровни отчетов об ошибках. По умолчанию в режиме разработки отображаются ошибки, а в режиме тестирования они скрываются. CodeIgniter предоставляет три функции, как показано ниже, для обработки ошибок.
show_error() функция отображает ошибки в формате HTML вверху экрана.
Syntax |
show_error ( $ message,$status_code, $heading = 'Обнаружена ошибка' ) |
Parameters |
|
Return Type |
смешанный |
show_404() функция отображает ошибку, если вы пытаетесь получить доступ к несуществующей странице.
Syntax |
show_404 ( $ page = '', $ log_error = ИСТИНА ) |
Parameters |
|
Return Type |
пустота |
log_message()функция используется для записи сообщений журнала. Это полезно, когда вы хотите писать собственные сообщения.
Syntax |
log_message ( $ level,$message, $php_error = FALSE ) |
Parameters |
|
Return Type |
пустота |
Ведение журнала можно включить в application/config/config.phpфайл. Ниже приведен снимок экрана с файлом config.php, где вы можете установить пороговое значение.
/*
|--------------------------------------------------------------------------------
| 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;
Вы можете найти сообщения журнала в application/log/. Перед включением файлов журнала убедитесь, что этот каталог доступен для записи.
Различные шаблоны сообщений об ошибках можно найти в application/views/errors/cli или же application/views/errors/html.
Используя класс загрузки файлов, мы можем загружать файлы, а также можем ограничить тип и размер загружаемого файла. Выполните шаги, показанные в данном примере, чтобы понять процесс загрузки файла в CodeIgniter.
пример
Скопируйте следующий код и сохраните его в 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>
Скопируйте приведенный ниже код и сохраните его по адресу 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>
Скопируйте приведенный ниже код и сохраните его по адресу application/controllers/Upload.php. Создайте "uploads»В корне CodeIgniter, т.е. в родительском каталоге папки приложения.
<?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);
}
}
}
?>
Сделайте следующее изменение в файле маршрута в application/config/routes.php и добавьте следующую строку в конец файла.
$route['upload'] = 'Upload';
Теперь давайте выполним этот пример, посетив следующий URL-адрес в браузере. Замените yoursite.com своим URL.
http://yoursite.com/index.php/upload
Появится следующий экран -
После успешной загрузки файла вы увидите следующий экран -
Отправка электронной почты в CodeIgniter намного проще. Вы также можете настроить параметры электронной почты в CodeIgniter. CodeIgniter предоставляет следующие функции для отправки электронных писем:
- Несколько протоколов - Mail, Sendmail и SMTP
- TLS и SSL-шифрование для SMTP
- Несколько получателей
- CC и BCC
- Электронная почта в формате HTML или обычным текстом
- Attachments
- Перенос слов
- Priorities
- Пакетный режим BCC, позволяющий разбивать большие списки адресов электронной почты на небольшие пакеты BCC.
- Инструменты отладки электронной почты
Класс электронной почты имеет следующие функции, чтобы упростить отправку электронных писем.
SN | Синтаксис | Параметры | Возвращение | Тип возврата |
---|---|---|---|---|
1 | from ( $ from [, $ name = '' [, $ return_path = NULL ]]) | $from( строка ) - адрес электронной почты «От» $name( строка ) - отображаемое имя «От» $return_path( строка ) - Дополнительный адрес электронной почты для перенаправления недоставленной электронной почты на |
Экземпляр CI_Email (цепочка методов) | CI_Email |
2 | reply_to ( $ replyto [, $ name = '' ]) | $replyto( строка ) - адрес электронной почты для ответов $name( строка ) - Отображаемое имя для адреса электронной почты для ответа |
Экземпляр CI_Email (цепочка методов) | CI_Email |
2 | в ( $ в ) | $to( смешанный ) - строка с разделителями-запятыми или массив адресов электронной почты |
Экземпляр CI_Email (цепочка методов) | CI_Email |
3 | cc ( $ cc ) | $cc( смешанный ) - строка с разделителями-запятыми или массив адресов электронной почты |
Экземпляр CI_Email (цепочка методов) | CI_Email |
4 | bcc ( $ bcc [, $ limit = '' ]) | $bcc( смешанный ) - строка с разделителями-запятыми или массив адресов электронной почты $limit( int ) - Максимальное количество писем для отправки за пакет |
Экземпляр CI_Email (цепочка методов) | CI_Email |
5 | тема ( $ тема ) | $subject( строка ) - строка темы электронного письма |
Экземпляр CI_Email (цепочка методов) | CI_Email |
6 | сообщение ( $ body ) | $body( строка ) - тело сообщения электронной почты |
Экземпляр CI_Email (цепочка методов) | CI_Email |
7 | set_alt_message ( $ str ) | $str( строка ) - Альтернативное тело сообщения электронной почты |
Экземпляр CI_Email (цепочка методов) | CI_Email |
8 | set_header ( $ заголовок, $ значение ) | $header( строка ) - Название заголовка $value( строка ) - значение заголовка |
Экземпляр CI_Email (цепочка методов) | CI_Email |
9 | очистить ([ $ clear_attachments = FALSE ]) | $clear_attachments( bool ) - Удалять ли вложения |
Экземпляр CI_Email (цепочка методов) | CI_Email |
10 | отправить ([ $ auto_clear = TRUE ]) | $auto_clear( bool ) - Следует ли автоматически очищать данные сообщения |
Экземпляр CI_Email (цепочка методов) | CI_Email |
11 | прикрепить ($ filename [, $disposition = ''[, $newname = NULL [, $ mime = '']]]) | $filename( строка ) - Имя файла $disposition( строка ) - «расположение» вложения. Большинство почтовых клиентов принимают собственное решение независимо от используемой здесь спецификации MIME. Иана $newname( строка ) - Пользовательское имя файла для использования в электронной почте $mime( строка ) - тип MIME для использования (полезно для буферизованных данных) |
Экземпляр CI_Email (цепочка методов) | CI_Email |
12 | attachment_cid ( $ имя файла ) | $filename( строка ) - Имя существующего вложения |
Content-ID прикрепленного файла или FALSE, если не найден | строка |
Отправка электронного письма
Чтобы отправить электронное письмо с помощью CodeIgniter, сначала вам необходимо загрузить библиотеку электронной почты, используя следующее:
$this->load->library('email');
После загрузки библиотеки просто выполните следующие функции, чтобы установить необходимые элементы для отправки электронного письма. Вfrom() функция используется для установки - откуда отправляется электронное письмо и to()функция используется - кому отправляется электронное письмо. Вsubject() и message() Функция используется для установки темы и сообщения электронного письма.
$this->email->from('[email protected]', 'Your Name'); $this->email->to('[email protected]');
$this->email->subject('Email Test'); $this->email->message('Testing the email class.');
После этого выполните send() как показано ниже, чтобы отправить электронное письмо.
$this->email->send();
пример
Создайте файл контроллера Email_controller.php и сохраните это в 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');
}
}
?>
Создайте файл представления с именем email_form.php и сохраните его в 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>
Внесите изменения в routes.php файл в application/config/routes.php и добавьте следующую строку в конец файла.
$route['email'] = 'Email_Controller';
Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com URL-адресом своего сайта.
http://yoursite.com/index.php/email
Проверка - важный процесс при создании веб-приложения. Это гарантирует, что данные, которые мы получаем, пригодны для хранения или обработки. CodeIgniter сделал эту задачу очень простой. Давайте разберемся в этом процессе на простом примере.
пример
Создать файл просмотра myform.php и сохраните приведенный ниже код в application/views/myform.php. На этой странице будет отображаться форма, в которой пользователь может указать свое имя, и мы проверим эту страницу, чтобы убедиться, что она не должна быть пустой при отправке.
<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>
Создать файл просмотра formsuccess.php и сохраните это в application/views/formsuccess.php. Эта страница будет отображаться, если форма будет успешно проверена.
<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>
Создайте файл контроллера Form.php и сохраните это в application/controller/Form.php. Эта форма будет либо отображать ошибки, если она не проверена должным образом, либо перенаправлена наformsuccess.php страница.
<?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');
}
}
}
?>
Добавьте следующую строку в application/config/routes.php.
$route['validation'] = 'Form';
Давайте выполним этот пример, посетив следующий URL-адрес в браузере. Этот URL-адрес может отличаться в зависимости от вашего сайта.
http://yoursite.com/index.php/validation
Появится следующий экран -
Мы добавили проверку в контроллер - Nameобязательное поле перед отправкой формы. Итак, если вы нажмете кнопку отправки, не вводя ничего в поле имени, вам будет предложено ввести имя перед отправкой, как показано на экране ниже.
После успешного ввода имени вы будете перенаправлены на экран, как показано ниже.
В приведенном выше примере мы использовали обязательную настройку правила. В CodeIgniter доступно множество правил, которые описаны ниже.
Справочник по правилам проверки
Ниже приведен список всех доступных для использования собственных правил.
Правило | Параметр | Описание | пример |
---|---|---|---|
required |
Нет | Возвращает FALSE, если элемент формы пуст. | |
matches |
да | Возвращает FALSE, если элемент формы не соответствует элементу в параметре. | соответствует [form_item] |
regex_match |
да | Возвращает FALSE, если элемент формы не соответствует регулярному выражению. | regex_match [/ regex /] |
differs |
да | Возвращает FALSE, если элемент формы не отличается от элемента в параметре. | отличается [form_item] |
is_unique |
да | Возвращает FALSE, если элемент формы не уникален для таблицы и имени поля в параметре. Примечание. Для работы этого правила требуется, чтобы Построитель запросов был включен. | is_unique [table.field] |
min_length |
да | Возвращает FALSE, если элемент формы короче значения параметра. | min_length [3] |
max_length |
да | Возвращает FALSE, если элемент формы длиннее значения параметра. | max_length [12] |
exact_length |
да | Возвращает FALSE, если элемент формы не является точно значением параметра. | точная_длина [8] |
greater_than |
да | Возвращает FALSE, если элемент формы меньше или равен значению параметра или не является числовым. | больше_тем [8] |
greater_than_equal_to |
да | Возвращает FALSE, если элемент формы меньше значения параметра или не является числовым. | superior_than_equal_to [8] |
less_than |
да | Возвращает FALSE, если элемент формы больше или равен значению параметра или не является числовым. | less_than [8] |
less_than_equal_to |
да | Возвращает FALSE, если элемент формы больше значения параметра или не является числовым. | less_than_equal_to [8] |
in_list |
да | Возвращает FALSE, если элемент формы не входит в заранее определенный список. | in_list [красный, синий, зеленый] |
alpha |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме буквенных символов. | |
alpha_numeric |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме буквенно-цифровых символов. | |
alpha_numeric_spaces |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме буквенно-цифровых символов или пробелов. Следует использовать после обрезки, чтобы избежать пробелов в начале или в конце | |
alpha_dash |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме буквенно-цифровых символов, подчеркиваний или дефисов. | |
numeric |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме числовых символов. | |
integer |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме целого числа. | |
decimal |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме десятичного числа. | |
is_natural |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме натурального числа - 0, 1, 2, 3 и т. Д. | |
is_natural_no_zero |
Нет | Возвращает FALSE, если элемент формы содержит что-либо, кроме натурального числа, но не нуля - 1, 2, 3 и т. Д. | |
valid_url |
Нет | Возвращает FALSE, если элемент формы не содержит действительного URL. | |
valid_email |
Нет | Возвращает FALSE, если элемент формы не содержит действительного адреса электронной почты. | |
valid_emails |
Нет | Возвращает FALSE, если какое-либо значение, указанное в списке, разделенном запятыми, не является допустимым адресом электронной почты. | |
valid_ip |
Нет | Возвращает FALSE, если предоставленный IP недействителен. Принимает необязательный параметр ipv4 или ipv6 для указания формата IP. | |
valid_base64 |
Нет | Возвращает FALSE, если предоставленная строка содержит что-либо, кроме допустимых символов Base64. |
При создании веб-сайтов нам часто требуется отслеживать активность и состояние пользователя, и для этой цели мы должны использовать session. В CodeIgniter для этого есть класс сеанса.
Инициализация сеанса
Данные сеансов доступны во всем мире через сайт, но для использования этих данных нам сначала необходимо инициализировать сеанс. Мы можем сделать это, выполнив следующую строку в конструкторе.
$this->load->library('session');
После загрузки библиотеки сеанса вы можете просто использовать объект сеанса, как показано ниже.
$this->session
Добавить данные сеанса
В PHP мы просто используем $_SESSION массив для установки любых данных в сеансе, как показано ниже.
$_SESSION[‘key’] = value;
Где 'key'- ключ массива и value ставится справа от знака равенства.
То же самое можно сделать в CodeIgniter, как показано ниже.
$this->session->set_userdata('some_name', 'some_value');
set_userdata()функция принимает два аргумента. Первый аргумент,some_name, это имя переменной сеанса, под которой, some_value будут храниться.
set_userdata() функция также поддерживает другой синтаксис, в котором вы можете передать массив для хранения значений, как показано ниже.
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Удалить данные сеанса
В PHP мы можем удалить данные, хранящиеся в сеансе, используя unset() работают, как показано ниже.
unset($_SESSION[‘some_name’]);
Удалить данные сеанса в CodeIgniter очень просто, как показано ниже. Приведенная ниже версияunset_userdata() функция удалит только одну переменную из сеанса.
$this->session->unset_userdata('some_name');
Если вы хотите удалить больше значений из сеанса или удалить весь массив, вы можете использовать приведенную ниже версию unset_userdata() функция.
$this->session->unset_userdata($array_items);
Получить данные сеанса
После установки данных в сеансе мы также можем получить эти данные, как показано ниже. Userdata()функция будет использоваться для этой цели. Эта функция вернетNULL если данные, к которым вы пытаетесь получить доступ, недоступны.
$name = $this->session->userdata('name');
пример
Создайте класс контроллера с именем Session_controller.php и сохраните это в 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');
}
}
?>
Создайте файл представления с именем session_view.php и сохраните это в 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>
Внесите изменения в routes.php файл в application/config/routes.php и добавьте следующую строку в конец файла.
$route['sessionex'] = 'Session_Controller';
Выполните приведенный выше пример, используя следующий адрес. Заменитьyoursite.com с URL-адресом вашего сайта.
http://yoursite.com/index.php/sessionexПри создании веб-приложения нам нужно сохранить некоторые данные только один раз, а после этого мы хотим удалить эти данные. Например, чтобы отобразить сообщение об ошибке или информационное сообщение. В PHP нам приходится делать это вручную, но CodeIgniter упростил нам эту работу. В CodeIgniter флэш-данные будут доступны только до следующего запроса и будут автоматически удалены.
Добавить Flashdata
Мы можем просто сохранить flashdata, как показано ниже.
$this->session->mark_as_flash('item');
mark_as_flash()Для этой цели используется функция, которая принимает только один аргумент сохраняемого значения. Мы также можем передать массив для хранения нескольких значений.
set_flashdata()Также можно использовать функцию, которая принимает два аргумента, имя и значение, как показано ниже. Мы также можем передать массив.
$this->session->set_flashdata('item','value');
Получить Flashdata
Flashdata можно получить с помощью функции flashdata (), которая принимает один аргумент элемента, который необходимо получить, как показано ниже. Функция flashdata () гарантирует, что вы получаете только флэш-данные, а не какие-либо другие данные.
$this->session->flashdata('item');
Если вы не передадите никаких аргументов, вы можете получить массив с той же функцией.
пример
Создайте класс под названием FlashData_Controller.php и сохраните его в 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');
}
}
?>
Создайте файл представления с именем flashdata_home.php и сохраните это в 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>
Внесите изменения в routes.php файл в application/config/routes.php и добавьте следующую строку в конец файла.
$route['flashdata'] = 'FlashData_Controller';
$route['flashdata/add'] = 'FlashData_Controller/add';
Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com URL-адресом своего сайта.
http://yoursite.com/index.php/flashdata
После посещения указанного выше URL-адреса вы увидите экран, показанный ниже.
Нажмите на "Click Here», И вы увидите экран, как показано ниже. Здесь, на этом экране, вы увидите значение переменной флэш-данных. Обновите страницу еще раз, и вы увидите экран, подобный приведенному выше, и переменная flash-данных будет удалена автоматически.
В некоторых ситуациях, когда вы хотите удалить данные, хранящиеся в сеансе, через определенный период времени, это можно сделать с помощью tempdata функциональность в CodeIgniter.
Добавить временные данные
Чтобы добавить данные как tempdata, мы должны использовать mark_as_tempdata()функция. Эта функция принимает два аргумента или элемента, которые должны быть сохранены какtempdata и время истечения срока действия этих элементов показано ниже.
// 'item' will be erased after 300 seconds(5 minutes)
$this->session->mark_as_temp('item',300);
Вы также можете передать массив для хранения нескольких данных. Срок действия всех предметов, хранящихся ниже, истечет через 300 секунд.
$this->session->mark_as_temp(array('item','item2'),300);
Вы также можете установить различное время истечения срока действия для каждого элемента, как показано ниже.
// '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
));
Получить временные данные
Мы можем получить временные данные, используя tempdata()функция. Эта функция гарантирует, что вы получаете только временные данные, а не какие-либо другие данные. Посмотрите на приведенный ниже пример, чтобы узнать, как получить временные данные.tempdata() функция будет принимать один аргумент элемента, который нужно получить.
$this->session->tempdata('item');
Если вы опустите аргумент, вы сможете получить все существующие временные данные.
Удалить Tempdata
Tempdata удаляется автоматически по истечении срока его действия, но если вы хотите удалить временные данные до этого, вы можете сделать, как показано ниже, с помощью unset_tempdata() функция, которая принимает один аргумент удаляемого элемента.
$this->session->unset_tempdata('item');
пример
Создайте класс под названием Tempdata_controller.php и сохраните это в 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');
}
}
?>
Создайте файл с именем tempdata_view.php и сохраните это в 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>
Внесите изменения в routes.php файл в application / config / routes.php и добавьте следующую строку в конец файла.
$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";
Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com URL-адресом своего сайта.
http://yoursite.com/index.php/tempdata
После посещения указанного выше URL-адреса вы увидите экран, показанный ниже.
Нажмите на “Click Here” ссылку, и вы увидите экран, как показано ниже.
Здесь, на этом экране, вы увидите значение переменной временных данных. Обновите ту же страницу через пять секунд снова, так как мы установили временные данные на пять секунд, и вы увидите экран, подобный приведенному выше, а переменная временных данных будет автоматически удалена через пять секунд. Если вы обновите ту же страницу до 5 секунд, временные данные не будут удалены, поскольку период времени не истек.
Уничтожение сеанса
В PHP мы используем session_destroy() функция для уничтожения сеанса, а в CodeIgniter мы можем уничтожить функцию, как показано ниже.
$this->session->sess_destroy();
После вызова этой функции все данные сеанса, включая flashdata и tempdata будут удалены без возможности восстановления и не могут быть восстановлены.
Cookie - это небольшой фрагмент данных, отправленный с веб-сервера для хранения на клиентском компьютере. CodeIgniter имеет один помощник под названием «Cookie Helper» для управления файлами cookie.
Syntax |
set_cookie ( $ name [, $ value = '' [, $ expire = '' [, $ domain = '' [, $ path = '/' [, $ prefix = '' [, $ secure = FALSE [, $ httponly = FALSE ]]]]]]]) |
Parameters |
|
Return Type |
пустота |
в set_cookie()функции, мы можем передать все значения двумя способами. В первом случае можно передавать только массив, а во втором - отдельные параметры.
Syntax |
get_cookie ( $ index [, $ xss_clean = NULL ]]) |
Parameters |
|
Return |
Значение cookie или NULL, если не найдено |
Return Type |
смешанный |
В get_cookie() Функция используется для получения файла cookie, который был установлен с помощью функции set_cookie ().
Syntax |
delete_cookie ( $ name [, $ domain = '' [, $ path = '/' [, $ prefix = '' ]]]]) |
Parameters |
|
Return Type |
пустота |
В delete_cookie() функция используется для удаления cookie ().
пример
Создайте контроллер под названием Cookie_controller.php и сохраните его в 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');
}
}
?>
Создайте файл представления с именем Cookie_view.php и сохраните его в 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>
Измените файл routes.php в application / config / routes.php, чтобы добавить маршрут для указанного выше контроллера, и добавьте следующую строку в конец файла.
$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie";
$route['cookie/delete'] = "Cookie_controller/deletecookie";
После этого вы можете выполнить следующий URL-адрес в браузере, чтобы выполнить пример.
http://yoursite.com/index.php/cookie
Результат будет таким, как показано на следующем снимке экрана.
Функции библиотеки CodeIgniter и вспомогательные функции должны быть инициализированы перед использованием, но есть некоторые общие функции, которые не нужно инициализировать.
Эти общие функции и их описания приведены ниже.
Синтаксис | is_php ( $ версия ) |
---|---|
Параметры | $version( строка ) - Номер версии |
Возвращение | ИСТИНА, если запущенная версия PHP как минимум указана, или ЛОЖЬ, если нет |
Тип возврата | пустота |
Описание | Определяет, больше ли используемая версия PHP, чем предоставленный номер версии. |
Синтаксис | is_really_writable ( $ файл ) |
---|---|
Параметры | $file( строка ) - Путь к файлу |
Возвращение | ИСТИНА, если путь доступен для записи, ЛОЖЬ, если нет |
Тип возврата | bool |
Описание | проверяет, доступен ли файл для записи. |
Синтаксис | config_item ( $ ключ ) |
---|---|
Параметры | $key( строка ) - Ключ элемента конфигурации |
Возвращение | Значение ключа конфигурации или NULL, если не найдено |
Тип возврата | смешанный |
Описание | Эта функция используется для получения элемента конфигурации |
Синтаксис | set_status_header ( $ code [, $ text = '' ]) |
---|---|
Параметры | $code( int ) - Код состояния HTTP-ответа $text( строка ) - настраиваемое сообщение для установки с кодом состояния |
Возвращение | |
Тип возврата | пустота |
Описание | Эта функция позволяет вам вручную установить заголовок статуса сервера. |
Синтаксис | remove_invisible_characters ( $ str [, $ url_encoded = TRUE ]) |
---|---|
Параметры | $str( строка ) - Входная строка $url_encoded( bool ) - Удалять ли также символы в кодировке URL |
Возвращение | Продезинфицированная строка |
Тип возврата | строка |
Описание | Эта функция предотвращает вставку символов NULL между символами ASCII. |
Синтаксис | html_escape ( $ var ) |
---|---|
Параметры | $var( смешанный ) - переменная для экранирования (строка или массив) |
Возвращение | HTML-экранированные строки |
Тип возврата | смешанный |
Описание | Эта функция действует как встроенная функция PHP htmlspecialchars (). |
Синтаксис | get_mimes () |
---|---|
Возвращение | Ассоциативный массив типов файлов |
Тип возврата | массив |
Описание | Эта функция возвращает ссылку на массив MIME из application / config / mimes.php . |
Синтаксис | is_https () |
---|---|
Возвращение | TRUE, если в настоящее время используется HTTP-over-SSL, FALSE, если нет |
Тип возврата | bool |
Описание | Возвращает TRUE, если используется безопасное (HTTPS) соединение, и FALSE в любом другом случае (включая запросы, отличные от HTTP). |
Синтаксис | is_cli () |
---|---|
Возвращение | TRUE, если в настоящее время работает под CLI, в противном случае FALSE |
Тип возврата | bool |
Описание | Возвращает TRUE, если приложение запускается из командной строки, и FALSE, если нет. |
Синтаксис | function_usable ( $ имя_функции ) |
---|---|
Параметры | $function_name( строка ) - Имя функции |
Тип возврата | bool |
Описание | Возвращает TRUE, если функция существует и ее можно использовать, в противном случае возвращает FALSE. |
Ниже приведен пример, демонстрирующий все вышеперечисленные функции.
пример
Здесь мы создали только один контроллер, в котором будем использовать указанные выше функции. Скопируйте приведенный ниже код и сохраните его в 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";
}
}
?>
Изменить routes.php файл в application / config / routes.php, чтобы добавить маршрут для указанного выше контроллера и добавить следующую строку в конец файла.
$route['commonfunctions'] = 'CommonFun_Controller';
Введите следующий URL-адрес в адресной строке браузера, чтобы выполнить пример.
http://yoursite.com/index.php/commonfunctions
Кеширование страницы увеличит скорость загрузки страницы. Если страница кэшируется, она будет сохранена в полностью обработанном состоянии. В следующий раз, когда сервер получит запрос на кешированную страницу, он будет напрямую отправлен в запрошенный браузер.
Кешированные файлы хранятся в application/cacheпапка. Кеширование можно включить для каждой страницы. При включении кеша нам необходимо установить время, до которого он должен оставаться в кэшированной папке, и по истечении этого периода он будет автоматически удален.
Включить кеширование
Кэширование можно включить, выполнив следующую строку в любом методе контроллера.
$this->output->cache($n);
где $n это количество minutes, вы хотите, чтобы страница оставалась кешированной между обновлениями.
Отключить кеширование
Файл кеша удаляется по истечении срока его действия, но если вы хотите удалить его вручную, вам необходимо отключить его. Вы можете отключить кеширование, выполнив следующую строку.
// Deletes cache for the currently requested URI
$this->output->delete_cache();
// Deletes cache for /foo/bar
$this->output->delete_cache('/foo/bar');
пример
Создайте контроллер под названием Cache_controller.php и сохраните это в 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');
}
}
?>
Создайте файл представления с именем test.php и сохраните это в 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>
Изменить routes.php файл в application/config/routes.php чтобы добавить маршрут для указанного выше контроллера и добавить следующую строку в конец файла.
$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';
Введите следующий URL-адрес в браузере, чтобы выполнить пример.
http://yoursite.com/index.php/cachecontroller
После посещения указанного выше URL-адреса вы увидите, что файл кеша для этого будет создан в application/cacheпапка. Чтобы удалить файл, перейдите по следующему URL-адресу.
http://yoursite.com/index.php/cachecontroller/delete
При создании веб-приложения нам часто требуется перенаправить пользователя с одной страницы на другую. CodeIgniter облегчает нам эту работу. Вredirect() для этого используется функция.
Syntax |
перенаправить ($uri = '', $method = 'auto', $ code = NULL ) |
Parameters |
|
Return type |
пустота |
Первый аргумент может иметь два типа URI. Мы можем передать полный URL-адрес сайта или сегменты URI контроллеру, который вы хотите направить.
Второй необязательный параметр может иметь любое из трех значений: авто, местоположение или обновление. По умолчанию - авто.
Третий необязательный параметр доступен только с перенаправлением местоположения и позволяет отправлять определенный код ответа HTTP.
пример
Создайте контроллер под названием Redirect_controller.php и сохраните это в 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');
}
}
?>
Изменить routes.php файл в application/config/routes.php чтобы добавить маршрут для указанного выше контроллера и добавить следующую строку в конец файла.
$route['redirect'] = 'Redirect_controller';
$route['redirect/version2'] = 'Redirect_controller/version2'; $route['redirect/computer_graphics'] = 'Redirect_controller/computer_graphics';
Введите следующий URL-адрес в браузере, чтобы выполнить пример.
http://yoursite.com/index.php/redirect
Приведенный выше URL-адрес перенаправит вас на веб-сайт tutorialspoint.com, а если вы посетите следующий URL-адрес, он перенаправит вас на учебник по компьютерной графике на tutorialspoint.com.
http://yoursite.com/index.php/redirect/computer_graphics
При создании веб-приложения нас очень беспокоит производительность веб-сайта с точки зрения того, сколько времени потребовалось контроллеру для выполнения и сколько памяти используется. Не только производительность, но нам также необходимо видеть понимание данных, таких как данные POST, данные запросов к базе данных, данные сеанса и т. Д. Для целей отладки при разработке некоторых приложений. CodeIgniter упростил нам эту работу, профилировав приложение.
Включить профилирование
Чтобы включить профилирование вашего приложения, просто выполните команду, указанную ниже, любым из методов вашего контроллера.
$this->output->enable_profiler(TRUE);
Отчет о профилировании можно увидеть внизу страницы после его включения.
Отключить профилирование
Чтобы отключить профилирование вашего приложения, просто выполните команду, указанную ниже, любым из методов вашего контроллера.
$this->output->enable_profiler(FALSE);
Включение / отключение раздела профилировщика
Профилирование может производиться по секциям. Вы можете включить или отключить профилирование раздела, установив логическое значение TRUE или FALSE. Если вы хотите настроить профилирование для приложения, вы можете сделать это в файле, расположенном вapplication/config/profiler.php
Например, следующая команда включит профилирование запросов для всего приложения.
$config['queries'] = TRUE;
В следующей таблице ключ - это параметр, который можно установить в массиве конфигурации для включения или отключения определенного профиля.
Ключ | Описание | По умолчанию |
---|---|---|
benchmarks |
Истекшее время контрольных точек и общее время выполнения | ПРАВДА |
config |
Переменные CodeIgniterConfig | ПРАВДА |
controller_info |
Запрошенный класс и метод контроллера | ПРАВДА |
get |
Любые данные GET, переданные в запросе | ПРАВДА |
http_headers |
Заголовки HTTP для текущего запроса | ПРАВДА |
memory_usage |
Объем памяти, потребляемой текущим запросом, в байтах | ПРАВДА |
post |
Любые данные POST, переданные в запросе | ПРАВДА |
queries |
Список всех выполненных запросов к базе данных, включая время выполнения | ПРАВДА |
uri_string |
URI текущего запроса | ПРАВДА |
session_data |
Данные, хранящиеся в текущем сеансе | ПРАВДА |
query_toggle_count |
Количество запросов, после которых блок запроса будет по умолчанию скрыт. | 25 |
Профилировщик, установленный в файле в application/config/profiler.php можно переопределить с помощью set_profiler_sections() функции в контроллерах, как показано ниже.
$sections = array(
'config' => TRUE,
'queries' => TRUE
);
$this->output->set_profiler_sections($sections);
Установка контрольных точек
Если вы хотите измерить время, затрачиваемое на выполнение набора строк или использование памяти, вы можете рассчитать его, используя контрольные точки в CodeIgniter. Есть отдельный «Benchmarking»Для этой цели в CodeIgniter.
Этот класс загружается автоматически; вам не нужно его загружать. Его можно использовать в любом месте вашего контроллера, представления и классов модели. Все, что вам нужно сделать, это отметить начальную и конечную точки, а затем выполнитьelapsed_time() между этими двумя отмеченными точками, и вы можете узнать время, необходимое для выполнения этого кода, как показано ниже.
<?php
$this->benchmark->mark('code_start'); // Some code happens here $this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
?>
Чтобы отобразить использование памяти, используйте функцию memory_usage() как показано в следующем коде.
<?php
echo $this->benchmark->memory_usage();
?>
пример
Создайте контроллер под названием Profiler_controller.php и сохраните это в 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');
}
}
?>
Создайте файл представления с именем test.php и сохраните его в 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>
Измените файл routes.php на application/config/routes.php чтобы добавить маршрут для указанного выше контроллера и добавить следующую строку в конец файла.
$route['profiler'] = "Profiler_controller"; $route['profiler/disable'] = "Profiler_controller/disable"
После этого вы можете ввести следующий URL-адрес в адресной строке браузера, чтобы выполнить пример.
http://yoursite.com/index.php/profiler
Указанный выше URL-адрес включит профилировщик, и он выдаст результат, как показано на следующем снимке экрана.
Чтобы отключить профилирование, выполните следующий URL.
http://yoursite.com/index.php/profiler/disable
Добавить файл JavaScript и CSS (каскадная таблица стилей) в CodeIgniter очень просто. Вы должны создать папку JS и CSS в корневом каталоге и скопировать все файлы .js в папку JS и файлы .css в папку CSS, как показано на рисунке.
Например, предположим, вы создали один файл JavaScript. sample.js и один файл CSS style.css. Теперь, чтобы добавить эти файлы в ваши представления, загрузите помощник URL в свой контроллер, как показано ниже.
$this->load->helper('url');
После загрузки помощника URL-адреса в контроллер просто добавьте приведенные ниже строки в файл представления, чтобы загрузить файлы sample.js и style.css в представление, как показано ниже.
<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>
пример
Создайте контроллер под названием Test.php и сохраните это в application/controller/Test.php
<?php
class Test extends CI_Controller {
public function index() {
$this->load->helper('url');
$this->load->view('test');
}
}
?>
Создайте файл представления с именем test.php и сохраните его в 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>
Создайте файл CSS с именем style.css и сохраните его в css/style.css
body {
background:#000;
color:#FFF;
}
Создайте файл JS с именем sample.js и сохраните его в js/sample.js
function test() {
alert('test');
}
Изменить routes.php файл в application/config/routes.php чтобы добавить маршрут для указанного выше контроллера и добавить следующую строку в конец файла.
$route['profiler'] = "Profiler_controller";
$route['profiler/disable'] = "Profiler_controller/disable"
Используйте следующий URL-адрес в браузере, чтобы выполнить приведенный выше пример.
http://yoursite.com/index.php/test
Языковой класс в CodeIgniter предоставляет простой способ поддержки нескольких языков для интернационализации. В некоторой степени мы можем использовать файлы на разных языках для отображения текста на разных языках.
Мы можем поместить файлы на разных языках в каталог application / language. Файлы системного языка можно найти в каталоге system / language, но чтобы добавить свой язык в приложение, вы должны создать отдельную папку для каждого языка в каталоге application / language.
Создание файлов Язык
Чтобы создать языковой файл, вы должны закончить его _lang.php. Например, вы хотите создать языковой файл для французского языка, тогда вы должны сохранить его с помощьюfrench_lang.php. В этом файле вы можете хранить все свои языковые тексты в комбинации ключей и значений в$lang массив, как показано ниже.
$lang[‘key’] = ‘val’;
Загрузка языкового файла
Чтобы использовать любой язык в вашем приложении, вы должны сначала загрузить файл этого конкретного языка, чтобы получить различные тексты, хранящиеся в этом файле. Вы можете использовать следующий код для загрузки языкового файла.
$this->lang->load('filename', 'language');
filename- Это имя файла, который вы хотите загрузить. Не используйте здесь расширение файла, а используйте только имя файла.
Language - Это языковой набор, содержащий его.
Получение языкового текста
Чтобы получить строку из языкового файла, просто выполните следующий код.
$this->lang->line('language_key');
где language_key - ключевой параметр, используемый для получения значения ключа в загруженном языковом файле.
Языки автозагрузки
Если вам нужен какой-то язык глобально, вы можете автозагрузить его в application/config/autoload.php файл, как показано ниже.
| -----------------------------------------------------------------------
| 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();
Просто передайте разные языки для автозагрузки CodeIgniter.
пример
Создайте контроллер под названием Lang_controller.php и сохраните это в 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);
}
}
?>
Создайте файл представления с именем lang_view.php и сохраните его в 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>
Создайте три папки под названием English, French и German в application/language как показано на рисунке ниже.
Скопируйте приведенный ниже код и сохраните его в english_lang.php файл в application/language/english папка.
<?php
$lang['msg'] = "CodeIgniter Internationalization example.";
?>
Скопируйте приведенный ниже код и сохраните его в french_lang.php файл в application/language/French папка.
<?php
$lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>
Скопируйте приведенный ниже код и сохраните его в german_lang.php файл в application/language/german папка.
<?php
$lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>
Изменить routes.php файл в application/config/routes.php чтобы добавить маршрут для указанного выше контроллера и добавить следующую строку в конец файла.
$route['lang'] = "Lang_controller";
Выполните следующий URL-адрес в браузере, чтобы выполнить приведенный выше пример.
http://yoursite.com/index.php/lang
Результат будет таким, как показано на следующем снимке экрана. Если вы измените язык в раскрывающемся списке, язык предложения, написанного под раскрывающимся списком, также изменится соответствующим образом.
Предотвращение XSS
XSS означает межсайтовый скриптинг. CodeIgniter поставляется с защитой XSS-фильтрации. Этот фильтр предотвратит любой вредоносный код JavaScript или любой другой код, который пытается перехватить cookie и выполнять вредоносные действия. Чтобы отфильтровать данные через фильтр XSS, используйтеxss_clean() метод, как показано ниже.
$data = $this->security->xss_clean($data);
Эту функцию следует использовать только при отправке данных. Необязательный второй логический параметр также можно использовать для проверки файла изображения на предмет XSS-атаки. Это полезно для возможности загрузки файлов. Если его значение истинно, это означает, что изображение безопасно, а не иначе.
Предотвращение SQL-инъекций
SQL-инъекция - это атака на запрос к базе данных. В PHP мы используемmysql_real_escape_string() функция, чтобы предотвратить это вместе с другими методами, но CodeIgniter предоставляет встроенные функции и библиотеки для предотвращения этого.
Мы можем предотвратить внедрение SQL в CodeIgniter следующими тремя способами:
- Экранирование запросов
- Ставка запроса
- Класс Active Record
Экранирование запросов
<?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() Функция автоматически добавляет данные в одинарные кавычки и определяет тип данных, чтобы исключить только строковые данные.
Ставка запроса
<?php
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
?>
В приведенном выше примере знак вопроса (?) Будет заменен массивом во втором параметре функции query (). Основное преимущество построения запроса таким образом заключается в том, что значения автоматически экранируются, что создает безопасные запросы. Движок CodeIgniter делает это за вас автоматически, поэтому вам не нужно его запоминать.
Класс Active Record
<?php
$this->db->get_where('subscribers_tbl',array
('status'=> active','email' => '[email protected]'));
?>
Используя активные записи, каждый адаптер базы данных генерирует синтаксис запроса. Это также позволяет выполнять более безопасные запросы, поскольку значения исчезают автоматически.
Скрытие ошибок PHP
В производственной среде мы часто не хотим показывать пользователям какие-либо сообщения об ошибках. Хорошо, если он будет включен в среде разработки для целей отладки. Эти сообщения об ошибках могут содержать некоторую информацию, которую мы не должны показывать пользователям сайта из соображений безопасности.
Есть три файла CodeIgniter, связанных с ошибками.
Уровень отчетов об ошибках PHP
В разных средах требуются разные уровни отчетов об ошибках. По умолчанию при разработке будут отображаться ошибки, но при тестировании и в реальном времени они будут скрыты. Есть файл с названиемindex.phpв корневом каталоге CodeIgniter, который используется для этой цели. Если мы передадим ноль в качестве аргумента вerror_reporting() функция, которая скроет все ошибки.
Ошибка базы данных
Даже если вы отключили ошибки PHP, ошибки MySQL остаются открытыми. Вы можете выключить это черезapplication/config/database.php. Установитьdb_debug вариант в $db массив в FALSE как показано ниже.
$db['default']['db_debug'] = FALSE;
Журнал ошибок
Другой способ - передать ошибки в файлы журналов. Таким образом, он не будет отображаться пользователям на сайте. Просто установитеlog_threshold ценность в $config массив до 1 в application/cofig/config.php файл, как показано ниже.
$config['log_threshold'] = 1;
Предотвращение CSRF
CSRF означает подделку межсайтовых запросов. Вы можете предотвратить эту атаку, включив ее вapplication/config/config.php файл, как показано ниже.
$config['csrf_protection'] = TRUE;
Когда вы создаете форму, используя form_open()функция, он автоматически вставит CSRF как скрытое поле. Вы также можете вручную добавить CSRF, используяget_csrf_token_name() и get_csrf_hash()функция. Вget_csrf_token_name() функция вернет имя CSRF и get_csrf_hash() вернет хеш-значение CSRF.
Токен CSRF можно повторно создавать каждый раз для отправки, или вы также можете сохранить его неизменным на протяжении всего срока службы файла cookie CSRF. Установив значениеTRUE, в массиве конфигурации с ключом ‘csrf_regenerate’ восстановит токен, как показано ниже.
$config['csrf_regenerate'] = TRUE;
Вы также можете занести в белый список URL-адреса для защиты CSRF, установив его в массиве конфигурации с помощью ключа ‘csrf_exclude_uris’как показано ниже. Вы также можете использовать регулярное выражение.
$config['csrf_exclude_uris'] = array('api/person/add');
Обработка паролей
Многие разработчики не знают, как обращаться с паролями в веб-приложениях, вероятно, поэтому многие хакеры считают, что взломать системы так легко. При работе с паролями следует помнить о следующих моментах:
НЕ храните пароли в текстовом формате.
Всегда хешируйте свои пароли.
НЕ используйте Base64 или аналогичную кодировку для хранения паролей.
НЕ используйте слабые или неработающие алгоритмы хеширования, такие как MD5 или SHA1. Используйте только надежные алгоритмы хеширования паролей, такие как BCrypt, который используется в собственных функциях хеширования паролей PHP.
НИКОГДА не отображайте и не отправляйте пароль в текстовом формате.
НЕ устанавливайте ненужные ограничения на пароли ваших пользователей.