Учебники

CodeIgniter — Краткое руководство

CodeIgniter — Обзор

CodeIgniter — это фреймворк для разработки приложений, который можно использовать для разработки веб-сайтов с использованием PHP. Это фреймворк с открытым исходным кодом. Он обладает очень богатым набором функциональных возможностей, что увеличит скорость разработки веб-сайтов.

Если вы хорошо знаете PHP, то CodeIgniter облегчит вашу задачу. У него очень богатый набор библиотек и помощников. Используя CodeIgniter, вы сэкономите много времени, если разрабатываете сайт с нуля. Кроме того, веб-сайт, встроенный в CodeIgniter, также является безопасным, поскольку он способен предотвращать различные атаки, совершаемые через веб-сайты.

CodeIgniter Особенности

Некоторые из важных функций CodeIgniter перечислены ниже —

  • Система на основе модели-представления-контроллера

  • Очень легкий вес

  • Полнофункциональные классы баз данных с поддержкой нескольких платформ.

  • Поддержка базы данных Query Builder

  • Проверка формы и данных

  • Безопасность и XSS-фильтрация

  • Управление сессиями

  • Класс отправки электронной почты. Поддерживает вложения, HTML / текстовую электронную почту, несколько протоколов (sendmail, SMTP и Mail) и многое другое.

  • Библиотека манипулирования изображениями (обрезка, изменение размера, вращение и т. Д.). Поддерживает GD, ImageMagick и NetPBM

  • Класс загрузки файлов

  • Класс FTP

  • локализация

  • пагинация

  • Шифрование данных

  • Бенчмаркинг

  • Кэширование полной страницы

  • Регистрация ошибок

  • Профилирование приложений

  • Класс календаря

  • Класс агента пользователя

  • Класс Zip-кодирования

  • Шаблон Engine Class

  • Trackback Class

  • Библиотека XML-RPC

  • Класс модульного тестирования

  • Дружественные поисковой системе URL

  • Гибкая маршрутизация URI

  • Поддержка хуков и расширений классов

  • Большая библиотека «вспомогательных» функций

Система на основе модели-представления-контроллера

Очень легкий вес

Полнофункциональные классы баз данных с поддержкой нескольких платформ.

Поддержка базы данных Query Builder

Проверка формы и данных

Безопасность и XSS-фильтрация

Управление сессиями

Класс отправки электронной почты. Поддерживает вложения, HTML / текстовую электронную почту, несколько протоколов (sendmail, SMTP и Mail) и многое другое.

Библиотека манипулирования изображениями (обрезка, изменение размера, вращение и т. Д.). Поддерживает GD, ImageMagick и NetPBM

Класс загрузки файлов

Класс FTP

локализация

пагинация

Шифрование данных

Бенчмаркинг

Кэширование полной страницы

Регистрация ошибок

Профилирование приложений

Класс календаря

Класс агента пользователя

Класс Zip-кодирования

Шаблон Engine Class

Trackback Class

Библиотека XML-RPC

Класс модульного тестирования

Дружественные поисковой системе URL

Гибкая маршрутизация URI

Поддержка хуков и расширений классов

Большая библиотека «вспомогательных» функций

CodeIgniter — Установка

Это очень легко установить CodeIgniter. Просто следуйте инструкциям ниже

  • Шаг 1 — Загрузите CodeIgniter по ссылке CodeIgniter

  • Шаг 2 — Распакуйте папку.

  • Шаг 3 — Загрузите все файлы и папки на ваш сервер.

  • Шаг 4 — После загрузки всех файлов на ваш сервер, перейдите по URL вашего сервера, например, www.domain-name.com.

Шаг 1 — Загрузите CodeIgniter по ссылке CodeIgniter

Шаг 2 — Распакуйте папку.

Шаг 3 — Загрузите все файлы и папки на ваш сервер.

Шаг 4 — После загрузки всех файлов на ваш сервер, перейдите по URL вашего сервера, например, www.domain-name.com.

При посещении URL вы увидите следующий экран —

Установка CodeIgniter

CodeIgniter — Архитектура приложения

Архитектура приложения CodeIgniter показана ниже.

Архитектура CodeIgniter

  • Как показано на рисунке, всякий раз, когда запрос приходит в CodeIgniter, он сначала переходит на страницу index.php .

  • На втором этапе маршрутизация решает, передавать ли этот запрос шагу 3 для кэширования или передавать этот запрос шагу 4 для проверки безопасности.

  • Если запрашиваемая страница уже находится в режиме кэширования , служба маршрутизации передаст запрос этапу 3, а ответ вернется к пользователю.

  • Если запрашиваемая страница не существует в кэшировании , то служба маршрутизации передает запрашиваемую страницу на шаг 4 для проверки безопасности .

  • Перед передачей запроса в Application Controller проверяется безопасность представленных данных. После проверки безопасности контроллер приложений загружает необходимые модели, библиотеки, помощники, плагины и скрипты и передает их в View .

  • Вид отобразит страницу с доступными данными и передаст ее для кэширования . Поскольку запрашиваемая страница ранее не кэшировалась, поэтому на этот раз она будет кэширована в Caching , чтобы быстро обработать эту страницу для будущих запросов.

Как показано на рисунке, всякий раз, когда запрос приходит в CodeIgniter, он сначала переходит на страницу index.php .

На втором этапе маршрутизация решает, передавать ли этот запрос шагу 3 для кэширования или передавать этот запрос шагу 4 для проверки безопасности.

Если запрашиваемая страница уже находится в режиме кэширования , служба маршрутизации передаст запрос этапу 3, а ответ вернется к пользователю.

Если запрашиваемая страница не существует в кэшировании , то служба маршрутизации передает запрашиваемую страницу на шаг 4 для проверки безопасности .

Перед передачей запроса в Application Controller проверяется безопасность представленных данных. После проверки безопасности контроллер приложений загружает необходимые модели, библиотеки, помощники, плагины и скрипты и передает их в View .

Вид отобразит страницу с доступными данными и передаст ее для кэширования . Поскольку запрашиваемая страница ранее не кэшировалась, поэтому на этот раз она будет кэширована в Caching , чтобы быстро обработать эту страницу для будущих запросов.

Структура каталогов

Изображение, приведенное ниже, показывает структуру каталогов CodeIgniter.

Структура каталогов

Структура каталогов CodeIgniter разделена на 3 папки —

  • заявка
  • система
  • Гид пользователя

заявка

Как видно из названия, папка Application содержит весь код вашего приложения, которое вы создаете. Это папка, в которой вы будете развивать свой проект. Папка приложения содержит несколько других папок, которые описаны ниже —

  • Кэш — эта папка содержит все кэшированные страницы вашего приложения. Эти кэшированные страницы увеличат общую скорость доступа к страницам.

  • Config — эта папка содержит различные файлы для настройки приложения. С помощью файла config.php пользователь может настроить приложение. Используя файл database.php , пользователь может настроить базу данных приложения.

  • Контроллеры — эта папка содержит контроллеры вашего приложения. Это основная часть вашего приложения.

  • Core — эта папка будет содержать базовый класс вашего приложения.

  • Помощники — в эту папку вы можете поместить вспомогательный класс вашего приложения.

  • Хуки — файлы в этой папке предоставляют возможность подключиться и изменить внутреннюю работу фреймворка без взлома основных файлов.

  • Язык — эта папка содержит файлы, связанные с языком.

  • Библиотеки — эта папка содержит файлы библиотек, разработанных для вашего приложения.

  • Журналы — эта папка содержит файлы, относящиеся к журналу системы.

  • Модели — логин базы данных будет размещен в этой папке.

  • Third_party — в этой папке вы можете разместить любые плагины, которые будут использоваться для вашего приложения.

  • Представления — HTML-файлы приложения будут размещены в этой папке.

Кэш — эта папка содержит все кэшированные страницы вашего приложения. Эти кэшированные страницы увеличат общую скорость доступа к страницам.

Config — эта папка содержит различные файлы для настройки приложения. С помощью файла config.php пользователь может настроить приложение. Используя файл database.php , пользователь может настроить базу данных приложения.

Контроллеры — эта папка содержит контроллеры вашего приложения. Это основная часть вашего приложения.

Core — эта папка будет содержать базовый класс вашего приложения.

Помощники — в эту папку вы можете поместить вспомогательный класс вашего приложения.

Хуки — файлы в этой папке предоставляют возможность подключиться и изменить внутреннюю работу фреймворка без взлома основных файлов.

Язык — эта папка содержит файлы, связанные с языком.

Библиотеки — эта папка содержит файлы библиотек, разработанных для вашего приложения.

Журналы — эта папка содержит файлы, относящиеся к журналу системы.

Модели — логин базы данных будет размещен в этой папке.

Third_party — в этой папке вы можете разместить любые плагины, которые будут использоваться для вашего приложения.

Представления — HTML-файлы приложения будут размещены в этой папке.

система

Эта папка содержит основные коды CodeIgniter, библиотеки, помощники и другие файлы, которые помогают упростить кодирование. Эти библиотеки и помощники загружаются и используются в разработке веб-приложений.

Эта папка содержит весь последующий код CodeIgniter, организованный в различные папки —

  • Core — эта папка содержит базовый класс CodeIgniter. Не изменяйте здесь ничего. Вся ваша работа будет проходить в папке приложения. Даже если ваше намерение состоит в том, чтобы расширить ядро ​​CodeIgniter, вы должны сделать это с помощью ловушек, и ловушки живут в папке приложения.

  • База данных — папка базы данных содержит основные драйверы базы данных и другие утилиты базы данных.

  • Fonts — папка Fonts содержит информацию о шрифтах и ​​утилиты.

  • Помощники . Папка помощников содержит стандартные помощники CodeIgniter (такие как помощники по дате, cookie и URL).

  • Язык — языковая папка содержит языковые файлы. Вы можете игнорировать это сейчас.

  • Библиотеки . Папка библиотек содержит стандартные библиотеки CodeIgniter (чтобы помочь вам с электронной почтой, календарями, загрузкой файлов и многим другим). Вы можете создавать свои собственные библиотеки или расширять (и даже заменять) стандартные, но они будут сохранены в каталоге application / library, чтобы отделить их от стандартных библиотек CodeIgniter, сохраненных в этой конкретной папке.

