Diferencia entre revisiones de «Usuario:ManuelRomero/php/dwes/B2T1/ficheros/practica»

De WikiEducator
Saltar a: navegación, buscar
 
(16 revisiones intermedias por el mismo usuario no mostrado)
Línea 15: Línea 15:
 
#'''''Ficheros subidos''''':  Cualquiera puede subirlos, pero no se verán como publicados
 
#'''''Ficheros subidos''''':  Cualquiera puede subirlos, pero no se verán como publicados
 
#'''''Ficheros publicados''''': Aquellos ficheros subidos que la administradora podrá publicar (Solo admin)
 
#'''''Ficheros publicados''''': Aquellos ficheros subidos que la administradora podrá publicar (Solo admin)
 +
*La aplicación en su inicio nos dará opción a realizar 3 acciónes según podemos ver en la imagen
 +
[[Archivo:ficheros_accion_index.png]]
 
*Los usuarios no admin podrán subir ficheros y ver ficheros publicados
 
*Los usuarios no admin podrán subir ficheros y ver ficheros publicados
 
*La usuaria admin podrá hacer lo del usuario no admin y ademas verá todos los ficheros subidos para poder publicarlos.
 
*La usuaria admin podrá hacer lo del usuario no admin y ademas verá todos los ficheros subidos para poder publicarlos.
 
;Ejecútalo
 
;Ejecútalo
  http://manuel.infenlaces.com/dwes_2017/musica/
+
  http://manuel.infenlaces.com/dwes_2018/practica_4/
 
}}
 
}}
 
===Especificación como lista de requisitos===
 
===Especificación como lista de requisitos===
 
#RF1 El usuario visualiza la interfaz del index.php.
 
#RF1 El usuario visualiza la interfaz del index.php.
#RF2 El usuairo no aporta alguno de los datos.
+
#RF2 El usuario no aporta alguno de los datos.
 
#RNF1 Se crea la estructura de ficheros para descargas y publicaciones.
 
#RNF1 Se crea la estructura de ficheros para descargas y publicaciones.
 
#RF3 Se sube el fichero a '''''download'''''.
 
#RF3 Se sube el fichero a '''''download'''''.
Línea 30: Línea 32:
 
#RF7 Los ficheros seleccionados se pubicarán: pasarán de download a upload
 
#RF7 Los ficheros seleccionados se pubicarán: pasarán de download a upload
 
#RF8 Hay un fichero log que traceará todas las acciones según texto del enunciado
 
#RF8 Hay un fichero log que traceará todas las acciones según texto del enunciado
 
+
Los accesos pueden ser de tres tipos
 
+
#RF9 Se accede sin subir nada. (se visualizarán los ficheros según usuario)
 +
#RF10 Se sube un fichero sin acceder.
 +
#RF11 Se sube un fichero y se  acceder.
  
 
====RF 1 : Interfaz de index.php ====
 
====RF 1 : Interfaz de index.php ====
Línea 38: Línea 42:
 
Descripción de la interfaz
 
Descripción de la interfaz
 
[[imagen:musica_index1.png|center]]
 
[[imagen:musica_index1.png|center]]
*En ella el usuario aporta datos y selecciona un fichero para subir
+
*En ella el usuario aporta datos (Credenciales) y selecciona una acción:
 +
#Subir fichero
 +
#Acceder
 +
#Acceder y subir fichero
 +
LA siguiente imagen muestra  los casos de uso de estas acciones
 +
