На проекте реализованы регистрация и авторизация пользователя, нужно еще реализовать загрузку аватаров пользователя. Было реализовано загрузка изображений в базу данных, но подгружались изображения ко всем пользователям, после чего я попытался реализовать подгрузку аватара только тому пользователю, кто авторизовался в сессии.
Код контроллера "avatar":
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Avatar extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->library(['form_validation', 'session']);
$this->load->database();
$this->load->model('avatarModel');
}
public function uploadAvatar(){
$config['upload_path'] = './assets/avatars/';
$config['allowed_types'] = 'gif|jpg|png|svg';
$this->load->library('upload', $config);
if ($this->upload->do_upload('avatar')) {
$upload_data = $this->upload->data();
$data['avatar'] = $upload_data['file_name'];
$id_user = $this->session->userdata('id_user');
$user_data = ['id_user' => $id_user, 'avatar' => $data['avatar']];
$this->avatarModel->storeAvatar($user_data);
redirect(base_url().'welcome');
} else {
echo $this->upload->display_errors();
}
}
}
Код модели "avatarModel":
<?php
class AvatarModel extends CI_Model {
function storeAvatar($data){
$this->db->where('id_user', $data['id_user']);
$this->db->update('users', ['avatar' => $data['avatar']]);
}
}
Код страницы авторизованного пользователя:
<div>
<h1>Рады Вас видеть!</h1>
<div>
<h2>Загрузите свою аватарку</h2>
<form action="<?= base_url(); ?>avatar/uploadAvatar" method="post" enctype="multipart/form-data">
<input type="file" name="avatar"/>
<button type="submit">Загрузить аватар</button>
</form>
</div><br>
<a href="<?= base_url() . 'login/logout'; ?>"><button>Выйти</button></a>
</div>