Core — эта папка содержит базовый класс CodeIgniter. Не изменяйте здесь ничего. Вся ваша работа будет проходить в папке приложения. Даже если ваше намерение состоит в том, чтобы расширить ядро ​​CodeIgniter, вы должны сделать это с помощью ловушек, и ловушки живут в папке приложения.

База данных — папка базы данных содержит основные драйверы базы данных и другие утилиты базы данных.

Fonts — папка Fonts содержит информацию о шрифтах и ​​утилиты.

Помощники . Папка помощников содержит стандартные помощники CodeIgniter (такие как помощники по дате, cookie и URL).

Язык — языковая папка содержит языковые файлы. Вы можете игнорировать это сейчас.

Библиотеки . Папка библиотек содержит стандартные библиотеки CodeIgniter (чтобы помочь вам с электронной почтой, календарями, загрузкой файлов и многим другим). Вы можете создавать свои собственные библиотеки или расширять (и даже заменять) стандартные, но они будут сохранены в каталоге application / library, чтобы отделить их от стандартных библиотек CodeIgniter, сохраненных в этой конкретной папке.

Гид пользователя

Это ваше руководство пользователя CodeIgniter. Это в основном автономная версия руководства пользователя на сайте CodeIgniter. Используя это, можно изучать функции различных библиотек, помощников и классов. Перед созданием первого веб-приложения в CodeIgniter рекомендуется просмотреть это руководство пользователя.

Помимо этих трех папок, есть еще один важный файл с именем « index.php ». В этом файле мы можем установить среду приложения и уровень ошибок, а также определить имя папки системы и приложения. Рекомендуется не редактировать эти настройки, если у вас недостаточно знаний о том, что вы собираетесь делать.

CodeIgniter — MVC Framework

CodeIgniter основан на паттерне разработки Model-View-Controller (MVC) . MVC — это программный подход, который отделяет логику приложения от представления. На практике это позволяет вашим веб-страницам содержать минимальные сценарии, поскольку презентация отделена от сценариев PHP.

MVC Framework

  • Модель представляет ваши структуры данных. Как правило, ваши классы моделей будут содержать функции, которые помогут вам извлекать, вставлять и обновлять информацию в вашей базе данных.

  • Представление — это информация, которая представляется пользователю. Представление обычно является веб-страницей, но в CodeIgniter представление также может быть фрагментом страницы, таким как верхний или нижний колонтитул. Это также может быть страница RSS или любой другой тип «страницы».

  • Контроллер служит посредником между моделью, представлением и любыми другими ресурсами, необходимыми для обработки HTTP-запроса и создания веб-страницы.

Модель представляет ваши структуры данных. Как правило, ваши классы моделей будут содержать функции, которые помогут вам извлекать, вставлять и обновлять информацию в вашей базе данных.

Представление — это информация, которая представляется пользователю. Представление обычно является веб-страницей, но в CodeIgniter представление также может быть фрагментом страницы, таким как верхний или нижний колонтитул. Это также может быть страница RSS или любой другой тип «страницы».

Контроллер служит посредником между моделью, представлением и любыми другими ресурсами, необходимыми для обработки HTTP-запроса и создания веб-страницы.

CodeIgniter — Основные понятия

Контроллеры

Контроллер — это простой файл класса. Как следует из названия, он контролирует все приложение по URI.

Создание контроллера

Сначала перейдите в папку application / controllers . Там вы найдете два файла: index.html и Welcome.php . Эти файлы поставляются с CodeIgniter.

Сохраните эти файлы, как они есть. Создайте новый файл по тому же пути с именем « Test.php ». Напишите следующий код в этом файле —

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

Класс Test расширяет встроенный класс с именем CI_Controller . Этот класс необходимо расширять всякий раз, когда вы хотите создать свой собственный класс Controller.

Вызов контроллера

Вышеуказанный контроллер может быть вызван URI следующим образом:

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

Обратите внимание на слово « test » в указанном выше URI после index.php. Это указывает на имя класса контроллера. Поскольку мы дали имя контроллера « Test », мы пишем « test » после index.php. Имя класса должно начинаться с заглавной буквы, но нам нужно писать строчную букву, когда мы вызываем этот контроллер по 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."; 
      } 
   } 
?>

Мы можем выполнить вышеуказанный контроллер следующими тремя способами:

После посещения первого 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 () вызывает метод view и передает «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');

Где имя_модели — это название модели, которая будет загружена. После загрузки модели вы можете просто вызвать ее метод, как показано ниже.

$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 . Пользовательские помощники хранятся в каталоге application / helpers, а системные помощники хранятся в каталоге system / helpers . CodeIgniter будет искать сначала в вашем каталоге application / helpers . Если каталог не существует или указанный помощник не найден, CodeIgniter вместо этого заглянет в ваш глобальный каталог system / helpers / . Каждый помощник, будь то пользовательский или системный, должен быть загружен перед использованием.

SN Имя и описание помощника
1

Array Helper

Файл Array Helper содержит функции, помогающие работать с массивами.

2

CAPTCHA Helper

Файл CAPTCHA Helper содержит функции, которые помогают создавать изображения CAPTCHA.

3

Cookie Helper

Файл Cookie Helper содержит функции, помогающие работать с файлами cookie.

4

Date Helper

Файл Date Helper содержит функции, которые помогут вам работать с датами.

5

Справочник Помощник

Файл вспомогательного каталога содержит функции, помогающие работать с каталогами.

6

Скачать Helper

Download Helper позволяет загружать данные на рабочий стол.

7

Email Helper

Email Helper предоставляет некоторые вспомогательные функции для работы с электронной почтой. Для более надежного решения электронной почты см. Класс электронной почты CodeIgniter.

8

File Helper

Файл File Helper содержит функции, помогающие работать с файлами.

9

Форма Помощник

Файл Form Helper содержит функции, помогающие работать с формами.

10

HTML Helper

Файл HTML Helper содержит функции, помогающие работать с HTML.

11

Inflector Helper

Файл Inflector Helper содержит функции, которые позволяют вам изменять слова на множественное число, единственное число, регистр верблюдов и т. Д.

12

Language Helper

Файл Language Helper содержит функции, помогающие работать с языковыми файлами.

13

Помощник по номерам

Файл Number Helper содержит функции, которые помогут вам работать с числовыми данными.

14

Путь Помощник

Файл Path Helper содержит функции, которые позволяют вам работать с путями файлов на сервере.

15

Помощник по безопасности

Файл Security Helper содержит функции, связанные с безопасностью.

16

Smiley Helper

Файл Smiley Helper содержит функции, которые позволяют управлять смайликами (смайликами).

17

Струнный Помощник

Файл String Helper содержит функции, помогающие работать со строками.

18

Текстовый Помощник

Файл Text Helper содержит функции, помогающие работать с текстом.

19

Типография Помощник

Файл Typography Helper содержит функции, которые помогают форматировать текст семантически релевантными способами.

20

URL Helper

Файл URL Helper содержит функции, помогающие работать с URL.

21

XML Helper

Файл XML Helper содержит функции, помогающие работать с данными XML.

Array Helper

Файл Array Helper содержит функции, помогающие работать с массивами.

CAPTCHA Helper

Файл CAPTCHA Helper содержит функции, которые помогают создавать изображения CAPTCHA.

Cookie Helper

Файл Cookie Helper содержит функции, помогающие работать с файлами cookie.

Date Helper

Файл Date Helper содержит функции, которые помогут вам работать с датами.

Справочник Помощник

Файл вспомогательного каталога содержит функции, помогающие работать с каталогами.

Скачать Helper

Download Helper позволяет загружать данные на рабочий стол.

Email Helper

Email Helper предоставляет некоторые вспомогательные функции для работы с электронной почтой. Для более надежного решения электронной почты см. Класс электронной почты CodeIgniter.

File Helper

Файл File Helper содержит функции, помогающие работать с файлами.

Форма Помощник

Файл Form Helper содержит функции, помогающие работать с формами.

HTML Helper

Файл HTML Helper содержит функции, помогающие работать с HTML.

Inflector Helper

Файл Inflector Helper содержит функции, которые позволяют вам изменять слова на множественное число, единственное число, регистр верблюдов и т. Д.

Language Helper

Файл Language Helper содержит функции, помогающие работать с языковыми файлами.

Помощник по номерам

Файл Number Helper содержит функции, которые помогут вам работать с числовыми данными.

Путь Помощник

Файл Path Helper содержит функции, которые позволяют вам работать с путями файлов на сервере.

Помощник по безопасности

Файл Security Helper содержит функции, связанные с безопасностью.

Smiley Helper

Файл Smiley Helper содержит функции, которые позволяют управлять смайликами (смайликами).

Струнный Помощник

Файл String Helper содержит функции, помогающие работать со строками.

Текстовый Помощник

Файл Text Helper содержит функции, помогающие работать с текстом.

Типография Помощник

Файл Typography Helper содержит функции, которые помогают форматировать текст семантически релевантными способами.

URL Helper

Файл URL Helper содержит функции, помогающие работать с URL.

XML Helper

Файл XML Helper содержит функции, помогающие работать с данными XML.

Загрузка помощника

Помощник может быть загружен, как показано ниже —

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

Где имя это имя помощника. Например, если вы хотите загрузить URL Helper, его можно загрузить как —

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

маршрутизация

CodeIgniter имеет удобную систему маршрутизации URI, так что вы можете легко перенаправить URL. Как правило, существует взаимно-однозначное отношение между строкой URL и соответствующим классом / методом контроллера. Сегменты в URI обычно следуют этому шаблону —