[[imagen:index_musica.png|center]]
 +
 
 +
{{Plegable|hide|Index.php (posible solución|
 +
<!DOCTYPE html>
 +
<source lang =php>
 +
<html>
 +
    <head>
 +
        <meta charset="UTF-8">
 +
        <title></title>
 +
        <link href="./css/estilo.css" rel="stylesheet" type="text/css">
 +
 
 +
    </head>
 +
    <body>
 +
 
 +
        <fieldset class="caja_centrada">
 +
            <div class="error"></div>
 +
            <legend style="font-size:20px;font-style: oblique;background:aliceblue ">Subida de ficheros</legend>
 +
            <form action="descarga.php" method="POST" enctype="multipart/form-data">
 +
                <br/>
 +
                Usuario&nbsp&nbsp&nbsp <input type="text" name="name" value="admin">
 +
                <br>
 +
                Password <input type="text" name="pass" value="admin">
 +
                <br/>
 +
                <br/>
 +
                <!-- MAX_FILE_SIZE debe preceder al campo de entrada del fichero -->
 +
                <!--    <input type="hidden" name="MAX_FILE_SIZE" value=1024 />-->
 +
                <div style="float:right">
 +
                    <input type="file" name="fichero"><br>
 +
                </div>
 +
                <br>
 +
                <br>
 +
                <input type="submit" value="subirFichero" name="enviar">
 +
 
 +
            </form>
 +
        </fieldset>
 +
 
 +
    </body>
 +
</html>
 +
</source>
 +
}}
 +
{{Plegable|hide|Css para los estilos|
 +
<source lang=css>
 +
/*
 +
    Created on : 16-oct-2017, 10:05:06
 +
    Author    : manuel
 +
*/
 +
 
 +
.legend2{
 +
    font-style: oblique;
 +
    background: bisque;
 +
    font-size: 1.7em
 +
}
 +
 
 +
.fieldset1{
 +
    width:60%;
 +
    background: blanchedalmond;
 +
    margin-left: 20%
 +
}
 +
.fieldset2{
 +
    width:90%;
 +
}
 +
 
 +
.error{
 +
    float:right;
 +
    color:red;
 +
    font-size:12px;
 +
    font-style: oblique
 +
}
 +
.caja_centrada{
 +
    width:30%;
 +
    margin-left:30%;
 +
    margin-top:10%;
 +
    background: blanchedalmond
 +
}
 +
 
 +
.ficheros{
 +
    width:50%;
 +
    margin-left:10%;
 +
    margin-top:2%;
 +
    background: blanchedalmond
 +
}
 +
 
 +
legend{
 +
    font-size: 2em;
 +
    color: brown;
 +
    background: burlywood
 +
}
 +
 
 +
h1{
 +
   
 +
    color:darkred;
 +
    font-style: inherit;
 +
    font-size:3em;
 +
    text-align: center
 +
}
 +
h2{
 +
    margin-left: 25%;
 +
    color:darkblue;
 +
    font-style: italic;
 +
 
 +
}
 +
h3{
 +
    color:darkblue;
 +
    font-style: italic;
 +
    text-align: center
 +
}
 +
 
 +
input[type="submit"]:active {
 +
    color: darkred;
 +
 
 +
}input[type="submit"]{
 +
 
 +
    text-align: right;
 +
    font-size: 20px;
 +
}
 +
</source>
 +
}}
 
====RF 2:Verificar datos de usuario====
 
====RF 2:Verificar datos de usuario====
 
;index.php<br />
 
;index.php<br />
Línea 44: Línea 169:
 
  # Usuario
 
  # Usuario
 
  # Password
 
  # Password
*El Fichero a subir es opcional ya que un usuario se puede conectar para ver ficheros subidos
+
*Nos quedamos en el index
*Entonces se vuelve  a cargar la página informando del error
+
*Mostramos un mensaje de datos incorrectos
[[Archivo:RF2AppArchivos.png|center|400px]]
+
[[Archivo:index_datos_incorrecto.png]]
 
====RNF1: Estructura de directorios====
 
====RNF1: Estructura de directorios====
 
*Crear la estructura de directorios para subir los ficheros tanto descargas como publicaciones
 
*Crear la estructura de directorios para subir los ficheros tanto descargas como publicaciones
Línea 58: Línea 183:
 
#Cada fichero tiene un checkbox, que nos permite seleccionarlo
 
#Cada fichero tiene un checkbox, que nos permite seleccionarlo
 
#Al presionar publicar, los ficheros seleccionados '''''se moverán''''' a la carpeta correspondiente (música, imagenes, ....) de la carpeta downloads.
 
#Al presionar publicar, los ficheros seleccionados '''''se moverán''''' a la carpeta correspondiente (música, imagenes, ....) de la carpeta downloads.
 +
{{Plegable|hide|Acciones crear ficheros|
 +
*Ubicados en /var/www/descargas (nombre del proyecto
 +
<source lang=php>
 +
mkdir downloads
 +
mkdir uploads
 +
cd downloads
 +
mkdir musica
 +
mkdir imagenes
 +
mkdir pdf
 +
mkdir otros
 +
cd ..
 +
cd uploads
 +
mkdir musica
 +
mkdir imagenes
 +
mkdir pdf
 +
mkdir otros
 +
cd ..
 +
sudo chwon alumno:www-data * -R
 +
</source>
 +
}}
 +
 
====RF3: Subir ficheros seleccionados a download ====
 
====RF3: Subir ficheros seleccionados a download ====
 
;descarga.php:
 
;descarga.php:
 
*Cuando un usuario a especificado un fichero se subirá al subdirectorio correspondiente dentro de '''''download'''''
 
*Cuando un usuario a especificado un fichero se subirá al subdirectorio correspondiente dentro de '''''download'''''
 
[[Archivo:RF3AppArchivos.png|center|400px]]
 
[[Archivo:RF3AppArchivos.png|center|400px]]
 +
;Vamos a tener un fichero de funciones para implementar estas acciones
 +
{{Plegable|hide|subir ficheros|
 +
<source lang=php>
 +
$fichero = $_FILES['fichero'];
 +
if (isset($fichero))
 +
  $subida = subir_ficheros();
 +
</source>
 +
 +
}}
 +
{{Plegable|hide|funciones.php|
 +
<source lang=php>
 +
 +
/**
 +
*
 +
* @param type $fichero fichero a subir (array asociativo).
 +
* @description copia el fichero que se ha subido a la especificación establecida
 +
* @return boolean Si se ha subido o no correctamente.
 +
*/
 +
function subir_ficheros($fichero) {
 +
}
 +
 +
 +
</source>
 +
 +
}}
  
 
====RF 4 Visualizar ficheros públicos (upload)====
 
====RF 4 Visualizar ficheros públicos (upload)====
 
#RF4 Un usuario no admin podrá ver ficherso subidos a '''''upload'''''
 
#RF4 Un usuario no admin podrá ver ficherso subidos a '''''upload'''''
 
;usuario no admin
 
;usuario no admin
[[imagen:caso_uso_11.png|center]]
+
[[imagen:accion_subir_ficheros_2.png|center]]
 +
{{Ple}}
 +
 
 
====RF 5 Admin visualiza todo por separadfo====
 
====RF 5 Admin visualiza todo por separadfo====
 
#RF5 Un usuario admin verá los ficheros de download y de upload
 
#RF5 Un usuario admin verá los ficheros de download y de upload
 
;usuario admin
 
;usuario admin
[[imagen:casos_uso_22.png]]
+
[[imagen:accion_subir_fichero1.png]]
 +
 
 
====RF 6 Admin puede seleccionar ficheros subidos para publicar====
 
====RF 6 Admin puede seleccionar ficheros subidos para publicar====
 
#RF6 Los ficheros  de download tendrá una selección para poderlos publicar  
 
#RF6 Los ficheros  de download tendrá una selección para poderlos publicar  
Línea 84: Línea 258:
 
====RF 8 Crear log con las acciones realizadas====
 
====RF 8 Crear log con las acciones realizadas====
 
#RF8 Hay un fichero log que traceará todas las acciones según texto del enunciado
 
#RF8 Hay un fichero log que traceará todas las acciones según texto del enunciado
 
+
-->
 
+
 
+
 
+
 
+
 
+
 
+
 
+
 
+
 
+
 
+
 
+
[[imagen:musica_descarga1.png|center|800px]]
+
 
+
*Si el usuario no se identifica, se mostrará un mensaje y volveremos a pedir datos como se muestra en la imagen siguiente
+
[[imagen:musica_index2.png|center]]
+
 
+
*Si el usuario puede no seleccionar ningún fichero, la aplicación accederá a descargas.php
+
 
+
 
+
*Hay dos tipos de usuario
+
#administrador  (usuario '''''admin''''' password '''''admin''''')
+
#resto de usuario (cualquier otro usuario y  passowrd)
+
*La aplicación tendrá la siguiente estructura de directorios
+
 
+
[[imagen:musica_estructura_directorios1.png|center|300px]]
+
*Vemos un directorio ''descargas'' con dos subdirectorios: '''uploads''' y  '''downloads''',
+
*Dentro de cada ''subdirectorio'' tenemos un ''directorio'' por cada tipo de ficheros que queremos almacenar.
+
*El funcionamiento es el siguiente:
+
#Cuando un usuario sube un fichero, éste es almacenado en su carpeta correspondiente en el directorio '''''uploads'''''.
+
#Cuando el usuario es admin, se mostrará todos los ficheros de la carpeta uploads,
+
#Cada fichero tiene un checkbox, que nos permite seleccionarlo
+
#Al presionar publicar, los ficheros seleccionados '''''se moverán''''' a la carpeta correspondiente (música, imagenes, ....) de la carpeta downloads.
+
*Mostramos el funcionamiento con imágenes,
+
;usuario no admin
+
[[imagen:caso_uso_11.png|center]]
+
;usuario admin
+
[[imagen:casos_uso_22.png]]
+
*Una vez que presionamos '''''publicar''''' podemos ver como al entrar ya tenemos los ficheros publicados
+
[[imagen:casos_uso_2a.png]]
+
 
+
*Los ficheros descargados estarán sensibles a hacer un '''''click''''' sobre ellos, de forma que el navegador intente abrirlos si puede.
+
(Mostrar imágenes o pdf, o reproducir música)
+
[[Imagen:caso_uso_3.png]]
+
 
+
 
+
*El fichero debe de estar limitado en el cliente y en el servidor con un tamaño máximo de 10 Megas y  en el servidor los ficheros de un peso inferior a 10K serán descartados.
+
}}
+

