Тема: Сессії codeignitor [Вирішено]
Потрібно заборонити викликати функції add_news upload_photo не авторизованому користувачу .
Так авторизація просто геніальна але як для потреб достатня .
▼Код контроллеру
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller {
// Головна функція - завантаження поля авторизації
// якщо проходить - редирек на вид додавання новини якщо ні то на головну
function index()
{
if (isset($_POST['log']))
{
$username = $_POST['username'] ;
$password = $_POST['password'];
if(($username === "1") && ($password === "1") ){
$this->session->set_userdata('admin','1');
redirect('/admin/add_post');
}
else { redirect('/blog');}
}
else
{
$this->load->view('author_view');
}
}
// Функція при авторизації завантажує вид додавання новини і зображення
function add_post()
{
$my_var = $this->session->userdata('admin');
if ($my_var == '1') {
$this->load->view('add_post_view');
}
else { redirect('/blog'); }
}
// Функція для виходу з адмінки
function dest()
{
$this->session->sess_destroy();
}
// // Функція додавання новини
// // Якщо пусте одне поле то нічого не додає
function add_news()
{
if (empty($_POST['title'])) {
redirect('/blog');
}
else {
$data['title'] = $_POST['title']; // название статьи храним в элементе массива data->title
$data['text_s'] = $_POST['texts'];
$data['text_f'] = $_POST['textf'];// текст статьи храним в элементе массива data->text
$data['date'] = $_POST['date'];
$data['img_id'] = $_POST['img_id'];// дату статьи храним в элементе массива data->date
$this->load->model('blog_model'); // загружаем модель
$this->blog_model->add_news($data); // вызываем функцию добавления, которая находится в моделе articles_model и передаем весь массив
}
}
// // Завантаження фото аналогічна до попередньої
function upload_photo()
{
{
$config['upload_path'] = './img/pic/'; // путь к папке куда будем сохранять изображение
$config['allowed_types'] = 'gif|jpg|png|jpeg'; // разрешенные форматы файлов
$config['max_size'] = 2000; // максимальный вес файла
$config['encrypt_name'] = TRUE; // переименование файла в уникальное название
$config['remove_spaces'] = TRUE; // убирает пробелы из названия файлов
$this->load->library('upload', $config); // загружаем библиотеку
$this->upload->do_upload(); // вызываем функцию загрузки файла
/* Начало занесения имени файла в БД*/
$upload_data = $this->upload->data(); // получаем информацию о загруженном файле
$add['url'] = $upload_data['file_name']; // сохраняем имя файла в элемент массива add
$this->db->insert('img',$add); // заносим это значение в таблицу photos
/* Конец занесения имени файла в БД*/
}
}
}
▼Кінцевий код контроллера
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller {
// Головна функція - завантаження поля авторизації
// якщо проходить - редирек на вид додавання новини якщо ні то на головну
function index()
{
if (isset($_POST['log']))
{
$username = $_POST['username'] ;
$password = $_POST['password'];
if(($username === "1") && ($password === "1") ){
$this->session->set_userdata('admin','1');
redirect('/admin/add_post');
}
else { redirect('/admin');}
}
else
{
$this->load->view('author_view');
}
}
// Функція при авторизації завантажує вид додавання новини і зображення
function add_post()
{
$my_var = $this->session->userdata('admin');
if ($my_var == '1') {
$this->load->view('add_post_view');
}
else { redirect('/blog'); }
}
// Функція для виходу з адмінки
function dest()
{
$this->session->sess_destroy();
}
// // Функція додавання новини
// // Якщо пусте одне поле то нічого не додає
function add_news()
{
if (empty($_POST['title'])) {
redirect('/blog');
}
else {
$data['title'] = $_POST['title']; // название статьи храним в элементе массива data->title
$data['text_s'] = $_POST['texts'];
$data['text_f'] = $_POST['textf'];// текст статьи храним в элементе массива data->text
$data['date'] = $_POST['date'];
$data['img_id'] = $_POST['img_id'];// дату статьи храним в элементе массива data->date
$this->load->model('blog_model'); // загружаем модель
$this->blog_model->add_news($data); // вызываем функцию добавления, которая находится в моделе articles_model и передаем весь массив
redirect('/admin/add_post');
}
}
// // Завантаження фото аналогічна до попередньої
function upload_photo()
{
if (empty($_POST['opc']))
{
redirect('/blog');
}
{
$config['upload_path'] = './img/pic/'; // путь к папке куда будем сохранять изображение
$config['allowed_types'] = 'gif|jpg|png|jpeg'; // разрешенные форматы файлов
$config['max_size'] = 2000; // максимальный вес файла
$config['encrypt_name'] = TRUE; // переименование файла в уникальное название
$config['remove_spaces'] = TRUE; // убирает пробелы из названия файлов
$this->load->library('upload', $config); // загружаем библиотеку
$this->upload->do_upload(); // вызываем функцию загрузки файла
/* Начало занесения имени файла в БД*/
$upload_data = $this->upload->data(); // получаем информацию о загруженном файле
$add['url'] = $upload_data['file_name']; // сохраняем имя файла в элемент массива add
$add['opc'] = $_POST['opc'];
$this->db->insert('img',$add); // заносим это значение в таблицу photos
redirect('/admin/add_post'); /* Конец занесения имени файла в БД*/
}
}
}
реалізація
як додати в функцію upload_photo новий параметр і теж записувати його в базу , параметр текстовий передаєтся з інпута
$add['opc'] = $_POST['opc'];
<input type="text" name="opc">