your-domain.com/class/method/id/
  • Первый сегмент представляет класс контроллера, который должен быть вызван.

  • Второй сегмент представляет функцию класса или метод, который должен быть вызван.

  • Третий и любые дополнительные сегменты представляют идентификатор и любые переменные, которые будут переданы в контроллер.

Первый сегмент представляет класс контроллера, который должен быть вызван.

Второй сегмент представляет функцию класса или метод, который должен быть вызван.

Третий и любые дополнительные сегменты представляют идентификатор и любые переменные, которые будут переданы в контроллер.

В некоторых ситуациях вы можете изменить этот механизм маршрутизации по умолчанию. CodeIgniter предоставляет средство, с помощью которого вы можете установить свои собственные правила маршрутизации.

Настройте правила маршрутизации

Существует определенный файл, где вы можете обрабатывать все это. Файл находится по адресу application / config / rout.php. Вы найдете массив $ route, в котором вы можете настроить свои правила маршрутизации. Ключ в массиве $ route решит, что направлять, а значение — куда направить. В CodeIgniter есть три зарезервированных маршрута.

SN Зарезервированные маршруты и описание
1

$ маршрут [ ‘default_controller’]

Этот маршрут указывает, какой класс контроллера должен быть загружен, если URI не содержит данных, что будет иметь место, когда люди загружают ваш корневой URL. Рекомендуется использовать маршрут по умолчанию, в противном случае по умолчанию появится страница 404. Здесь мы можем установить домашнюю страницу сайта, чтобы она загружалась по умолчанию.

2

$ маршрут [ ‘404_override’]

Этот маршрут указывает, какой класс контроллера должен быть загружен, если запрошенный контроллер не найден. Это переопределит страницу ошибки 404 по умолчанию. Это не повлияет на функцию show_404 () , которая продолжит загрузку файла error_404.php по умолчанию в application / views / errors / error_404.php .

3

$ маршрутные [ »] translate_uri_dashes

Как видно из логического значения, это не совсем маршрут. Эта опция позволяет вам автоматически заменять тире (‘-‘) на подчеркивания в сегментах URI контроллера и метода, тем самым сохраняя дополнительные записи маршрута, если вам нужно это сделать. Это необходимо, потому что дефис не является допустимым символом класса или имени метода и вызовет фатальную ошибку, если вы попытаетесь его использовать.

$ маршрут [ ‘default_controller’]

Этот маршрут указывает, какой класс контроллера должен быть загружен, если URI не содержит данных, что будет иметь место, когда люди загружают ваш корневой URL. Рекомендуется использовать маршрут по умолчанию, в противном случае по умолчанию появится страница 404. Здесь мы можем установить домашнюю страницу сайта, чтобы она загружалась по умолчанию.

$ маршрут [ ‘404_override’]

Этот маршрут указывает, какой класс контроллера должен быть загружен, если запрошенный контроллер не найден. Это переопределит страницу ошибки 404 по умолчанию. Это не повлияет на функцию show_404 () , которая продолжит загрузку файла error_404.php по умолчанию в application / views / errors / error_404.php .

$ маршрутные [ »] translate_uri_dashes

Как видно из логического значения, это не совсем маршрут. Эта опция позволяет вам автоматически заменять тире (‘-‘) на подчеркивания в сегментах URI контроллера и метода, тем самым сохраняя дополнительные записи маршрута, если вам нужно это сделать. Это необходимо, потому что дефис не является допустимым символом класса или имени метода и вызовет фатальную ошибку, если вы попытаетесь его использовать.

Маршруты можно настраивать с помощью подстановочных знаков или с помощью регулярных выражений, но имейте в виду, что эти настраиваемые правила для маршрутизации должны следовать за зарезервированными правилами.

Wildcards

Мы можем использовать два символа подстановки, как описано ниже —

  • (: num) — будет соответствовать сегменту, содержащему только цифры.

  • (: любой) — будет соответствовать сегменту, содержащему любой символ.

(: num) — будет соответствовать сегменту, содержащему только цифры.

(: любой) — будет соответствовать сегменту, содержащему любой символ.

пример

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

В приведенном выше примере, если буквальное слово «product» найдено в первом сегменте URL, а число найдено во втором сегменте, вместо него используются класс «catalog» и метод «product_lookup».

Регулярные выражения

Как и подстановочные знаки, мы также можем использовать регулярные выражения в ключевой части массива $ route . Если какой-либо URI совпадает с регулярным выражением, он будет перенаправлен на часть значения, заданную в массиве $ route.

пример

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

В приведенном выше примере URI, аналогичный products / shoes / 123, вместо этого вызовет класс контроллера « shoes » и метод « id_123 ».

CodeIgniter — Конфигурация

После настройки сайта следующая вещь, которую мы должны сделать, это настроить сайт. Папка 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.

  • имя хоста — укажите здесь местоположение вашей базы данных, например, localhost или IP-адрес

  • username — Укажите здесь имя пользователя вашей базы данных.

  • пароль — Установите пароль вашей базы данных здесь.

  • база данных — здесь задайте имя базы данных.

  • dbdriver — устанавливает тип базы данных, которую вы используете, например, MySQL, MySQLi, Postgre SQL, ODBC и MS SQL.

имя хоста — укажите здесь местоположение вашей базы данных, например, localhost или IP-адрес

username — Укажите здесь имя пользователя вашей базы данных.

пароль — Установите пароль вашей базы данных здесь.

база данных — здесь задайте имя базы данных.

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’; // Это установит среду по умолчанию

$ active_group = ‘test’; // Это установит тестовую среду

Конфигурация автозагрузки

Этот файл по умолчанию указывает, какие системы должны быть загружены. Чтобы максимально облегчить каркас, по умолчанию загружаются только абсолютные минимальные ресурсы. Следует часто загружать часто используемую систему, а не загружать ее на локальном уровне. Ниже приведены вещи, которые вы можете загрузить автоматически —

  • Библиотеки — это список библиотек, которые должны загружаться автоматически. Предоставьте список библиотек в массиве, как показано ниже, для автоматической загрузки CodeIgniter. В этом примере мы автоматически загружаем базы данных, электронную почту и библиотеки сессий.

Библиотеки — это список библиотек, которые должны загружаться автоматически. Предоставьте список библиотек в массиве, как показано ниже, для автоматической загрузки CodeIgniter. В этом примере мы автоматически загружаем базы данных, электронную почту и библиотеки сессий.

$autoload['libraries'] = array('database', 'email', 'session');
  • Драйверы. Эти классы находятся в каталоге system / library / или в вашем каталоге application / library /, но также находятся внутри своего собственного подкаталога и расширяют класс CI_Driver_Library. Они предлагают несколько сменных вариантов драйверов. Ниже приведен пример автозагрузки драйверов кеша.

Драйверы. Эти классы находятся в каталоге system / library / или в вашем каталоге application / library /, но также находятся внутри своего собственного подкаталога и расширяют класс CI_Driver_Library. Они предлагают несколько сменных вариантов драйверов. Ниже приведен пример автозагрузки драйверов кеша.

$autoload['drivers'] = array('cache');
  • Вспомогательные файлы — это список вспомогательных файлов, которые нужно загрузить автоматически. Предоставьте список библиотек в массиве, как показано ниже, для автоматической загрузки с помощью CodeIgniter. В данном примере мы автоматически загружаем URL и помощники по файлам.

Вспомогательные файлы — это список вспомогательных файлов, которые нужно загрузить автоматически. Предоставьте список библиотек в массиве, как показано ниже, для автоматической загрузки с помощью CodeIgniter. В данном примере мы автоматически загружаем URL и помощники по файлам.

$autoload['helper'] = array('url', 'file');
  • Файлы пользовательских настроек. Эти файлы предназначены для использования, только если вы создали файлы пользовательских настроек. В противном случае оставьте это поле пустым. Ниже приведен пример того, как автоматически загружать более одного файла конфигурации.

Файлы пользовательских настроек. Эти файлы предназначены для использования, только если вы создали файлы пользовательских настроек. В противном случае оставьте это поле пустым. Ниже приведен пример того, как автоматически загружать более одного файла конфигурации.

$autoload['config'] = array('config1', 'config2');
  • Языковые файлы — это список языковых файлов, которые должны загружаться автоматически. Посмотрите на пример, приведенный ниже. Предоставьте список языков в массиве, как показано ниже, для автоматической загрузки CodeIgniter. Имейте в виду, что не включайте часть _lang в ваш файл. Например, «codeigniter_lang.php» будет указываться как массив («codeigniter»);

Языковые файлы — это список языковых файлов, которые должны загружаться автоматически. Посмотрите на пример, приведенный ниже. Предоставьте список языков в массиве, как показано ниже, для автоматической загрузки CodeIgniter. Имейте в виду, что не включайте часть _lang в ваш файл. Например, «codeigniter_lang.php» будет указываться как массив («codeigniter»);

  • Модели — это файл списка моделей, который должен быть загружен автоматически. Предоставьте список моделей в массиве, как показано ниже, для автоматической загрузки с помощью CodeIgniter. Ниже приведен пример автоматической загрузки нескольких файлов моделей.

Модели — это файл списка моделей, который должен быть загружен автоматически. Предоставьте список моделей в массиве, как показано ниже, для автоматической загрузки с помощью CodeIgniter. Ниже приведен пример автоматической загрузки нескольких файлов моделей.

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

CodeIgniter — Работа с базой данных

Как и любой другой фреймворк, нам нужно очень часто взаимодействовать с базой данных, и CodeIgniter облегчает нам эту работу. Он предоставляет богатый набор функций для взаимодействия с базой данных.

В этом разделе мы поймем, как функции CRUD (создание, чтение, обновление, удаление) работают с CodeIgniter. Мы будем использовать таблицу исследований для выбора, обновления, удаления и вставки данных в таблицу исследований.