Última revisión de 06:02 30 oct 2018




Icon activity.jpg

Gestión de música e imágenes

  • Vamos a hacer un sitio web para subir canciones, imágenes, ficheros pdf, y otros, y poderlas ver/reproducir
Descripción
  • La aplicación tendrá dos páginas php:
  1. index.php
  2. descargas.php
  • Äl acceder a la app el usuario se identificará y especificará un fichero para subir
  • Hay dos tipos de usuarios :
  1. Adminsitrador (admin/admin)
  2. Resto de usuarios (Cualquier usuario y password)
  • Llevaremos un ficheros de log donde anotaremos fecha (H:i:s D:m:y) usuario (user y pass) y fichero que se ha subido
  • Existen dos conceptos de ficheros
  1. Ficheros subidos: Cualquiera puede subirlos, pero no se verán como publicados
  2. Ficheros publicados: Aquellos ficheros subidos que la administradora podrá publicar (Solo admin)
  • La aplicación en su inicio nos dará opción a realizar 3 acciónes según podemos ver en la imagen

Ficheros accion index.png

  • Los usuarios no admin podrán subir ficheros y ver ficheros publicados
  • La usuaria admin podrá hacer lo del usuario no admin y ademas verá todos los ficheros subidos para poder publicarlos.
Ejecútalo
http://manuel.infenlaces.com/dwes_2018/practica_4/




