diff --git a/panel_admin/includes/formAddCinema.php b/panel_admin/includes/formAddCinema.php index 9251ac0..e50e4e7 100644 --- a/panel_admin/includes/formAddCinema.php +++ b/panel_admin/includes/formAddCinema.php @@ -15,14 +15,14 @@ class formAddCinema extends Form{ protected function generaCamposFormulario($datos,$errores=array()){ $htmlErroresGlobales = self::generaListaErroresGlobales($errores); - $errorName = self::createMensajeError($errores,'name','span',array('class'=>'error')); + $errorName = self::createMensajeError($errores,'namecinema','span',array('class'=>'error')); $errorDirection = self::createMensajeError($errores,'direction','span',array('class'=>'error')); $errrorPhone = self ::createMensajeError($errores,'phone',array('class'=>'error')); $html = '
'.$htmlErroresGlobales.' Añadir cine -
'.$errorName.'
+
'.$errorName.'
'.$errorDirection.'
'.$errrorPhone.'
@@ -38,10 +38,10 @@ class formAddCinema extends Form{ public function procesaFormulario($datos) { $result =array(); - $name = $this->test_input($datos['name'])??null; + $name = $this->test_input($datos['namecinema'])??null; if(empty($name)){ - $result['name']= "El nombre no es válido"; + $result['namecinema']= "El nombre no es válido"; } $direction = $this -> test_input($datos['direction']) ?? null; diff --git a/panel_admin/includes/formAddFilm.php b/panel_admin/includes/formAddFilm.php index 13f36bb..40d7439 100644 --- a/panel_admin/includes/formAddFilm.php +++ b/panel_admin/includes/formAddFilm.php @@ -33,7 +33,7 @@ class formAddFilm extends Form{
'.$errorDuration.'
'.$errorLanguage.'
'.$errorDescription.'
-
Imagen promocional:
'.$errorImage.'
+
Imagen promocional:
'.$errorImage.'
@@ -48,48 +48,6 @@ class formAddFilm extends Form{ protected function procesaFormulario($datos){ $result = array(); - - /* PROCESAR LA SUBIDA DE IMAGEN - $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 - $ok = $this->check_file_uploaded_name($nombre) && $this->check_file_uploaded_length($nombre) ; - - // 1.b) Sanitiza el nombre del archivo - //$ok = $this->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), 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); - - if ( $ok ) { - $tmp_name = $_FILES['archivo']['tmp_name']; - - if ( !move_uploaded_file($tmp_name, "../img/films/{$nombre}") ) { - $result['img'] = 'Error al mover el archivo'; - } - - //if ( !copy("../img/tmp/{$nombre}", "/{$nombre}") ) { - // $result['img'] = 'Error al mover el archivo'; - //} - - }else { - $result['img'] = 'El archivo tiene un nombre o tipo no soportado'; - } - } else { - $result['img'] = 'Error al subir el archivo.'; - } - */ - $tittle = $this->test_input($datos['tittle']) ?? null; //|| !mb_ereg_match(self::HTML5_EMAIL_REGEXP, $tittle) if ( empty($tittle) ) { @@ -116,25 +74,44 @@ class formAddFilm extends Form{ if (count($result) === 0) { $bd = new Film_DAO("complucine"); - - //FALTARIA SUBIR LA IMAGEN $exist = $bd-> GetFilm($tittle,$language); if(mysqli_num_rows($exist) != 0){ $result[] = "Ya existe una nueva pelicula con el mismo titulo e idioma."; } else{ + $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 + $ok = $this->check_file_uploaded_name($nombre) && $this->check_file_uploaded_length($nombre) ; - /* PROCESAR SUBIDA DE IMAGEN - $tmp_name = $_FILES['img']['tmp_name']; - if ( !move_uploaded_file($tmp_name, "../img/films/{$nombre}") ) { - $result[] = 'Error al mover el archivo'; - } - //else if ( !copy(DIR_ALMACEN. "/{$nombre}", DIR_ALMACEN_PROTEGIDO. "/{$nombre}") ) { - // $result[] = 'Error al mover el archivo'; - //} - */ - //else { - $bd->createFilm(null, $tittle,$duration,$language,$description, null); //Null hasta tener $nombre + // 1.b) Sanitiza el nombre del archivo + //$ok = $this->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), 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']; + + if ( !move_uploaded_file($tmp_name, "../img/films/{$nombre}") ) { + $result['img'] = 'Error al mover el archivo'; + } + + //if ( !copy("../img/tmp/{$nombre}", "/{$nombre}") ) { + // $result['img'] = 'Error al mover el archivo'; + //} + $bd->createFilm(null, $tittle,$duration,$language,$description, $nombre); //Null hasta tener $nombre $_SESSION['message'] = "
@@ -148,7 +125,13 @@ class formAddFilm extends Form{
"; $result = './?state=mf'; - //} + + }else { + $result['img'] = 'El archivo tiene un nombre o tipo no soportado'; + } + } else { + $result['img'] = 'Error al subir el archivo.'; + } } $exist->free(); diff --git a/panel_admin/includes/formAddPromotion.php b/panel_admin/includes/formAddPromotion.php index 3607396..5744cfd 100644 --- a/panel_admin/includes/formAddPromotion.php +++ b/panel_admin/includes/formAddPromotion.php @@ -7,11 +7,12 @@ include_once('../assets/php/form.php'); class formAddPromotion extends Form{ //Constants: - + const HTML5_EMAIL_REGEXP = '^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$'; + const EXTENSIONS = array('gif','jpg','jpe','jpeg','png'); public function __construct() { - $op = array("action" => "./?state=mp"); - parent::__construct('formAddPromotion', $op); + $options = array("action" => "./?state=mp", 'enctype' => 'multipart/form-data'); + parent::__construct('formAddPromotion', $options); } protected function generaCamposFormulario($datos, $errores = array()){ @@ -32,7 +33,7 @@ class formAddPromotion extends Form{
'.$errorDescription.'
'.$errorCode.'
'.$errorActive.'
-
Imagen promocional:
+
Imagen promocional:
@@ -73,15 +74,45 @@ class formAddPromotion extends Form{ if (count($result) === 0) { $bd = new Promotion_DAO("complucine"); - - //FALTARIA SUBIR LA IMAGEN $exist = $bd-> GetPromotion($code); if(mysqli_num_rows($exist) != 0){ $result[] = "Ya existe una nueva promocion con el mismo codigo."; } else{ - $bd->createPromotion(null, $tittle,$description,$code,$active); - $_SESSION['message'] = "
+ $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 + $ok = $this->check_file_uploaded_name($nombre) && $this->check_file_uploaded_length($nombre) ; + + // 1.b) Sanitiza el nombre del archivo + //$ok = $this->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), 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']; + + if ( !move_uploaded_file($tmp_name, "../img/promos/{$nombre}") ) { + $result['img'] = 'Error al mover el archivo'; + } + + //if ( !copy("../img/tmp/{$nombre}", "/{$nombre}") ) { + // $result['img'] = 'Error al mover el archivo'; + //} + $bd->createPromotion(null, $tittle,$description,$code,$active, $nombre); + $_SESSION['message'] = "
@@ -93,14 +124,28 @@ class formAddPromotion extends Form{
"; - $result = './?state=mp'; - + $result = './?state=mp'; + + }else { + $result['img'] = 'El archivo tiene un nombre o tipo no soportado'; + } + } else { + $result['img'] = 'Error al subir el archivo.'; + } + } $exist->free(); } return $result; } + private function check_file_uploaded_name ($filename) { + return (bool) ((mb_ereg_match('/^[0-9A-Z-_\.]+$/i',$filename) === 1) ? true : false ); + } + private function check_file_uploaded_length ($filename) { + return (bool) ((mb_strlen($filename,'UTF-8') < 250) ? true : false); + } + } diff --git a/panel_admin/includes/formDeleteCinema.php b/panel_admin/includes/formDeleteCinema.php index 5b7dd7a..e5c5a25 100644 --- a/panel_admin/includes/formDeleteCinema.php +++ b/panel_admin/includes/formDeleteCinema.php @@ -45,7 +45,7 @@ class formDeleteCinema extends Form{ if(count($result)===0){ $bd = new Cinema_DAO('complucine'); - $exist = $bd -> cinemaData($id); + $exist = $bd -> existCinema($id); if(mysqli_num_rows($exist)==1){ $bd->deleteCinema($id); $_SESSION['message'] = "
diff --git a/panel_admin/includes/formDeleteFilm.php b/panel_admin/includes/formDeleteFilm.php index 052c40c..020c26d 100644 --- a/panel_admin/includes/formDeleteFilm.php +++ b/panel_admin/includes/formDeleteFilm.php @@ -54,7 +54,7 @@ class formDeleteFilm extends Form{ if (count($result) === 0) { $bd = new Film_DAO("complucine"); - $exist = $bd-> FilmData($id); + $exist = $bd-> existFilm($id); if( mysqli_num_rows($exist) == 1){ $bd->deleteFilm($id); $_SESSION['message'] = "
diff --git a/panel_admin/includes/formDeletePromotion.php b/panel_admin/includes/formDeletePromotion.php index ce20711..f82a657 100644 --- a/panel_admin/includes/formDeletePromotion.php +++ b/panel_admin/includes/formDeletePromotion.php @@ -35,7 +35,6 @@ class formDeletePromotion extends Form{

Description:'.$_POST['description'].'

Codigo: '.$_POST['code'].'

Activa: '.$_POST['active'].'

-
Imagen promocional:
@@ -58,7 +57,7 @@ class formDeletePromotion extends Form{ if (count($result) === 0) { $bd = new Promotion_DAO("complucine"); - //FALTARIA SUBIR LA IMAGEN + $exist = $bd-> promotionData($id); if(mysqli_num_rows($exist) == 1){ $bd->deletePromotion($id); diff --git a/panel_admin/includes/formEditCinema.php b/panel_admin/includes/formEditCinema.php index 9871643..29009f2 100644 --- a/panel_admin/includes/formEditCinema.php +++ b/panel_admin/includes/formEditCinema.php @@ -68,7 +68,7 @@ class formEditCinema extends Form{ if(count($result)===0){ $bd = new Cinema_DAO('complucine'); - $exist = $bd -> cinemaData($id); + $exist = $bd -> existCinema($id); if(mysqli_num_rows($exist)==1){ $bd->editCinema($id,$name,$direction,$phone); $_SESSION['message'] = "
diff --git a/panel_admin/includes/formEditFilm.php b/panel_admin/includes/formEditFilm.php index c687bf3..018b9d6 100644 --- a/panel_admin/includes/formEditFilm.php +++ b/panel_admin/includes/formEditFilm.php @@ -9,9 +9,10 @@ include_once('../assets/php/form.php'); class formEditFilm extends Form{ //Constants: const HTML5_EMAIL_REGEXP = '^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$'; + const EXTENSIONS = array('gif','jpg','jpe','jpeg','png'); - public function __construct() { - $options = array("action" => "./?state=mf"); + public function __construct() { + $options = array("action" => "./?state=mf", 'enctype' => 'multipart/form-data'); parent::__construct('formEditFilm', $options); } @@ -25,7 +26,7 @@ class formEditFilm extends Form{ $errorDuration = self::createMensajeError($errores, 'duration', 'span', array('class' => 'error')); $errorLanguage = self::createMensajeError($errores, 'language', 'span', array('class' => 'error')); $errorDescription = self::createMensajeError($errores, 'description', 'span', array('class' => 'error')); - $errorImage = self::createMensajeError($errores, 'image', 'span', array('class' => 'error')); + $errorImage = self::createMensajeError($errores, 'img', 'span', array('class' => 'error')); $html = '
@@ -36,8 +37,8 @@ class formEditFilm extends Form{
'.$errorDuration.'
'.$errorLanguage.'
'.$errorDescription.'
-
Imagen promocional:
- +
Imagen promocional:
'.$errorImage.'
+
@@ -82,26 +83,80 @@ class formEditFilm extends Form{ if ( empty($language)) { $result['language'] = "La descripcion no es válida"; } + if (count($result) === 0) { $bd = new Film_DAO("complucine"); - $exist = $bd-> FilmData($id); + $exist = $bd-> existFilm($id); if( mysqli_num_rows($exist) == 1){ - $bd->editFilm($id, $tittle, $duration, $language, $description, $img = null /* Cambiar cuando se ñaladan las imágenes */); - $_SESSION['message'] = "
-
-
-
-

Operacion realizada con exito


-

Se ha editado la pelicula correctamente en la base de datos.

- + $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 + $ok = $this->check_file_uploaded_name($nombre) && $this->check_file_uploaded_length($nombre) ; + + // 1.b) Sanitiza el nombre del archivo + //$ok = $this->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), 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']; + + if ( !move_uploaded_file($tmp_name, "../img/films/{$nombre}") ) { + $result['img'] = 'Error al mover el archivo'; + } + + //if ( !copy("../img/tmp/{$nombre}", "/{$nombre}") ) { + // $result['img'] = 'Error al mover el archivo'; + //} + $bd->editFilm($id, $tittle, $duration, $language, $description, $nombre); + $_SESSION['message'] = "
+
+
+
+

Operacion realizada con exito


+

Se ha editado la pelicula correctamente en la base de datos.

+ +
+
-
-
- "; - $result = './?state=mf'; + "; + $result = './?state=mf'; + + }else { + $result['img'] = 'El archivo tiene un nombre o tipo no soportado'; + } + } else { + $bd->editFilmNoImg($id, $tittle, $duration, $language, $description); + $_SESSION['message'] = "
+
+
+
+

Operacion realizada con exito


+

Se ha editado la pelicula correctamente en la base de datos.

+ +
+
+
+
+ "; + $result = './?state=mf'; + } + } else{ $result[] = "La pelicula seleccionada no existe."; @@ -110,6 +165,13 @@ class formEditFilm extends Form{ } return $result; } + + private function check_file_uploaded_name ($filename) { + return (bool) ((mb_ereg_match('/^[0-9A-Z-_\.]+$/i',$filename) === 1) ? true : false ); + } + private function check_file_uploaded_length ($filename) { + return (bool) ((mb_strlen($filename,'UTF-8') < 250) ? true : false); + } } ?> \ No newline at end of file diff --git a/panel_admin/includes/formEditPromotion.php b/panel_admin/includes/formEditPromotion.php index 371f6ec..a364c91 100644 --- a/panel_admin/includes/formEditPromotion.php +++ b/panel_admin/includes/formEditPromotion.php @@ -7,11 +7,13 @@ include_once('../assets/php/form.php'); class formEditPromotion extends Form{ //Constants: - + //Constants: + const HTML5_EMAIL_REGEXP = '^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$'; + const EXTENSIONS = array('gif','jpg','jpe','jpeg','png'); - public function __construct() { - $op = array("action" => "./?state=mp"); - parent::__construct('formEditPromotion', $op); + public function __construct() { + $options = array("action" => "./?state=mp", 'enctype' => 'multipart/form-data'); + parent::__construct('formEditPromotion', $options); } protected function generaCamposFormulario($datos, $errores = array()){ @@ -24,7 +26,7 @@ class formEditPromotion extends Form{ $errorDescription = self::createMensajeError($errores, 'description', 'span', array('class' => 'error')); $errorCode = self::createMensajeError($errores, 'code', 'span', array('class' => 'error')); $errorActive = self::createMensajeError($errores, 'active', 'span', array('class' => 'error')); - //$errorImage = self::createMensajeError($errores, 'image', 'span', array('class' => 'error')); + $errorImg = self::createMensajeError($errores, 'img', 'span', array('class' => 'error')); $html = '
'.$htmlErroresGlobales.'
@@ -35,7 +37,7 @@ class formEditPromotion extends Form{
'.$errorDescription.'
'.$errorCode.'
'.$errorActive.'
-
Imagen promocional:
+
Imagen promocional:
'.$errorImg.'
@@ -85,20 +87,72 @@ class formEditPromotion extends Form{ //FALTARIA SUBIR LA IMAGEN $exist = $bd-> promotionData($id); if(mysqli_num_rows($exist) == 1){ - $bd->editPromotion($id, $tittle,$description,$code,$active); - $_SESSION['message'] = "
-
-
-
-

Operacion realizada con exito


-

Se ha modificado la promocion correctamente en la base de datos.

- + $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 + $ok = $this->check_file_uploaded_name($nombre) && $this->check_file_uploaded_length($nombre) ; + + // 1.b) Sanitiza el nombre del archivo + //$ok = $this->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), 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']; + + if ( !move_uploaded_file($tmp_name, "../img/promos/{$nombre}") ) { + $result['img'] = 'Error al mover el archivo'; + } + + //if ( !copy("../img/tmp/{$nombre}", "/{$nombre}") ) { + // $result['img'] = 'Error al mover el archivo'; + //} + $bd->editPromotion($id, $tittle,$description,$code,$active, $nombre); + $_SESSION['message'] = "
+
+
+
+

Operacion realizada con exito


+

Se ha modificado la promocion correctamente en la base de datos.

+ +
-
-
-
- "; - $result = './?state=mp'; +
+
+ "; + $result = './?state=mp'; + + }else { + $result['img'] = 'El archivo tiene un nombre o tipo no soportado'; + } + } else { + $bd->editPromotionNoImg($id, $tittle,$description,$code,$active); + $_SESSION['message'] = "
+
+
+
+

Operacion realizada con exito


+

Se ha modificado la promocion correctamente en la base de datos.

+ +
+
+
+
+ "; + $result = './?state=mp'; + } } else{ @@ -108,7 +162,12 @@ class formEditPromotion extends Form{ } return $result; } - + private function check_file_uploaded_name ($filename) { + return (bool) ((mb_ereg_match('/^[0-9A-Z-_\.]+$/i',$filename) === 1) ? true : false ); + } + private function check_file_uploaded_length ($filename) { + return (bool) ((mb_strlen($filename,'UTF-8') < 250) ? true : false); + } } diff --git a/panel_admin/index.php b/panel_admin/index.php index e6d94ad..bdba00d 100644 --- a/panel_admin/index.php +++ b/panel_admin/index.php @@ -17,8 +17,7 @@ } else { $reply=AdminPanel::addCinema(); - $reply.= ($template->print_cinemas()); - + $reply.= ($template->print_cinemas()); }; break; case 'mf': if(isset($_POST['edit_film'])) {