Название стола: шпилька
roll_no INT (11)
название VARCHAR (30)

Подключение к базе данных

Мы можем подключиться к базе данных двумя способами:

  • Автоматическое подключение. Автоматическое подключение можно выполнить с помощью файла application / config / autoload.php. Автоматическое подключение загрузит базу данных для каждой страницы. Нам просто нужно добавить библиотеку базы данных, как показано ниже —

Автоматическое подключение. Автоматическое подключение можно выполнить с помощью файла application / config / autoload.php. Автоматическое подключение загрузит базу данных для каждой страницы. Нам просто нужно добавить библиотеку базы данных, как показано ниже —

$autoload['libraries'] = array(‘database’);
  • Подключение вручную — если вы хотите подключиться к базе данных только для некоторых страниц, тогда мы можем перейти к подключению вручную. Мы можем подключиться к базе данных вручную, добавив следующую строку в любом классе.

Подключение вручную — если вы хотите подключиться к базе данных только для некоторых страниц, тогда мы можем перейти к подключению вручную. Мы можем подключиться к базе данных вручную, добавив следующую строку в любом классе.

$this->load->database();

Здесь мы не передаем никаких аргументов, потому что все установлено в файле конфигурации базы данных application / config / database.php

Вставка записи

Чтобы вставить запись в базу данных, используется функция insert (), как показано в следующей таблице:

Синтаксис

вставить ([ $ table = » [, $ set = NULL [, $ escape = NULL ]]])

параметры

  • $ table ( string ) — имя таблицы

  • $ set ( array ) — Ассоциативный массив пар поле / значение

  • $ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

ИСТИНА в случае успеха, ЛОЖЬ в случае неудачи

Тип возврата

BOOL

Синтаксис

параметры

$ table ( string ) — имя таблицы

$ set ( array ) — Ассоциативный массив пар поле / значение

$ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Тип возврата

В следующем примере показано, как вставить запись в таблицу стад . $ Data — это массив, в котором мы установили данные, и чтобы вставить эти данные в стержень таблицы, нам просто нужно передать этот массив функции вставки во втором аргументе.

$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->insert("stud", $data);

Обновление записи

Для обновления записи в базе данных используется функция update () вместе с функциями set () и where (), как показано в таблицах ниже. Функция set () установит данные для обновления.

Синтаксис

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

параметры

  • $ key ( mixed ) — имя поля или массив пар поле / значение

  • $ value ( string ) — Значение поля, если $ key — одно поле

  • $ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Экземпляр CI_DB_query_builder (цепочка методов)

Тип возврата

CI_DB_query_builder

Синтаксис

параметры

$ key ( mixed ) — имя поля или массив пар поле / значение

$ value ( string ) — Значение поля, если $ key — одно поле

$ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Тип возврата

Функция where () решает, какую запись обновить.

Синтаксис

где ( $ key [, $ value = NULL [, $ escape = NULL ]])

параметры

  • $ key ( mixed ) — Имя поля для сравнения или ассоциативный массив

  • $ value ( mixed ) — если один ключ, по сравнению с этим значением

  • $ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Экземпляр DB_query_builder

Тип возврата

объект

Синтаксис

параметры

$ key ( mixed ) — Имя поля для сравнения или ассоциативный массив

$ value ( mixed ) — если один ключ, по сравнению с этим значением

$ escape ( bool ) — экранировать ли значения и идентификаторы

Возвращает

Тип возврата

Наконец, функция update () обновит данные в базе данных.

Синтаксис

