Сейчас на сайте

Сейчас 4 гостей онлайн

Поиск

Tag Cloud

Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Проверка п... Создание и ... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Fckeditor в при... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...

CodeIgniter: форма, проверка ввода пользователя и база данных PDF Печать E-mail
Автор: Administrator   
15.02.2012 15:49

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

1.       В начале настроим файлы конфигурации нашего приложения:

Первым будет файл настройки соединения с базой данных

 application/config/database.php

$db['default']['hostname'] = 'localhost';

$db['default']['username'] = 'mydbuser';

$db['default']['password'] = 'mypwd';

$db['default']['database'] = 'ci_sample';

$db['default']['dbdriver'] = 'mysql';

$db['default']['dbprefix'] = '';

$db['default']['pconnect'] = TRUE;

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

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

$db['default']['cachedir'] = '';

$db['default']['char_set'] = 'utf8';

$db['default']['dbcollat'] = 'utf8_general_ci';

$db['default']['swap_pre'] = '';

$db['default']['autoinit'] = TRUE;

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

Вторым файл application/config/config.php, где редактируем такую настройку как базовый арес приложения:

$config['base_url']         = 'http://loсalhost/ci_sample';

Третий файл, application/config/autoload.phpподключение необходимых библиотек и модулей для работы с формами, базой данных, URL, валидации ввода:

$autoload['libraries'] = array('database', 'form_validation');

$autoload['helper'] = array('url', 'form');

Обычно такого рода действия есть в каждом проекте с использованием CodeIgniterа.

 

2.       Данный проект представляет собой форму Feedback, связанную с базой данных. Вначале создадим базу данных и таблицу. Таблицу назовем «contacts», в ней будет таблица такого вида:

 

CREATE TABLE ` feedbacks` (

  `id` int(11) NOT NULL DEFAULT '0',

  `firstname` varchar(50) DEFAULT NULL,

  `lastname` varchar(60) DEFAULT NULL,

  `email` varchar(105) DEFAULT NULL,

  `phone` varchar(25) DEFAULT NULL,

  `message` text,

  `created_at` datetime DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

3.       Затем мы создаем модель для работы с базой данных. Этот класс будет вставлять полученные данные в таблицу базы данных. Для этого мы создаем там метод insert_entry($data):

 

class Form extends CI_Model {

 

    function __construct()

    {

        parent::__construct();

    }

 

    function insert_entry($data)

    {

      if($this->db->insert('feedbacks', $data))

        {

         return TRUE;

         }

         return FALSE;

     }

}

 

4.       Далее редактируем файл роутера, чтобы по умолчанию показывался наш новый контроллер Feedback. Это файл находиться - application/config/routes.php

      $route['default_controller'] = "feedback";

5.       Теперь мы создаем новый контроллер Feedback. Метод index будет отображать форму для ввода данных. В конструктор класса загружаем класс модели Form: 

 

  class  Feedback extends CI_Controller {

 

    public function __construct()

       {

            parent::__construct();

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

       }

 

                 function index()

                {

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

                }

 

6.       Теперь нам нужно написать форму для отправки сообщения. Мы используем здесь helper CodeIgniterа для работы с формами.Он эмулирует HTML теги формы сообщений. Файл шаблона будет стандрантным - имя,фамилия, e-mail. телефон.


В начале формы необходимо указать путь к методу класса, который будет обрабатывать запрос

'feedback/send_feedback'

Кроме того, мы ставим в данной форме и обработчики сообщений об ошибках, например,

echo form_error('first_name')

 

7.       Нам нужен еще один шаблон, который будет показывать, что сообщение успешно отправлено. Он очень простой, чисто информативный:


Your message was sent well!

echo $message;


 

8.       И на конец, главный метод данного приложений – send_feedback(), который собственно обрабатывает форму отправки сообщения:

 

               

   function send_feedback () {

 

                $this->form_validation->set_rules('first_name', 'First Name', 'trim|xss_clean|required|min_length[4]|max_length[20]');

                $this->form_validation->set_rules('last_name', 'Last Name', 'trim|xss_clean|required|min_length[4]|max_length[25]');

                               $this->form_validation->set_rules('email', 'E-mail', 'trim|xss_clean|required|valid_email');

                               $this->form_validation->set_rules('phone', 'Phone', 'trim|required|matches_pattern[(###) ###-####]');

                    $this->form_validation->set_rules('message', 'Message', 'trim|xss_clean|required');

               

                              

                               if($this->form_validation->run() == FALSE)

                               {

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

                               }

                               else

                               {

                                               $data['first_name'] = $this->input->post('first_name');

                                               $data['last_name'] = $this->input->post('last_name');

                                               $data['email'] = $this->input->post('email');

                                               $data['phone'] = $this->input->post('phone');

                                               $data['message'] = $this->input->post('message');

                                            $data['date']  = time();

                                              

                                               if($this->form->insert_entry($data) === TRUE)

                                               {

                                                               $data['message'] = "Your feedback was sent ok";

                                                               $this->load->view('success_view', $data);

                                               }

                              

                               }

 

   }

 

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

$this->form_validation->set_rules('first_name', 'First Name', 'trim|xss_clean|required|min_length[4]|max_length[20]');

 видим, что поле формы устанавливается как обязательное к заполнению, сам ввод очищается и защищается от XCC скриптов, устанавливается минимальная и максимальная длина для текста. И это всего 1 строка кода. Также проверяется правильность формата e-mail и телефона. Затем, запускается проверка формы. Если она не прошла удачно, то отображается вновь сама форма с сообщениями об ошибках. А если же  проверка успешна, то данные помещаются в нашу таблицу базы данных с помощью вызова метода модели Form insert_entry($data) и отображается шаблон с сообщением  об этом.

                                            if($this->form->insert_entry($data) === TRUE)

                                               {

                                                               $data['message'] = "Your feedback was sent ok";

                                                               $this->load->view('success_view', $data);

                                               }

 

Это все. Далее окончательный код класса контроллера Feedback:

 

 

class  Feedback extends CI_Controller {

 

 

    public function __construct()

       {

            parent::__construct();

 

            $this->load->model('form', TRUE);

       }

 

                 function index()

                {

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

               

                              

                }

               

               

   function send_feedback () {

 

                $this->form_validation->set_rules('first_name', 'First Name', 'trim|xss_clean|required|min_length[4]|max_length[20]');

                $this->form_validation->set_rules('last_name', 'Last Name', 'trim|xss_clean|required|min_length[4]|max_length[25]');

                               $this->form_validation->set_rules('email', 'E-mail', 'trim|xss_clean|required|valid_email');

                               $this->form_validation->set_rules('phone', 'Phone', 'trim|required|matches_pattern[(###) ###-####]');

                    $this->form_validation->set_rules('message', 'Message', 'trim|xss_clean|required');

               

                              

                               if($this->form_validation->run() == FALSE)

                               {

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

                               }

                               else

                               {

                                               $data['first_name'] = $this->input->post('first_name');

                                               $data['last_name'] = $this->input->post('last_name');

                                               $data['email'] = $this->input->post('email');

                                               $data['phone'] = $this->input->post('phone');

                                               $data['message'] = $this->input->post('message');

            $data['date']  = time();

                                              

                                               if($this->form->insert_entry($data) === TRUE)

                                               {

                                                               $data['message'] = "Your feedback was sent ok";

                                                               $this->load->view('success_view', $data);

                                               }

                              

                               }

 

   }

               

}

0
Обновлено 15.02.2012 16:33
 

Добавить комментарий


Защитный код
Обновить