From 7166b91e8360803abaabfb929cad3f5667e07746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20M=C3=A9ndez?= <45081533+FerMdez@users.noreply.github.com> Date: Mon, 31 May 2021 20:50:32 +0200 Subject: [PATCH] Add files via upload --- assets/php/config.php | 6 +-- panel_manager/index.php | 4 -- panel_user/includes/formUploadPic.php | 68 +++++++++++---------------- register/includes/formRegister.php | 4 +- 4 files changed, 33 insertions(+), 49 deletions(-) diff --git a/assets/php/config.php b/assets/php/config.php index 1a41184..cf47986 100644 --- a/assets/php/config.php +++ b/assets/php/config.php @@ -16,9 +16,9 @@ /** * Image files directory. */ - define('FILMS_DIR', dirname(RAIZ_APP).'/img/films/tmp/'); - define('FILMS_DIR_PROTECTED', RAIZ_APP.'/img/films/tmp/'); - define('USER_PICS', dirname(ROUTE_APP).'img/users/'); + define('FILMS_DIR', RAIZ_APP.'/img/films/'); + define('FILMS_DIR_PROTECTED', dirname(RAIZ_APP).'/img/films/tmp/'); + define('USER_PICS', ROUTE_APP.'img/users/'); /** * Allowed extensions for image files. diff --git a/panel_manager/index.php b/panel_manager/index.php index 047c8b3..d135626 100644 --- a/panel_manager/index.php +++ b/panel_manager/index.php @@ -1,7 +1,3 @@ - - - - 'multipart/form-data'); + $options = array("enctype" => "multipart/form-data", "action" => "./?option=change_profile_pic"); parent::__construct('formUploadFiles', $options); } @@ -22,7 +24,7 @@ class FormUploadFiles extends Form { // Se genera el HTML asociado a los campos del formulario y los mensajes de error. $html = '
'.$htmlErroresGlobales.'+
'.$htmlErroresGlobales.'
'.$errorFile.''; @@ -36,49 +38,33 @@ class FormUploadFiles extends Form { $result = array(); $ok = count($_FILES) == 1 && $_FILES['archivo']['error'] == UPLOAD_ERR_OK; - if ( $ok ) { - $archivo = $_FILES['archivo']; $nombre = $_FILES['archivo']['name']; - /* 1.a) Valida el nombre del archivo */ + //1.a) Valida el nombre del archivo $ok = $this->check_file_uploaded_name($nombre) && $this->check_file_uploaded_length($nombre) ; - /* 1.b) Sanitiza el nombre del archivo - $ok = sanitize_file_uploaded_name($nombre); - */ - /* 1.c) Utilizar un id de la base de datos como nombre de archivo */ - - /* 2. comprueba si la extensión está permitida*/ - $ok = $ok && in_array(pathinfo($nombre, PATHINFO_EXTENSION), $ALLOWED_EXTENSIONS); - - /* 3. comprueba el tipo mime del archivo correspode a una imagen image/* */ - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $mimeType = finfo_file($finfo, $_FILES['archivo']['tmp_name']); + + // 1.b) Sanitiza el nombre del archivo + //$ok = $this->sanitize_file_uploaded_name($nombre); + // + + // 2. comprueba si la extensión está permitida + $ok = $ok && in_array(pathinfo($nombre, PATHINFO_EXTENSION), self::EXTENSIONS); + + // 3. comprueba el tipo mime del archivo correspode a una imagen image + $finfo = new \finfo(FILEINFO_MIME_TYPE); + $mimeType = $finfo->file($_FILES['archivo']['tmp_name']); $ok = preg_match('/image\/*./', $mimeType); finfo_close($finfo); - + if ( $ok ) { - $tmp_name = $_FILES['archivo']['tmp_name']; - //$tmp_name = unserialize(strtolower($_SESSION["user"])->getName()).".jpg"; - - if ( !move_uploaded_file($tmp_name, USER_PICS.$nombre) ) { - $result[] = 'Error al mover el archivo'; - } - - // 4. Si fuese necesario guardar en la base de datos la ruta relativa $nombre del archivo - //return "index.php#img=".urlencode('img/'.$nombre); - $_SESSION['message'] = " - "; - $result = "./?option=change_profile_pic"; + $tmp_name = $_FILES['archivo']['tmp_name']; + $new_name = strtolower(unserialize($_SESSION["user"])->getName()).".jpg"; + + if ( !move_uploaded_file($tmp_name, "../img/users/{$new_name}") ) { + $result['img'] = 'Error al mover el archivo'; + } + + $result = "./"; } else { $result["errorFile"] = 'El archivo tiene un nombre o tipo no soportado'; } @@ -96,8 +82,8 @@ class FormUploadFiles extends Form { * @author Yousef Ismaeil Cliprz * @See http://php.net/manual/es/function.move-uploaded-file.php#111412 */ - protected function check_file_uploaded_name ($filename) { - return (bool) ((mb_ereg_match('/^[0-9A-Z-_\.]+$/i',$filename) === 1) ? true : false ); + protected function check_file_uploaded_name($filename) { + return (bool) ((mb_ereg_match('/^[0-9A-Z-_\.]+$/i', $filename) === 1) ? true : false ); } /** diff --git a/register/includes/formRegister.php b/register/includes/formRegister.php index 68aa956..e3fdc3f 100644 --- a/register/includes/formRegister.php +++ b/register/includes/formRegister.php @@ -1,5 +1,4 @@ user->getName(); $_SESSION["rol"] = $this->user->getRol(); $_SESSION["login"] = true; + $img = "../img/users/user.jpg"; //USER_PICS + $profile_img = "../img/users/".$nombre.".jpg"; + copy($img, $profile_img); $result = ROUTE_APP."register/register.php"; } }