обновление ([ $ table = » [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

параметры

  • $ table ( string ) — имя таблицы

  • $ set ( array ) — Ассоциативный массив пар поле / значение

  • $ where ( string ) — предложение WHERE

  • $ limit ( int ) — Предложение LIMIT

Возвращает

ИСТИНА в случае успеха, ЛОЖЬ в случае неудачи

Тип возврата

BOOL

Синтаксис

параметры

$ table ( string ) — имя таблицы

$ set ( array ) — Ассоциативный массив пар поле / значение

$ where ( string ) — предложение WHERE

$ limit ( int ) — Предложение LIMIT

Возвращает

Тип возврата

$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->set($data); 
$this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Удаление записи

Чтобы удалить запись в базе данных, используется функция delete (), как показано в следующей таблице:

Синтаксис

delete ([ $ table = » [, $ where = » [, $ limit = NULL [, $ reset_data = TRUE ]]]])

параметры

  • $ table ( mixed ) — Таблица (и) для удаления; строка или массив

  • $ where ( string ) — предложение WHERE

  • $ limit ( int ) — Предложение LIMIT

  • $ reset_data ( bool ) — TRUE для сброса предложения «write» запроса

Возвращает

Экземпляр CI_DB_query_builder (объединение методов) или FALSE при ошибке

Тип возврата

смешанный

Синтаксис

параметры

$ table ( mixed ) — Таблица (и) для удаления; строка или массив

$ where ( string ) — предложение WHERE

$ limit ( int ) — Предложение LIMIT

$ reset_data ( bool ) — TRUE для сброса предложения «write» запроса

Возвращает

Тип возврата

Используйте следующий код, чтобы удалить запись в таблице стад . Первый аргумент указывает имя таблицы для удаления записи, а второй аргумент решает, какую запись удалить.

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

Выбор записи

Для выбора записи в базе данных используется функция get , как показано в следующей таблице:

Синтаксис

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

параметры

  • $ table ( string ) — таблица для запроса к массиву

  • $ limit ( int ) — Предложение LIMIT

  • $ offset ( int ) — Предложение OFFSET

Возвращает

Экземпляр CI_DB_result (объединение методов)

Тип возврата

CI_DB_result

Синтаксис

параметры

$ table ( string ) — таблица для запроса к массиву

$ limit ( int ) — Предложение LIMIT

$ offset ( int ) — Предложение OFFSET

Возвращает

Тип возврата

Используйте следующий код, чтобы получить все записи из базы данных. Первый оператор выбирает все записи из таблицы «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 / rout.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 — Библиотеки

Важной частью платформы CodeIgniter являются ее библиотеки. Он предоставляет богатый набор библиотек, которые косвенно увеличивают скорость разработки приложения. Системная библиотека находится в системе / библиотеки. Все, что нам нужно сделать, это загрузить библиотеку, которую мы хотим использовать. Библиотека может быть загружена, как показано ниже —

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

Где имя класса — это имя библиотеки, которую мы хотим загрузить. Если мы хотим загрузить несколько библиотек, тогда мы можем просто передать массив в качестве аргумента функции library (), как показано ниже —

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

Библиотечные классы

Классы библиотеки расположены в системе / библиотеки . Каждый класс имеет различные функции для упрощения развивающей работы. В следующей таблице приведены названия библиотечного класса и его описание.

SN Библиотечный класс и описание
1

Класс бенчмаркинга

Класс бенчмаркинга всегда активен, что позволяет рассчитать разницу во времени между любыми двумя отмеченными точками.

2

Класс кеширования

Этот класс будет кэшировать страницы, чтобы быстро получить доступ к скорости страницы.

3

Класс календаря

Используя этот класс, вы можете динамически создавать календари.

4

Класс корзины покупок

Используя этот класс, вы можете добавить или удалить товар из корзины. Элементы сохраняются в сеансе и остаются активными, пока пользователь не просматривает сайт.

5

Config Class

С помощью этого класса можно получить настройки конфигурации. Этот класс инициализируется автоматически.

6

Класс электронной почты

Этот класс предоставляет функции, связанные с электронной почтой, такие как отправка или ответ на электронную почту.

7

Класс шифрования

Этот класс обеспечивает двустороннее шифрование данных.

8

Класс загрузки файлов

Этот класс предоставляет функции, связанные с загрузкой файлов. Вы можете установить различные параметры, такие как тип загружаемого файла, размер файлов и т. Д.

9

Класс проверки формы

Этот класс предоставляет различные функции для проверки формы.

10

Класс FTP

Этот класс предоставляет различные функции, связанные с FTP, такие как передача файлов для удаления сервера, перемещение, переименование или удаление файлов на сервере.

11

Класс манипулирования изображениями

С помощью этого класса можно выполнять манипуляции с изображением, такие как изменение размера, создание миниатюр, обрезка, поворот, создание водяных знаков.

12

Входной класс

Этот класс предварительно обрабатывает входные данные по соображениям безопасности.

13

Языковой класс

Этот класс используется для интернационализации.

14

Класс погрузчика

Этот класс загружает такие элементы, как Просмотр файлов, Драйверы, Помощники, Модели и т. Д.

15

Класс миграций

Этот класс предоставляет функции, связанные с миграцией базы данных.

16

Выходной класс

Этот класс отправляет вывод в браузер, а также кэширует эту веб-страницу.

17

Класс пагинации

Этот класс добавляет функции пагинации на веб-страницу.

18

Шаблон Parser Class

Template Parser Class может выполнять простую подстановку текста для псевдопеременных, содержащихся в ваших файлах просмотра. Он может анализировать простые переменные или пары переменных тегов.

19

Класс безопасности

Этот класс содержит функции безопасности, такие как XSS Filtering, CSRF и т. Д.

20

Библиотека сессий

Этот класс предоставляет функциональные возможности для поддержки сеанса вашего приложения.

21

HTML таблица

Этот класс используется для автоматической генерации таблиц HTML из результатов массива или базы данных.

22

Trackback Class

Класс Trackback предоставляет функции, которые позволяют отправлять и получать данные Trackback.

23

Типография Класс

Типографский класс предоставляет методы, которые помогают форматировать текст.

24

Класс модульного тестирования

Этот класс предоставляет функциональные возможности для модульного тестирования вашего приложения и генерации результата.

25

Класс URI

Класс URI предоставляет методы, которые помогают вам получать информацию из ваших строк URI. Если вы используете URI-маршрутизацию, вы также можете получить информацию о перенаправленных сегментах.

26

Класс агента пользователя

Класс User Agent Class предоставляет функции, которые помогают идентифицировать информацию о браузере, мобильном устройстве или роботе, посещающем ваш сайт. Кроме того, вы можете получить информацию о реферере, а также информацию о языке и поддерживаемых наборах символов.

27

Классы серверов XML-RPC и XML-RPC

Классы CodeIgniter XML-RPC позволяют отправлять запросы на другой сервер или настраивать собственный XML-RPC-сервер для приема запросов.

28

Класс Zip-кодирования

Этот класс используется для создания zip-архивов ваших данных.

Класс бенчмаркинга

Класс бенчмаркинга всегда активен, что позволяет рассчитать разницу во времени между любыми двумя отмеченными точками.

Класс кеширования

Этот класс будет кэшировать страницы, чтобы быстро получить доступ к скорости страницы.

Класс календаря

Используя этот класс, вы можете динамически создавать календари.

Класс корзины покупок

Используя этот класс, вы можете добавить или удалить товар из корзины. Элементы сохраняются в сеансе и остаются активными, пока пользователь не просматривает сайт.

Config Class

С помощью этого класса можно получить настройки конфигурации. Этот класс инициализируется автоматически.

Класс электронной почты

Этот класс предоставляет функции, связанные с электронной почтой, такие как отправка или ответ на электронную почту.

Класс шифрования

Этот класс обеспечивает двустороннее шифрование данных.

Класс загрузки файлов

Этот класс предоставляет функции, связанные с загрузкой файлов. Вы можете установить различные параметры, такие как тип загружаемого файла, размер файлов и т. Д.

Класс проверки формы

Этот класс предоставляет различные функции для проверки формы.

Класс FTP

Этот класс предоставляет различные функции, связанные с FTP, такие как передача файлов для удаления сервера, перемещение, переименование или удаление файлов на сервере.

Класс манипулирования изображениями

С помощью этого класса можно выполнять манипуляции с изображением, такие как изменение размера, создание миниатюр, обрезка, поворот, создание водяных знаков.

Входной класс

Этот класс предварительно обрабатывает входные данные по соображениям безопасности.

Языковой класс

Этот класс используется для интернационализации.

Класс погрузчика

Этот класс загружает такие элементы, как Просмотр файлов, Драйверы, Помощники, Модели и т. Д.

Класс миграций

Этот класс предоставляет функции, связанные с миграцией базы данных.

Выходной класс

Этот класс отправляет вывод в браузер, а также кэширует эту веб-страницу.

Класс пагинации

Этот класс добавляет функции пагинации на веб-страницу.

Шаблон Parser Class

Template Parser Class может выполнять простую подстановку текста для псевдопеременных, содержащихся в ваших файлах просмотра. Он может анализировать простые переменные или пары переменных тегов.

Класс безопасности

Этот класс содержит функции безопасности, такие как XSS Filtering, CSRF и т. Д.

Библиотека сессий

Этот класс предоставляет функциональные возможности для поддержки сеанса вашего приложения.

HTML таблица

Этот класс используется для автоматической генерации таблиц HTML из результатов массива или базы данных.

Trackback Class

Класс Trackback предоставляет функции, которые позволяют отправлять и получать данные Trackback.

Типография Класс

Типографский класс предоставляет методы, которые помогают форматировать текст.

Класс модульного тестирования

Этот класс предоставляет функциональные возможности для модульного тестирования вашего приложения и генерации результата.

Класс URI

Класс URI предоставляет методы, которые помогают вам получать информацию из ваших строк URI. Если вы используете URI-маршрутизацию, вы также можете получить информацию о перенаправленных сегментах.

Класс агента пользователя

Класс User Agent Class предоставляет функции, которые помогают идентифицировать информацию о браузере, мобильном устройстве или роботе, посещающем ваш сайт. Кроме того, вы можете получить информацию о реферере, а также информацию о языке и поддерживаемых наборах символов.

Классы серверов XML-RPC и XML-RPC

Классы CodeIgniter XML-RPC позволяют отправлять запросы на другой сервер или настраивать собственный XML-RPC-сервер для приема запросов.

Класс Zip-кодирования

Этот класс используется для создания zip-архивов ваших данных.

Создание библиотек

CodeIgniter имеет богатый набор библиотек, которые вы можете найти в папке system / библиотеки, но CodeIgniter не только ограничен системными библиотеками, вы также можете создавать свои собственные библиотеки, которые можно хранить в папке application / library . Вы можете создавать библиотеки тремя способами.

  • Создать новую библиотеку
  • Расширить родную библиотеку
  • Заменить родную библиотеку

Создать новую библиотеку

При создании новой библиотеки следует учитывать следующее:

  • Имя файла должно начинаться с заглавной буквы, например, Mylibrary.php
  • Имя класса должно начинаться с заглавной буквы, например, класс Mylibrary
  • Имя класса и имя файла должны совпадать.

Mylibrary.php

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

Загрузка пользовательской библиотеки

Вышеприведенную библиотеку можно загрузить, просто выполнив следующую строку в вашем контроллере.

$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 , используйте код, как показано ниже. Сохраните ваше имя файла с помощью Email.php и присвойте имя класса CI_Email .

email.php

Class CI_Email { 
}

CodeIgniter — Обработка ошибок

Много раз, используя приложение, мы сталкиваемся с ошибками. Это очень раздражает пользователей, если ошибки не обрабатываются должным образом. CodeIgniter предоставляет простой механизм обработки ошибок.

Вы хотели бы, чтобы сообщения отображались, когда приложение находится в режиме разработки, а не в рабочем режиме, поскольку сообщения об ошибках можно легко устранить на этапе разработки.

Среду вашего приложения можно изменить, изменив приведенную ниже строку из файла index.php . Это может быть установлено на что угодно, но обычно для этой цели используются три значения (разработка, тестирование, производство).

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

Для разных сред требуются разные уровни сообщений об ошибках. По умолчанию в режиме разработки отображаются ошибки, а в режиме тестирования они скрываются. CodeIgniter предоставляет три функции, как показано ниже, для обработки ошибок.

  • Функция show_error () отображает ошибки в формате HTML в верхней части экрана.

Функция show_error () отображает ошибки в формате HTML в верхней части экрана.

Синтаксис

show_error ( $ message, $ status_code, $ heading = ‘Обнаружена ошибка’ )

параметры

  • $ message ( mixed ) — Сообщение об ошибке

  • $ status_code ( int ) — код статуса ответа HTTP

  • $ heading ( string ) — Ошибка заголовка страницы

Тип возврата

смешанный

Синтаксис

параметры

$ message ( mixed ) — Сообщение об ошибке

$ status_code ( int ) — код статуса ответа HTTP

$ heading ( string ) — Ошибка заголовка страницы

Тип возврата

  • Функция show_404 () отображает ошибку, если вы пытаетесь получить доступ к странице, которая не существует.

Функция show_404 () отображает ошибку, если вы пытаетесь получить доступ к странице, которая не существует.

Синтаксис

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

параметры

  • $ page ( string ) — строка URI

  • $ log_error ( bool ) — регистрировать ли ошибку

Тип возврата

недействительным

Синтаксис

параметры

$ page ( string ) — строка URI

$ log_error ( bool ) — регистрировать ли ошибку

Тип возврата

  • Функция log_message () используется для записи сообщений журнала. Это полезно, когда вы хотите написать пользовательские сообщения.

Функция log_message () используется для записи сообщений журнала. Это полезно, когда вы хотите написать пользовательские сообщения.

Синтаксис

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

параметры

  • $ level ( string ) — Уровень журнала: «ошибка», «отладка» или «информация»

  • $ message ( string ) — Сообщение для входа

  • $ php_error ( bool ) — регистрируем ли мы собственное сообщение об ошибке PHP

Тип возврата

недействительным

Синтаксис

параметры

$ level ( string ) — Уровень журнала: «ошибка», «отладка» или «информация»

$ message ( string ) — Сообщение для входа

$ php_error ( bool ) — регистрируем ли мы собственное сообщение об ошибке PHP

Тип возврата

Ведение журнала можно включить в файле 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;

Вы можете найти сообщения журнала в приложении / log / . Убедитесь, что этот каталог доступен для записи, прежде чем включать файлы журнала.

Различные шаблоны сообщений об ошибках можно найти в приложении / views / errors / cli или application / views / errors / html .

CodeIgniter — загрузка файлов

Используя класс File Uploading, мы можем загружать файлы, а также ограничивать тип и размер загружаемого файла. Выполните шаги, показанные в данном примере, чтобы понять процесс загрузки файла в 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 / rout.php и добавьте следующую строку в конец файла.

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

Теперь давайте выполним этот пример, посетив следующий URL в браузере. Замените yoursite.com своим URL.

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

Это произведет следующий экран —

Загрузить форму

После успешной загрузки файла вы увидите следующий экран —

успешно загружен

CodeIgniter — Отправка электронной почты

Отправка электронной почты в CodeIgniter намного проще. Вы также настраиваете параметры электронной почты в CodeIgniter. CodeIgniter предоставляет следующие функции для отправки электронных писем —

  • Несколько протоколов — почта, Sendmail и SMTP
  • Шифрование TLS и SSL для SMTP
  • Несколько получателей
  • ЦК и ОЦК
  • HTML или обычный текст электронной почты
  • Вложения
  • Перенос слов
  • приоритеты
  • Пакетный режим 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 ( string ) — отображаемое имя для адреса электронной почты для ответа

Экземпляр CI_Email (цепочка методов) CI_Email
2 к ( $ к )

$ to ( mixed ) — строка с разделителями-запятыми или массив адресов электронной почты

Экземпляр CI_Email (цепочка методов) CI_Email
3 куб. см ( $ куб. см )

$ cc ( mixed ) — строка с разделителями-запятыми или массив адресов электронной почты

Экземпляр CI_Email (цепочка методов) CI_Email
4 bcc ( $ bcc [, $ limit = » ])

$ bcc ( mixed ) — строка с разделителями-запятыми или массив адресов электронной почты

$ limit ( int ) — Максимальное количество сообщений электронной почты, отправляемых за пакет

Экземпляр CI_Email (цепочка методов) CI_Email
5 предмет ( $ subject )

$ subject ( строка ) — строка темы электронного письма

Экземпляр CI_Email (цепочка методов) CI_Email
6 сообщение ( $ body )

$ body ( string ) — тело сообщения электронной почты

Экземпляр CI_Email (цепочка методов) CI_Email
7 set_alt_message ( $ str )

$ str ( строка ) — альтернативное тело сообщения электронной почты

Экземпляр CI_Email (цепочка методов) CI_Email
8 set_header ( $ header, $ value )

$ header ( string ) — Имя заголовка

$ value ( string ) — значение заголовка

Экземпляр 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 attach ($ filename [, $ disposition = » [, $ newname = NULL [, $ mime = »]]])

$ filename ( string ) — Имя файла

$ disposition ( строка ) — ‘расположение’ вложения. Большинство почтовых клиентов принимают свое решение независимо от используемой здесь спецификации MIME. IANA

$ newname ( string ) — Пользовательское имя файла для использования в электронной почте

$ mime ( string ) — тип MIME для использования (полезно для буферизованных данных)

Экземпляр CI_Email (цепочка методов) CI_Email
12 attachment_cid ( $ filename )

$ filename ( string ) — существующее имя файла вложения

Вложение Content-ID или FALSE, если не найдено строка

$ from ( строка ) — адрес электронной почты «От»

$ name ( строка ) — отображаемое имя «От»

$ return_path ( строка ) — необязательный адрес электронной почты для перенаправления недоставленной электронной почты на

$ replyto ( строка ) — адрес электронной почты для ответов

$ name ( string ) — отображаемое имя для адреса электронной почты для ответа

$ to ( mixed ) — строка с разделителями-запятыми или массив адресов электронной почты

$ cc ( mixed ) — строка с разделителями-запятыми или массив адресов электронной почты

$ bcc ( mixed ) — строка с разделителями-запятыми или массив адресов электронной почты

$ limit ( int ) — Максимальное количество сообщений электронной почты, отправляемых за пакет

$ subject ( строка ) — строка темы электронного письма

$ body ( string ) — тело сообщения электронной почты

$ str ( строка ) — альтернативное тело сообщения электронной почты

$ header ( string ) — Имя заголовка

$ value ( string ) — значение заголовка

$ clear_attachments ( bool ) — очищать вложения или нет

$ auto_clear ( bool ) — автоматически очищать данные сообщения

$ filename ( string ) — Имя файла

$ disposition ( строка ) — ‘расположение’ вложения. Большинство почтовых клиентов принимают свое решение независимо от используемой здесь спецификации MIME. IANA

$ newname ( string ) — Пользовательское имя файла для использования в электронной почте

$ mime ( string ) — тип MIME для использования (полезно для буферизованных данных)

$ filename ( string ) — существующее имя файла вложения

Отправка электронной почты

Чтобы отправить электронное письмо с использованием CodeIgniter, сначала вы должны загрузить библиотеку электронной почты, используя следующее:

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

После загрузки библиотеки просто выполните следующие функции, чтобы установить необходимые элементы для отправки электронного письма. Функция from () используется для указания — откуда отправляется электронная почта и для функции () — кому отправляется электронная почта. Функция subject () и message () используется для установки темы и сообщения электронной почты.

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
 
$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 = "your@example.com"; 
         $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>

Внесите изменения в файл rout.php в application / config / rout.php и добавьте следующую строку в конец файла.

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

Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com на URL вашего сайта.

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

CodeIgniter — Проверка формы

Валидация является важным процессом при создании веб-приложения. Это гарантирует, что данные, которые мы получаем, являются правильными и действительными для хранения или обработки. 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>

Создайте файл представления formuccess.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 / rout.php .

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

Давайте выполним этот пример, посетив следующий URL в браузере. Этот URL может отличаться в зависимости от вашего сайта.

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

Это произведет следующий экран —

Форма проверки

Мы добавили валидацию в контроллере — поле « Имя обязательно» перед отправкой формы. Итак, если вы нажмете кнопку отправки, не вводя ничего в поле имени, вам будет предложено ввести имя перед отправкой, как показано на экране ниже.

Не подтверждено успешно

После успешного ввода имени вы будете перенаправлены на экран, как показано ниже.

Подтверждено успешно

В приведенном выше примере мы использовали обязательную настройку правила. В CodeIgniter доступно множество правил, которые описаны ниже.

Ссылка на правило валидации

Ниже приведен список всех собственных правил, доступных для использования:

правило параметр Описание пример

требуется

нет Возвращает FALSE, если элемент формы пуст.

Матчи

да Возвращает FALSE, если элемент формы не совпадает с элементом в параметре. матчей [form_item]

алгоритма regex_match

да Возвращает FALSE, если элемент формы не соответствует регулярному выражению. Использование алгоритма regex_match [/ регулярное выражение /]

отличается

да Возвращает FALSE, если элемент формы не отличается от элемента в параметре. отличается [form_item]

is_unique

да Возвращает FALSE, если элемент формы не уникален для таблицы и имени поля в параметре. Примечание. Это правило требует, чтобы Query Builder был включен для работы. is_unique [table.field]

min_length

да Возвращает FALSE, если элемент формы короче значения параметра. min_length [3]

максимальная длина

да Возвращает FALSE, если элемент формы длиннее значения параметра. max_length [12]

exact_length

да Возвращает FALSE, если элемент формы не является точно значением параметра. exact_length [8]

лучше чем

да Возвращает FALSE, если элемент формы меньше или равен значению параметра или не числовой. greater_than [8]

greater_than_equal_to

да Возвращает FALSE, если элемент формы меньше значения параметра или не числовой. greater_than_equal_to [8]

меньше, чем

да Возвращает FALSE, если элемент формы больше или равен значению параметра или не числовой. less_than [8]

less_than_equal_to

да Возвращает FALSE, если элемент формы больше значения параметра или не числовой. less_than_equal_to [8]

in_list

да Возвращает FALSE, если элемент формы находится вне предопределенного списка. in_list [красный, синий, зеленый]

альфа

нет Возвращает FALSE, если элемент формы содержит что-либо кроме букв алфавита.

alpha_numeric

нет Возвращает FALSE, если элемент формы содержит что-либо кроме буквенно-цифровых символов.

alpha_numeric_spaces

нет Возвращает FALSE, если элемент формы содержит что-либо кроме буквенно-цифровых символов или пробелов. Следует использовать после обрезки, чтобы избежать пробелов в начале или конце

alpha_dash

нет Возвращает FALSE, если элемент формы содержит что-либо кроме буквенно-цифровых символов, подчеркиваний или тире.

числовой

нет Возвращает FALSE, если элемент формы содержит что-либо кроме числовых символов.

целое число

нет Возвращает FALSE, если элемент формы содержит что-либо кроме целого числа.

десятичный

нет Возвращает FALSE, если элемент формы содержит что-либо кроме десятичного числа.

is_natural

нет Возвращает FALSE, если элемент формы содержит что-либо кроме натурального числа — 0, 1, 2, 3 и т. Д.

is_natural_no_zero

нет Возвращает FALSE, если элемент формы содержит что-либо кроме натурального числа, но не ноль — 1, 2, 3 и т. Д.

valid_url

нет Возвращает FALSE, если элемент формы не содержит действительный URL.

правильный электронный адрес

нет Возвращает FALSE, если элемент формы не содержит действительный адрес электронной почты.

valid_emails

нет Возвращает FALSE, если какое-либо значение, указанное в списке через запятую, не является действительным адресом электронной почты.

valid_ip

нет Возвращает FALSE, если указанный IP-адрес недействителен. Принимает необязательный параметр «ipv4» или «ipv6» для указания формата IP.

valid_base64

нет Возвращает FALSE, если предоставленная строка содержит что-либо кроме допустимых символов Base64.

требуется

Матчи

алгоритма regex_match

отличается

is_unique

min_length

максимальная длина

exact_length

лучше чем

greater_than_equal_to

меньше, чем

less_than_equal_to

in_list

альфа

alpha_numeric

alpha_numeric_spaces

alpha_dash

числовой

целое число

десятичный

is_natural

is_natural_no_zero

valid_url

правильный электронный адрес

valid_emails

valid_ip

valid_base64

CodeIgniter — Управление сессиями

При создании веб-сайтов нам часто необходимо отслеживать активность и состояние пользователя, и для этого нам необходимо использовать сеанс . CodeIgniter имеет класс сеанса для этой цели.

Инициализация сессии

Данные сессий доступны по всему миру через сайт, но для использования этих данных нам сначала нужно инициализировать сессию. Мы можем сделать это, выполнив следующую строку в конструкторе.

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

После загрузки библиотеки сеансов вы можете просто использовать объект сеанса, как показано ниже.

$this->session

Добавить данные сеанса

В PHP мы просто используем массив $ _SESSION для установки любых данных в сеансе, как показано ниже.

$_SESSION[‘key’] = value;

Где ключ — это ключ массива, а значение присваивается справа от знака равенства.

То же самое можно сделать в CodeIgniter, как показано ниже.

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

Функция set_userdata () принимает два аргумента. Первый аргумент, some_name , является именем переменной сеанса, под которой будет храниться some_value .

Функция set_userdata () также поддерживает другой синтаксис, в котором вы можете передавать массив для хранения значений, как показано ниже.

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => 'johndoe@some-site.com', 
   '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>

Внесите изменения в файл rout.php в application / config / rout.php и добавьте следующую строку в конец файла.

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

Выполните приведенный выше пример, используя следующий адрес. Замените yoursite.com на URL вашего сайта.

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

CodeIgniter — Flashdata

При создании веб-приложения нам нужно хранить некоторые данные только один раз, а после этого мы хотим удалить эти данные. Например, для отображения некоторого сообщения об ошибке или информационного сообщения. В PHP мы должны делать это вручную, но CodeIgniter упростил эту задачу для нас. В CodeIgniter flashdata будет доступна только до следующего запроса и будет автоматически удалена.

Добавить Flashdata

Мы можем просто хранить флэш-данные, как показано ниже.

$this->session->mark_as_flash('item');
  • Для этого используется функция mark_as_flash () , которая принимает только один аргумент значения, подлежащего сохранению. Мы также можем передать массив для хранения нескольких значений.

  • Также можно использовать функцию set_flashdata () , которая принимает два аргумента, имя и значение, как показано ниже. Мы также можем передать массив.

Для этого используется функция 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>

Внесите изменения в файл rout.php в application / config / rout.php и добавьте следующую строку в конец файла.

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

Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com на URL вашего сайта.

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

После посещения вышеуказанного URL вы увидите экран, показанный ниже.

Flash-данные

Нажмите на ссылку « Нажмите здесь », и вы увидите экран, как показано ниже. Здесь, на этом экране вы увидите значение переменной данных флэш-памяти. Обновите страницу еще раз, и вы увидите экран, подобный приведенному выше, и переменная flash-данных будет автоматически удалена.

Добавить данные Flash

CodeIgniter — Tempdata

В некоторых ситуациях, когда вы хотите удалить данные, сохраненные в сеансе после определенного периода времени, это можно сделать с помощью функции временных данных в CodeIgniter.

Добавить Tempdata

Чтобы добавить данные в качестве временных данных, мы должны использовать функцию mark_as_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 () . Эта функция гарантирует, что вы получаете только временные данные, а не какие-либо другие данные. Посмотрите на приведенный ниже пример, чтобы узнать, как получить временные данные. Функция tempdata () будет принимать один аргумент элемента для выборки.

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

Если вы пропустите аргумент, вы можете получить все существующие временные данные.

Удалить Tempdata

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>

Внесите изменения в файл rout.php в application / config / rout.php и добавьте следующую строку в конец файла.

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

Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com на URL вашего сайта.

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

После посещения вышеуказанного URL вы увидите экран, показанный ниже.

TempData

Нажмите на ссылку «Нажмите здесь», и вы увидите экран, как показано ниже.

Здесь, на этом экране вы увидите значение переменной данных temp. Обновите ту же страницу через пять секунд снова, так как мы установили временные данные на пять секунд, и вы увидите экран, подобный приведенному выше, и переменная временных данных будет автоматически удалена через пять секунд. Если вы обновите ту же страницу раньше, чем через 5 секунд, временные данные не будут удалены, так как период времени не истек.

Добавить временные данные

Уничтожение сессии

В PHP мы используем функцию session_destroy () для уничтожения сессии, а в CodeIgniter мы можем уничтожить функцию, как показано ниже.

$this->session->sess_destroy();

После вызова этой функции все данные сеанса, включая flashdata и tempdata, будут удалены навсегда и не могут быть восстановлены обратно.

CodeIgniter — Управление Cookie

Cookie — это небольшой фрагмент данных, отправляемый с веб-сервера для хранения на компьютере клиента. У CodeIgniter есть один помощник, называемый Cookie Helper, для управления файлами cookie.

Синтаксис

set_cookie ( $ name [, $ value = » [, $ expire = » [, $ domain = » [, $ path = ‘/’ [, $ prefix = » [, $ secure = FALSE [, $ httponly] = ЛОЖЬ ]]]]]]]])

параметры

  • $ name ( mixed ) — имя файла cookie или ассоциативный массив всех параметров, доступных для этой функции

  • $ value ( string ) — значение cookie

  • $ expire ( int ) — количество секунд до истечения срока

  • $ domain ( string ) — Домен cookie (обычно: .yourdomain.com)

  • $ path ( string ) — путь к cookie

  • $ prefix ( string ) — префикс имени файла cookie

  • $ secure ( bool ) — отправлять ли cookie только через HTTPS

  • $ httponly ( bool ) — скрывать ли cookie от JavaScript

Тип возврата

недействительным

Синтаксис

параметры

$ name ( mixed ) — имя файла cookie или ассоциативный массив всех параметров, доступных для этой функции

$ value ( string ) — значение cookie

$ expire ( int ) — количество секунд до истечения срока

$ domain ( string ) — Домен cookie (обычно: .yourdomain.com)

$ path ( string ) — путь к cookie

$ prefix ( string ) — префикс имени файла cookie

$ secure ( bool ) — отправлять ли cookie только через HTTPS

$ httponly ( bool ) — скрывать ли cookie от JavaScript

Тип возврата

В функции set_cookie () мы можем передать все значения двумя способами. Во-первых, только массив может быть передан, а во-вторых, отдельные параметры также могут быть переданы.

Синтаксис

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

параметры

  • $ index ( string ) — имя файла cookie

  • $ xss_clean ( bool ) — применять ли XSS-фильтрацию к возвращаемому значению

Вернуть

Значение cookie или NULL, если не найдено

Тип возврата

смешанный

Синтаксис

параметры

$ index ( string ) — имя файла cookie

$ xss_clean ( bool ) — применять ли XSS-фильтрацию к возвращаемому значению

Вернуть

Тип возврата

Функция get_cookie () используется для получения файла cookie, установленного с помощью функции set_cookie ().

Синтаксис

delete_cookie ( $ name [, $ domain = » [, $ path = ‘/’ [, $ prefix = » ]]]]])

