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