Especificación como lista de requisitos

  1. RF1 El usuario visualiza la interfaz del index.php.
  2. RF2 El usuario no aporta alguno de los datos.
  3. RNF1 Se crea la estructura de ficheros para descargas y publicaciones.
  4. RF3 Se sube el fichero a download.
  5. RF4 Un usuario no admin podrá ver ficherso subidos a upload
  6. RF5 Un usuario admin verá los ficheros de download y de upload
  7. RF6 Los ficheros de download tendrá una selección para poderlos publicar
  8. RF7 Los ficheros seleccionados se pubicarán: pasarán de download a upload
  9. RF8 Hay un fichero log que traceará todas las acciones según texto del enunciado

Los accesos pueden ser de tres tipos

  1. RF9 Se accede sin subir nada. (se visualizarán los ficheros según usuario)
  2. RF10 Se sube un fichero sin acceder.
  3. RF11 Se sube un fichero y se acceder.

RF 1 : Interfaz de index.php

index.php
RF1AppArchivos.png

Descripción de la interfaz

Musica index1.png
  • En ella el usuario aporta datos (Credenciales) y selecciona una acción:
  1. Subir fichero
  2. Acceder
  3. Acceder y subir fichero

LA siguiente imagen muestra los casos de uso de estas acciones

Index musica.png