параметры

  • $ name ( string ) — имя файла cookie

  • $ domain ( string ) — Домен cookie (обычно: .yourdomain.com)

  • $ path ( string ) — путь к cookie

  • $ prefix ( string ) — префикс имени файла cookie

Тип возврата

недействительным

Синтаксис

параметры

$ name ( string ) — имя файла cookie

$ domain ( string ) — Домен cookie (обычно: .yourdomain.com)

$ path ( string ) — путь к cookie

$ prefix ( string ) — префикс имени файла cookie

Тип возврата

Функция 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>

Измените файл rout.php в application / config / rout.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

Он выдаст вывод, как показано на следующем снимке экрана.

cookie_management

CodeIgniter — Общие функции

Библиотечные функции и вспомогательные функции CodeIgniter должны быть инициализированы перед их использованием, но есть некоторые общие функции, которые не нужно инициализировать.

Эти общие функции и их описания приведены ниже.

Синтаксис is_php ( $ version )
параметры

$ version ( string ) — номер версии

Вернуть TRUE, если запущенная версия PHP, по крайней мере, указана, или FALSE, если нет
Тип возврата недействительным
Описание Определяет, превышает ли используемая версия PHP указанный номер версии.

$ version ( string ) — номер версии

Синтаксис is_really_writable ( $ file )
параметры

