Я читал здесь пару вопросов от разных новичков о входе и проверке в кодеигниторе, некоторые из них имеют смешанный 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