Codeigniter 3.x Вход с подтверждением формы – Пластина

Я читал здесь пару вопросов от разных новичков о входе и проверке в кодеигниторе, некоторые из них имеют смешанный JavaScript и J-запрос. Codeigniter сам обеспечивает надежную проверку формы наряду с поддержкой пользовательских настроек ошибок. Я решил поделиться с вами самым простым способом запускать в codeigniter с помощью шаблона входа, который я создал, и я поделился им с вами. В нем есть

Вход для контроллера

Модель : Login_model

Просмотры : Вход и успех

И основные конфигурации

Шаг 1

Скачать Codeigniter 3.x с официального сайта

Шаг 2

Извлеките папку в свой корень localhost. (htdocs в xampp и www в wamp)

Шаг 3. конфигурация

Откройте папку, в которой вы извлекли код, и перейдите в приложение-> config-> autoload.php. Перейдите к строке 55 и выполните автозагрузку этих двух библиотек.

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

Перейдите к строке 67 и загрузите двух помощников

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

Сохраните файл и перейдите в приложение-> config-> config.php

Установите базовый URL-адрес в строке 19 как

 $config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/folder_name/'; 

В строке 31 удалите index.php из значения и измените его на

 $config['index_page'] = ''; 

в строке 49 установите uri_protocol с AUTO на REQUEST_URI

 $config['uri_protocol'] = 'REQUEST_URI'; 

в строке 229 установите ключ шифрования

 $config['encryption_key'] = '!@#$%^&*()ASDFGHJKL:ZXCVBNM<>QWERTYUIOP'; // I recommend you create a hash and place it here 

Сохранить файл

Шаг 4 .htaccess

В корне папки установки codeigniter создайте файл .htaccess, напишите в нем и сохраните

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 

Шаг 5. Создать базу данных

Откройте phpmyadmin или терминал mysql, создайте базу данных, создайте в ней пользователей таблиц, вы можете использовать следующий запрос

 CREATE TABLE `users` ( `id` int(11) NOT NULL, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `fullname` varchar(50) NOT NULL, `status` enum('pending','approved') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Шаг -6. Подключение базы данных к Codeigniter

Перейдите в application-> config-> database.php. Предполагая, что она новая установка, и вы не создали каких-либо сред. Перейдите к строке 52 и измените четыре строки на

 $db['default']['username'] = 'username'; // will be root if you have xampp $db['default']['password'] = 'password'; // will be empty if you haven't set $db['default']['database'] = 'your_database_name'; $db['default']['dbdriver'] = 'mysqli'; // changed from mysql to mysqli 

Шаг 7. Вид

введите описание изображения здесь

Исходный код

Шаг 8. Контроллер

 class Login extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('Login_model'); $this->load->library('form_validation'); } public function index() { if($this->isLoggedin()){ redirect(base_url().'login/dashboard');} $data['title']='Login Boiler Plate'; if($_POST) { $config=array( array( 'field' => 'username', 'label' => 'Username', 'rules' => 'trim|required' ), array( 'field' => 'password', 'label' => 'Password', 'rules' => 'trim|required' ) ); $this->form_validation->set_rules($config); if ($this->form_validation->run() == false) { // if validation has errors, save those errors in variable and send it to view $data['errors'] = validation_errors(); $this->load->view('login',$data); } else { // if validation passes, check for user credentials from database $user = $this->Login_model->checkUser($_POST); if ($user) { // if an record of user is returned from model, save it in session and send user to dashboard $this->session->set_userdata($user); redirect(base_url() . 'Login/dashboard'); } else { // if nothing returns from model , show an error $data['errors'] = 'Sorry! The credentials you have provided are not correct'; $this->load->view('login',$data); } } } else { $this->load->view('login',$data); } } public function change_password() { if($this->isLoggedin()){ $data['title']='Change Password'; if($_POST) { $config=array( array( 'field' => 'old_password', 'label' => 'Old Password', 'rules' => 'trim|required|callback_checkPassword' ), array( 'field' => 'password', 'label' => 'Password', 'rules' => 'trim|required' ), array( 'field' => 'conf_password', 'label' => 'Confirm Password', 'rules' => 'trim|required|matches[password]' ) ); $this->form_validation->set_rules($config); if ($this->form_validation->run() == false) { // if validation has errors, save those errors in variable and send it to view $data['errors'] = validation_errors(); $this->load->view('change_password',$data); } else { // if validation passes, check for user credentials from database $this->Login_model->updatePassword($_POST['password'],$this->session->userdata['id']); $this->session->set_flashdata('log_success','Congratulations! Password Changed'); redirect(base_url() . 'Login/dashboard'); } } else { $this->load->view('change_password',$data); } } else { redirect(base_url().'Login'); } } public function dashboard() { if($this->isLoggedin()) { $data['title']='Welcome! You are logged in'; $this->load->view('success',$data); } else { redirect(base_url().'Login'); } } public function logout() { $this->session->sess_destroy(); redirect(base_url().'Login'); } public function isLoggedin() { if(!empty($this->session->userdata['id'])) { return true; } else { return false; } } } 

Шаг 8. Модель

 class Login_model extends CI_Model{ function __construct(){ parent::__construct(); } public function checkUser($data) { $st=$this->db->SELECT('*')->from('users') ->WHERE('username',$data['username']) ->WHERE('password',sha1(md5($data['password']))) ->get()->result_array(); if(count($st)>0) { return $st[0]; } else { return false; } } public function checkPassword($str) { $st=$this->db->SELECT('*')->from('users') ->WHERE('id',$this->session->userdata['id']) ->WHERE('password',sha1(md5($str))) ->get()->result_array(); if(count($st)>0) { return true; } else { return false; } } public function updatePassword($password,$id) { $pass=array( 'password' => sha1(md5($password)) ); $this->db->WHERE('id',$id)->update('users',$pass); } } 

Шаг 9. тестирование

Откройте базу данных в Phpmyadmin и вставьте примеры данных в таблицу, используя следующий запрос

 INSERT INTO `users` (`id`, `username`, `password`, `fullname`, `status`) VALUES (1, 'john', '56f5950b728849d0b97c1bccf1691c090ab6734c', 'John Vick', 'approved'); 

Тест-1 Пусто Отправить


введите описание изображения здесь

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

Тест-2. Неверные учетные данные

Укажите любое имя пользователя и пароль (случайный)

введите описание изображения здесь

Тест-3. Правильные учетные данные

Имя пользователя: john Пароль: john


введите описание изображения здесь

Исходный код источника успеха

АГЕНТ !!

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

Полный исходный код

Вы можете загрузить полный исходный код с Git на Boiler-Plates-Codeigniter-3.x-Login