$ file ( string ) — Путь к файлу

Вернуть TRUE, если путь доступен для записи, FALSE, если нет
Тип возврата BOOL
Описание проверяет, доступен ли файл для записи или нет.

$ file ( string ) — Путь к файлу

Синтаксис config_item ( $ ключ )
параметры

$ key ( string ) — ключ элемента конфигурации

Вернуть Значение ключа конфигурации или NULL, если не найден
Тип возврата смешанный
Описание Эта функция используется для получения элемента конфигурации

$ key ( string ) — ключ элемента конфигурации

Синтаксис set_status_header ( $ code [, $ text = » ])
параметры

$ code ( int ) — код статуса ответа HTTP

$ text ( string ) — настраиваемое сообщение для установки с кодом состояния

Вернуть
Тип возврата недействительным
Описание Эта функция позволяет вам вручную установить заголовок состояния сервера.

$ code ( int ) — код статуса ответа HTTP

$ text ( string ) — настраиваемое сообщение для установки с кодом состояния

Синтаксис remove_invisible_characters ( $ str [, $ url_encoded = TRUE ])
параметры

$ str ( string ) — входная строка

$ url_encoded ( bool ) — нужно ли удалять также URL-кодированные символы

Вернуть Санированная строка
Тип возврата строка
Описание Эта функция предотвращает вставку символов NULL между символами ASCII

$ str ( string ) — входная строка

$ url_encoded ( bool ) — нужно ли удалять также URL-кодированные символы

Синтаксис html_escape ( $ var )
параметры

$ var ( mixed ) — переменная для экранирования (строка или массив)

Вернуть HTML экранированная строка (и)
Тип возврата смешанный
Описание Эта функция действует как встроенная функция PHP htmlspecialchars ().

$ var ( mixed ) — переменная для экранирования (строка или массив)

Синтаксис 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 )
параметры

$ function_name ( string ) — имя функции

Тип возврата BOOL
Описание Возвращает TRUE, если функция существует и может использоваться, иначе FALSE.

$ function_name ( string ) — имя функции

Ниже приведен пример, который демонстрирует все вышеперечисленные функции.

пример

Здесь мы создали только один контроллер, в котором мы будем использовать вышеуказанные функции. Скопируйте приведенный ниже код и сохраните его в 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"; 
      } 
		
   } 
?>

Измените файл rout.php в application / config / rout.php, чтобы добавить маршрут для вышеуказанного контроллера и добавить следующую строку в конце файла.

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

Введите следующий URL в адресную строку браузера, чтобы выполнить пример.

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

CodeIgniter — Кэширование страниц

Кэширование страницы улучшит скорость загрузки страницы. Если страница кэшируется, она будет сохранена в полностью отрендеренном состоянии. В следующий раз, когда сервер получит запрос на кэшированную страницу, он будет напрямую отправлен в запрошенный браузер.

Кэшированные файлы хранятся в папке application / cache . Кэширование может быть включено для каждой страницы. При включении кэша нам нужно установить время, до которого он должен оставаться в кэшированной папке, и по истечении этого периода он будет автоматически удален.

Включить кеширование

