+7 (999) 238-23-88

Обновление аватарки пользователя [MODX]

Задача: "Дать доступ пользователю изменять изображение своего профиля"
  1. Создайте форму загрузки изображения:

    <form action="" method="POST" enctype="multipart/form-data">
        <input type="file" name="photo"/>
        <button type="submit">загрузить</button>
    </form>
    
  2. Создайте сниппет или отдельный файл(не забудьте подключится) и укажите его в атрибуте action, поместите следующие внутрь:

    $user=$modx->getUser(); // получаем данные текущего пользователя
    if(!$user){
        return;
    }
    
    $profile=$user->getOne('Profile'); // данные профиля полученного юзера
    if(!$profile){
        return;
    }
    
    if (!empty($_FILES['photo'])) {
        $allowedExts = array("jpg", "jpeg", "gif", "png");  // допустимые форматы
        $extension = strtolower(end(explode(".", $_FILES["photo"]["name"])));
        if ((($_FILES["photo"]["type"] == "image/gif") 
            || ($_FILES["photo"]["type"] == "image/jpeg") 
            || ($_FILES["photo"]["type"] == "image/png") 
            || ($_FILES["photo"]["type"] == "image/pjpeg")) 
            && ($_FILES["photo"]["size"] < 5000000) // максимальный размер изображения
            && in_array($extension, $allowedExts)) 
        { 
            if($_FILES["photo"]["error"]>0){ 
                $answer="Неизвестная ошибка"; 
            }else{
                $uploadfile =$_SERVER['DOCUMENT_ROOT']."/img/".strtotime(date('Y-m-d H:i:s'))."_".$_FILES["photo"]["name"]; // путь и название будущего файла
                if(file_exists($uploadfile)){ 
                    $answer="Файл с таким названием существует"; 
                }else{ 
                    $answer="Ваше фото успешно обновлено"; 
                    move_uploaded_file($_FILES['photo']['tmp_name'],$uploadfile); // загрузка изображения
                    $profile->set('photo', $uploadfile); // запись в базу
                } 
            } 
        }else{
            $answer="Неверный файл, попробуйте выбрать другой файл!";
        } 
    }else{
        $answer="Файл не найден, попробуйте повторить попытку!";
    }
    
    $profile->save();
    
Дата публикации:
Тэги: php

Вопросы и заявки на создание сайта


Мы обязательно ответим на все вопросы, ни одно письмо не остаётся без внимания. Они важны для нас.


Обращаем ваше внимание, что Вы так же можете обсудить проект прямо сейчас позвонив по номеру +7 999-238-23-88 или написав нам в чате мессенджера WhatsApp или Telegram