RF 2:Verificar datos de usuario

index.php
  • Si el usuario no aporta alguno de los datos obligatorios
# Usuario
# Password
  • Nos quedamos en el index
  • Mostramos un mensaje de datos incorrectos

Index datos incorrecto.png

RNF1: Estructura de directorios

  • Crear la estructura de directorios para subir los ficheros tanto descargas como publicaciones
  • La aplicación tendrá la siguiente estructura de directorios:
Musica estructura directorios1.png
  • Vemos un directorio descargas con dos subdirectorios: uploads y downloads,
  • Dentro de cada subdirectorio tenemos un directorio por cada tipo de ficheros que queremos almacenar.
  • El funcionamiento será el siguiente:
  1. Cuando un usuario sube un fichero, éste es almacenado en su carpeta correspondiente en el directorio uploads.
  2. Cuando el usuario es admin, se mostrará todos los ficheros de la carpeta uploads,
  3. Cada fichero tiene un checkbox, que nos permite seleccionarlo
  4. Al presionar publicar, los ficheros seleccionados se moverán a la carpeta correspondiente (música, imagenes, ....) de la carpeta downloads.

RF3: Subir ficheros seleccionados a download

descarga.php
  • Cuando un usuario a especificado un fichero se subirá al subdirectorio correspondiente dentro de download
RF3AppArchivos.png
Vamos a tener un fichero de funciones para implementar estas acciones

RF 4 Visualizar ficheros públicos (upload)

  1. RF4 Un usuario no admin podrá ver ficherso subidos a upload
usuario no admin

Plantilla:Ple

RF 5 Admin visualiza todo por separadfo

  1. RF5 Un usuario admin verá los ficheros de download y de upload
usuario admin

Accion subir fichero1.png

RF 6 Admin puede seleccionar ficheros subidos para publicar

  1. RF6 Los ficheros de download tendrá una selección para poderlos publicar
  • Ver imagen anterior

RF 7 Publicar: copiar de download a upoload

  1. RF7 Los ficheros seleccionados se pubicarán: pasarán de download a upload
  • Una vez que presionamos publicar podemos ver como al entrar ya tenemos los ficheros publicados

Casos uso 2a.png

  • Los ficheros descargados estarán sensibles a hacer un click sobre ellos, de forma que el navegador intente abrirlos si puede.

(Mostrar imágenes o pdf, o reproducir música) Caso uso 3.png

RF 8 Crear log con las acciones realizadas

  1. RF8 Hay un fichero log que traceará todas las acciones según texto del enunciado

-->