Кэширование можно включить, выполнив следующую строку в любом из методов контроллера.

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

Где $ n — это количество минут, вы хотите, чтобы страница оставалась в кэше между обновлениями.

Отключить кеширование

Файл кэша удаляется, когда истекает срок его действия, но когда вы хотите удалить его вручную, вам необходимо отключить его. Вы можете отключить кэширование, выполнив следующую строку.

// 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>

Измените файл rout.php в application / config / rout.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 — перенаправление страниц

При создании веб-приложения нам часто нужно перенаправить пользователя с одной страницы на другую. CodeIgniter облегчает нам эту работу. Для этого используется функция redirect () .

Синтаксис

редирект ( $ uri = », $ method = ‘auto’, $ code = NULL )

параметры

  • $ uri ( строка ) — строка URI

  • $ method ( string ) — метод перенаправления (‘auto’, ‘location’ или ‘refresh’)

  • $ code ( string ) — код ответа HTTP (обычно 302 или 303)

Тип возврата

недействительным

Синтаксис

параметры

$ uri ( строка ) — строка URI

$ method ( string ) — метод перенаправления (‘auto’, ‘location’ или ‘refresh’)

$ code ( string ) — код ответа HTTP (обычно 302 или 303)

Тип возврата

Первый аргумент может иметь два типа URI. Мы можем передать полный URL-адрес сайта или сегменты URI контроллеру, который вы хотите направить.

Второй необязательный параметр может иметь любое из трех значений: auto, location или refresh. По умолчанию это авто.

Третий необязательный параметр доступен только для перенаправлений местоположения и позволяет отправлять определенный код ответа 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'); 
      } 
		
   } 
?>

Измените файл rout.php в application / config / rout.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

CodeIgniter — Профилирование приложений

При создании веб-приложения мы очень заботимся о производительности веб-сайта с точки зрения того, сколько времени потребовалось контроллеру и как много памяти используется. Не только производительность, но мы также должны видеть понимание данных, таких как данные POST, данные запросов к базе данных, данные сеанса и т. Д. Для целей отладки при разработке какого-либо приложения. CodeIgniter упростил нам эту работу, профилировав приложение.

Включить профилирование

Чтобы включить профилирование вашего приложения, просто выполните приведенную ниже команду в любом из методов вашего контроллера.

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

Отчет о профилировании можно увидеть в нижней части страницы после его включения.

Отключить профилирование

Чтобы отключить профилирование вашего приложения, просто выполните приведенную ниже команду в любом из методов вашего контроллера.

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

Включить / отключить раздел профилировщика

Профилирование может быть сделано на основе раздела. Вы можете включить или отключить профилирование раздела, установив логическое значение TRUE или FALSE. Если вы хотите установить профилирование в приложении, вы можете сделать это в файле, расположенном в application / config / profiler.php

Например, следующая команда включит профилирование запросов для всего приложения.

$config['queries'] = TRUE;

В следующей таблице ключ является параметром, который можно установить в массиве конфигурации, чтобы включить или отключить определенный профиль.

ключ Описание По умолчанию

тесты

Истекшее время контрольных точек и общее время выполнения ПРАВДА

конфиг

Переменные CodeIgniterConfig ПРАВДА

controller_info

Запрошенный класс и метод Controller ПРАВДА

получить

Любые данные GET, переданные в запросе ПРАВДА

http_headers

Заголовки HTTP для текущего запроса ПРАВДА

использование памяти

Объем памяти, потребляемый текущим запросом, в байтах ПРАВДА

сообщение

Любые данные POST, переданные в запросе ПРАВДА

запросы

Список всех выполненных запросов к базе данных, включая время выполнения ПРАВДА

uri_string

URI текущего запроса ПРАВДА

session_data

Данные, хранящиеся в текущем сеансе ПРАВДА

query_toggle_count

Количество запросов, после которых блок запросов по умолчанию будет скрыт. 25

тесты

конфиг

controller_info

получить

http_headers

использование памяти

сообщение

запросы

uri_string

session_data

query_toggle_count

Профилировщик, установленный в файле в application / config / profiler.php, может быть переопределен с помощью функции set_profiler_sections () в контроллерах, как показано ниже.

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

CodeIgniter — Бенчмаркинг

Установка контрольных точек

Если вы хотите измерить время, необходимое для выполнения набора строк или использования памяти, вы можете рассчитать его с помощью контрольных точек в CodeIgniter. Для этого в CodeIgniter есть отдельный класс « Benchmarking ».

Этот класс загружается автоматически; Вы не должны загружать это. Он может использоваться в любом месте в вашем контроллере, представлении и модельных классах. Все, что вам нужно сделать, это отметить начальную и конечную точки, а затем выполнить функцию 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>

Измените файл rout.php в application / config / rout.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

CodeIgniter — Добавление JS & CSS

Добавить файл JavaScript и CSS (Cascading Style Sheet) в CodeIgniter очень просто. Вы должны создать папку JS и CSS в корневом каталоге и скопировать все файлы .js в папку JS и файлы .css в папку CSS, как показано на рисунке.

Добавление JS и 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'); 
}

Измените файл rout.php в application / config / rout.php, чтобы добавить маршрут для вышеуказанного контроллера и добавить следующую строку в конце файла.

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

Используйте следующий URL в браузере, чтобы выполнить приведенный выше пример.

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

CodeIgniter — Интернационализация

Языковой класс в CodeIgniter предоставляет простой способ поддержки нескольких языков для интернационализации. В некоторой степени мы можем использовать разные языковые файлы для отображения текста на разных языках.

Мы можем поместить разные языковые файлы в каталог application / language. Файлы системных языков можно найти в каталоге system / language, но чтобы добавить свой собственный язык в свое приложение, вы должны создать отдельную папку для каждого языка в каталоге application / language.

Создание файлов Язык

Чтобы создать языковой файл, вы должны завершить его _lang.php . Например, вы хотите создать языковой файл для французского языка, затем вы должны сохранить его с помощью french_lang.php . В этом файле вы можете хранить все ваши языковые тексты в ключе, комбинации значений в массиве $ lang, как показано ниже.

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

Загрузка языкового файла

Чтобы использовать любой язык в вашем приложении, вы должны сначала загрузить файл этого конкретного языка, чтобы извлечь различные тексты, хранящиеся в этом файле. Вы можете использовать следующий код для загрузки языкового файла.

$this->lang->load('filename', 'language');
  • filename — это имя файла, который вы хотите загрузить. Не используйте здесь расширение файла, а только имя файла.

  • Язык — это язык, содержащий его.

filename — это имя файла, который вы хотите загрузить. Не используйте здесь расширение файла, а только имя файла.

Язык — это язык, содержащий его.

Выбор языка текста

Чтобы извлечь строку из языкового файла, просто выполните следующий код.

$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_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.";
?>

Измените файл rout.php в application / config / rout.php, чтобы добавить маршрут для вышеуказанного контроллера и добавить следующую строку в конце файла.

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

Выполните следующий URL в браузере, чтобы выполнить приведенный выше пример.

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

Он выдаст вывод, как показано на следующем снимке экрана. Если вы измените язык в раскрывающемся списке, язык предложения, написанного под раскрывающимся списком, также изменится соответствующим образом.

Пример интернационализации

CodeIgniter — Безопасность

XSS Prevention

XSS означает межсайтовый скриптинг. CodeIgniter поставляется с безопасностью фильтрации XSS. Этот фильтр предотвратит любой вредоносный код JavaScript или любой другой код, который пытается захватить куки и совершать вредоносные действия. Чтобы отфильтровать данные через фильтр XSS, используйте метод xss_clean (), как показано ниже.

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

Эту функцию следует использовать только при отправке данных. Необязательный второй логический параметр также можно использовать для проверки файла изображения на предмет атаки XSS. Это полезно для загрузки файлов. Если его значение истинно, значит, изображение безопасно, а не иначе.

Предотвращение SQL-инъекций

SQL-инъекция — это атака на запрос к базе данных. В PHP мы используем функцию mysql_real_escape_string (), чтобы предотвратить это, наряду с другими методами, но CodeIgniter предоставляет встроенные функции и библиотеки для предотвращения этого.

Мы можем предотвратить SQL-инъекцию в CodeIgniter следующими тремя способами:

  • Побег Запросы
  • Query Biding
  • Active Record Class

Побег Запросы

<?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 () автоматически добавляет одинарные кавычки вокруг данных и определяет тип данных, так что она может экранировать только строковые данные.

Query Biding

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

В приведенном выше примере знак вопроса (?) Будет заменен массивом во втором параметре функции query (). Основным преимуществом построения запроса таким образом является то, что значения автоматически экранируются, что создает безопасные запросы. Движок CodeIgniter делает это автоматически, поэтому вам не нужно это запоминать.

Active Record Class

<?php
   $this->db->get_where('subscribers_tbl',array
      ('status'=> active','email' => 'info@arjun.net.in'));
?>

Используя активные записи, синтаксис запроса генерируется каждым адаптером базы данных. Это также позволяет более безопасные запросы, так как значения экранируются автоматически.

Скрытие ошибок PHP

В производственной среде мы часто не хотим отображать какие-либо сообщения об ошибках для пользователей. Хорошо, если он включен в среде разработки для целей отладки. Эти сообщения об ошибках могут содержать некоторую информацию, которую мы не должны показывать пользователям сайта по соображениям безопасности.

Есть три файла CodeIgniter, связанных с ошибками.

Уровень отчетов об ошибках PHP

Различная среда требует разных уровней сообщений об ошибках. По умолчанию при разработке будут отображаться ошибки, но тестирование и вживую будут их скрывать. В корневой директории CodeIgniter есть файл index.php , который используется для этой цели. Если мы передадим ноль в качестве аргумента функции 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.

НЕ отображать и не отправлять пароль в текстовом формате.

НЕ устанавливайте ненужные ограничения на пароли ваших пользователей.