Bienvenidos a una nueva clase y habíamos quedado en la acción de subir o actualizar la imagen del usuario.
Bueno y qué hago acá en la base de datos.
Estoy en PHP y admin pegándole una mirada a la tabla.
Usuarios y cómo ven ha aparecido algo nuevo sí señor.
Le he agregado usuarios imagen una nueva columna cómo lo hice simple aquí abajo está la opción de agregar
y yo puedo poner X cantidad de columnas y puedo decir en donde agregarla si es que tengo alguna preferencia
por el orden.
Bueno yo simplemente le dije que le agregará después de la última columna que esos usuarios ùltimo lo
bien que le va a agregar.
Aquí ya apareció pero yo no tengo problemas en agregar otra columna si así lo necesitara.
No sé edad bueno en este caso sería usuarios edad tipo entero y yo elegiría los valores pero luego simplemente
guardar y esto ustedes ya lo saben hacer esta columna vamos a analizar.
Yo me voy a venir a cada estructura aceptar veamos
de nuevo me voy a la estructura de la tabla.
Usuarios y la columna usuarios imagen.
Yo he elegido un parchar de 200.
Es cierto es probable que sea una exageración pero dado que los nombres de las imágenes la ruta que
puede contener también a dónde se vaya a terminar guardando puede ser algo larga.
Yo me aseguro con 200 caracteres después nada en especial.
Es bastante simple la columna que he agregado pero retomando el hecho de subir la imagen nosotros teníamos
este formulario que va a enviar el archivo de la imagen a nuestro propio o a nuestro mismo archivo PHP
aquí arriba.
Entonces yo tengo que estar preparado para recibir esa imagen.
Bueno vamos a estudiar algunas cosas nuevas.
Se acuerdan que habíamos creado un archivo llamado funciones punto PHP.
Bueno está por acabar voy a abrir acá el árbol y ya lo tenía listo aunque hasta ahí está funciones punto
PHP.
La idea es ahí ir acumulando todas las funciones de nuestra plataforma como yo sé que van a ser pocas.
Es que yo creo un solo archivo funciones.
Si el proyecto lo amerita incluso podría tener varios archivos funciones por ejemplo funciones de estadísticas
funciones de usuario funciones de configuración distintos archivos de funciones.
Eso me va a ayudar muchísimo al orden.
Cómo hago para que todo el código PHP que ponga en este archivo se incluya dentro de Configuración porque
en definitiva eso es lo que va a hacer esta línea que estoy poniendo acá.
Es una función propia de PHP.
En realidad la función originales Ricoeur digamos que es la función clásica es la acción de incluir
un PHP dentro de otro PHP.
Sería lo mismo ir al archivo funciones copiar todo el código y pegarlo acá dentro de Configuración.
Bueno hay otra versión del Recoil que se llama Recoil Guanes o incluir una sola vez.
Esto me asegura de que si por error en otra parte del código o en otro archivo también estoy haciendo
un recuadro a funciones lo cargue una sola vez y no se duplique el contenido lo que lógicamente va a
dar error porque por ejemplo una función no se le puede declarar dos veces una variable que puedo tener
declarada y no se puede declarar dos veces.
Si yo incluye dos veces este Código va a estar todo duplicado.
Entonces el recuerdo 11 me asegura que no vaya a ser cosa.
Supongamos que acá en este proyecto intervenimos muchos programadores.
Bueno si otro programador lo incluye en otra parte del código nos aseguramos de que no genere error
se va incluir una sola vez.
Si ya lo encuentra incluido no lo incluye.
Bueno teniendo las funciones cargadas aquí ya vamos a ver que vamos a poner por supuesto en ese archivo.
Ahora es tarea de recibir el post que se está enviando con los archivos o con el archivo en este caso
porque se está viendo uno solo que va a ser el archivo de la imagen.
Entonces recuerdan que antes usábamos en algún lugar esto IFF post que en definitiva estaba preguntando
si estás llegando algo por.
Bueno de la misma manera hay una súper variable que es fails a donde aquí van a venir los o el archivo
que se esté enviando por post y que está llegando a este PHP.
Por qué pongo este IHF.
Antes de procesar y recuperar el archivo que venga o lo que fuere que vaya a hacer porque yo no quiero
que me dé un error pasa lo mismo vamos aquí ya estoy en la web y esto que cuando entro estoy apretando
enter y entrando una y otra vez o incluso actualizando no me dé error porque estoy ingresando a Configuración
y no estoy enviando ningún archivo.
Si no hiciera esto de controlar si estás llegando archivo al querer poner los archivos que lleguen en
una variable o procesarlos me daría error.
Bueno pero cómo haríamos para grabar el archivo en el disco duro del servidor o sea como dijimos anteriormente.
Yo quiero que se grabe aquí en esta carpeta Archivos que yo he creado y los he subido algunas imágenes
de prueba.
Pero bueno ustedes lo van a tener vacío por supuesto a esta carpeta y cómo haríamos para que se graben
ahí.
Bueno es muy fácil buscar ejemplos en la web y Miren este es uno de ellos.
Es un clásico y vamos a analizar.
Línea por línea este ejemplo.
Bueno lo primero que hacemos es crear una variable a donde vamos a poner la ruta de a dónde queremos
guardar estos archivos.
Como ven yo tengo aquí una carpeta de archivos preparada para alojar estas imágenes que vamos que vamos
a ir subiendo Bueno yo tengo eso por un lado luego voy a crear otra variable que se va a llamar fichero
subido
o lo que es mejor voy a renombrar esto.
Miren vamos a mejorar este ejemplo que yo copié lo copio de una página muy importante pero me parece
que podemos mejorar el nombre en español y que le damos a las variables para que nos ayude a entender
mejor cómo funciona esto.
Entonces a esto le voy a poner ruta completa
hasta por qué esta recién sólo obtenía archivos yo solo estoy poniendo la carpeta a donde voy a guardar
en ruta completa estoy cocinando ya estoy sumando archivos.
Por qué digo que estos archivos y por qué es esta variable de acá a donde guardé esto hoy se entiende
tengo archivos y le voy a concatenar lo siguiente base Nahim ahí vamos anotando a nuestro bloc de notas
de funciones útiles.
Esta es otra función de PHP que cuando yo le paso una ruta completa no importa cuan larga sea de archivos
barra esta barra lo otro barrio el otro barra el otro porque puede pasar que tengamos direcciones así.
Lo que me va a pasar es la última parte de la ruta.
Por ejemplo si esto fuera archivos y sería esto imagen punto JPG el archivo o le pongo para que se note
que es.
Por ejemplo Pablo JPG una foto mía para subir.
Supongamos que este es el estreno completo el base.
Lo que hace es extraer el resto y dejar solo el final bueno.
Por qué hago esto.
Hay muchas cosas que tenemos que ver al mismo tiempo y sé que puede ser difícil esta es la súper variable
por donde vienen los archivos.
Hasta ahí estamos.
Es como si fuera el post.
Cómo encuentro yo porque pueden venir muchos archivos por ese post como encuentro.
Cuál es el que yo quiero.
Bueno yo tengo que buscar acá con qué etiqueta había mandado el imput de archivos.
De dónde sale esta etiqueta de archivo por ahí hay tantos archivos que nos confundimos pero vamos las
Busquemos esa etiqueta.
Vamos a repasarlo.
No importa cuántas veces lo tengamos que hacer mientras lo entendamos la etiqueta sale de aquí.
Este es el input del formulario para enviar archivos.
Bien como todo imput tiene un nein que es la etiqueta con la que enviamos la información a PHP y esta
etiqueta es con la que desde PHP vamos a buscar en esa maraña de información que llega.
Cuál es nuestro paquete.
Nuestro envío bien por eso lo pongo acá como Fish es una raíz multidimensional dentro de el array Fish
Archivo.
Hay otro índice que puede buscar que es Nein que me va a traer el nombre.
Lo que sucede es que poniendo esto me va a traer la ruta completa la que sube temporalmente que es este
archivo y la verdad es que yo no sé dónde está este archivo.
Quizás tiene una ruta larguísima entonces por eso utilizo base Baseline para extraer cualquier ruta
que tenga antes y sólo traerme en definitiva se lo voy a responder así.
Esto es lo que hace solamente traerme el nombre del archivo y la extensión estamos yo lo que estoy haciendo
aquí es filtrar cómo lo que me llega acá es el nombre del archivo más toda la ruta que hay hasta configuración
punta punto PHP que yo desconozco cuánta barra barra porque es mejor configuración punto PHP está dentro
de la carpeta raíz.
Más sistema más índex más esto más otro y es larguísimo.
Yo quiero borrar todo eso y dejarme solamente el final eso lo hago gracias a la función base Henaine.
Entonces lo que hago con esto es que lo que estoy pintando acá se va a transformar en el nombre del
archivo.
Por ejemplo yo lo voy a dejar Code Araca Pablo punto JPG.
Entonces cuando yo estoy sumando esto más esto me va a quedar así.
Algo así sería Pablo punto.
JPG me está quedando la ruta final completa de a dónde tengo que terminar guardando dicho archivo.
Voy a hacer control Z para dejar todo como estaba.
A ver a mí me gusta perfecto bueno sin querer.
Acabo de decir ruta final casi que me gusta más que ruta completa ruta final
bueno acá en el ejemplo que hemos copiado utilizan un eco Pré para darle un poco más de orden a lo que
se va a imprimir después es opcional.
Bueno sigamos con conceptos más bien teóricos y bastante densos a veces.
Pero bueno esto es más que todo para que los tengan pero recuerden que esto que vamos a ver a continuación
no esto lo vamos a mejorar muchísimo nuestra manera de recibir archivos.
Van a ver que vamos a guardar lo que vamos a proponer la forma final de guardar archivos.
Si les recomiendo casi como obligado guardarla en el bloc de notas para que cada vez que necesiten subir
y guardar archivos lo hagan de esta manera que puedan mejorarla seguro y si lo hacen no se olviden de
compartirlo.
Bueno repasemos otro concepto técnico en estas dos líneas no hago más que jugar con los nombres de los
archivos tanto con el que voy a grabar con el que me llega yo estoy procesando nombres no el archivo
propiamente dicho en cuanto se realizó el post en cuanto yo hice clic en el botón Enviar que tengo en
mi front end el archivo ya llegó a PHP y ya se grabó de manera temporal no definitiva.
Por eso yo me estoy preparando acá con un nombre definitivo para guardar esa información temporal que
está aguantando PHP y que si no la guarda en ningún lado con certeza va a desaparecer y se va a perder.
Bueno entonces vean la línea que voy a pintar ahora
esta línea que acabo de pintar acá lo que hace es transferir ese archivo temporal a un archivo real
final que va a estar guardado aquí.
Cómo funciona esta función que es otra de las interesantes para notar en nuestro bloc de notas.
Funciona de la siguiente manera le voy a pasar a esa función entre paréntesis nada más.
Miren qué fácil que es dos valores el primer valor
va a ser el archivo propiamente dicho y el archivo también lo tengo aquí vamos a poner acá tengo que
cambiar el índice.
Ahí está ben sería lo mismo que esto que tengo acá el primer valor es el archivo que quiero grabar porque
en definitiva esto que tengo acá además de contener el nombre a mí me vino de diez porque va a ser lo
que hace es extraer el nombre del archivo.
Eso ya lo prendimos bien pero lo que yo tengo acá no solamente es el nombre también es el archivo temporal
del que yo les hablo.
Tenemos que hacerlo definitivo grabarlo.
Entonces son solamente dos valores que les paso a esta función MOF habló de.
O sea mover el archivo subido PHP lo da por subido subió está grabado es otra cosa.
Entonces la segunda variable o el segundo valor que le voy a pasar es el lugar definitivo el hogar definitivo
que va a tener ese archivo con nombre y todo.
Entonces acá voy a modificar porque esto quedó del ejemplo aquí sí me aprovecho de ruta final simple
qué es lo que quiero grabar dónde lo quiero grabar por qué está entre un IFF muy simple.
Por qué esta función si devuelve un valor devuelve true o Fool's Tru.
Si se pudo grabar correctamente o Fool's si la grabación falló.
Cómo que si puedes fallar te pudiste haber quedado sin lugar en el disco la carpeta si estabas en Linux
a lo mejor no tenía permisos de escritura y no pudiste grabar.
Se rompió algo se cortó la luz.
No se pueden pasar mil cosas.
Para que esto sucede no pasa casi nunca si es cierto y si pasa bueno entonces sí lo vamos a hacer de
una manera un poco más correcta más prolija.
Lo pongo dentro de ONIF como esto me va a devolver un Truc o un Fool's en función de si se pudo grabar
o no.
Yo voy a decir sí si se puede grabar listo imprime el fichero es válido si subió con éxito.
Si no posible ataque de subida de ficheros esto la verdad es seguramente una exageración.
Que haya habido una falla en esta parte ya no es sinónimo de que hoy me están atacando.
Lamentablemente para nosotros tenemos que trabajar mucho más para detectar si hay un ataque y qué bueno
que hablamos de esto.
Por qué les digo que no nos vamos a quedar con esta versión y que la vamos a tener que mejorar porque
a la hora de subir archivos a nuestra aplicación es uno de los puntos más vulnerables que existen a
la hora de meternos código malicioso o a la hora de hacernos daño porque si no filtramos bien las cosas
y no nos preocupamos por si esa imagen es realmente una imagen sin darnos cuenta nos pueden subir un
archivo PHP con código malicioso y ejecutarlos desde el exterior y hacernos muchísimo daño entonces
no nos tenemos que tomar a la ligera el proceso de subir archivos.
Bueno no se asusten no se asusta de esto y saben qué lo voy a borrar.
Sí pero no sin antes copiarlo.
Lo que voy a hacer es no quiero que nos moleste esto por ningún motivo.
Pero si se los dejo por acá al fondo de todo y hacer algo que no se debe pero es algo que lo hacemos
entre ustedes y yo voy a pegar acá esto vamos a ser así yo lo voy a comentar para que no rompa nada
en PHP pero para que a ustedes les quede esta manera simple de desgrabar archivos que no recomiendo
para nada pero por las dudas quiero que quede registrado esto.
Bueno si ustedes no van a hacer esto simplemente lo borran cuando usen este ejemplo.
Bueno esto nos ha quedado despoblado ahora pero por qué miren yo lo que hago es si archivos o sea así
está llegando algo llamo a una función que se llama graba imagen es una función de PHP y por el nombre
ya nos damos cuenta que esto es bastante criollo o bastante latino.
Es una función que yo he creado y a esta función le paso archivo y qué archivo.
Bueno es esto es una variable que voy a crear y a donde voy a guardar lo que me está llegando.
Bueno Kooper de acá abajo.
Menos mal que lo dejé preparado aquí está
ahí está lo peor acá Ahí está entonces lo que está llegando.
Lo guardo en esta variable archivo.
Luego llamo a la función graba imagen que va a ser la encargada como está diciendo su nombre de grabar
el archivo que está llegando verdaderamente en un directorio real.
Ahora bien esta función que ya vamos a ver no solamente cumple una orden de grabar lo que le estoy pasando
sino que devuelve algo más y lo que va a devolver es un mensaje una string de ese mensaje si es que
devuelve alguno va a contener cualquier posible error que se dé durante el proceso de grabado.
Entonces yo lo que puedo hacer es matar dos pájaros de un tiro es crear acá una variable llamado MSG
la típica que usamos para los mensajes podría ser cualquier otra cosa y voy a decir que va a ser igual
a graba imagen y le pasó el archivo.
Entonces después de que se complete la función acá me va a quedar guardadito el mensaje que me haya
respondido esta función pero dónde está esta función.
Bueno para eso hemos creado funciones punto PHP acá se lo tengo preparado y en este archivo punto PHP
donde vamos a poner un montón de funciones que vamos a usar en nuestro maravilloso PHP Tube.
Lo primero que hago es conectarme a la base de datos porque en la mayoría de las funciones opero con
la base de datos Bueno acá está la función en cuestión es bastante largo lo que lleva adentro no se
asusten no ha muerto nadie.
Es bastante simple pero vamos a ver algunos detalles.
Yo tengo la conexión aquí afuera.
Recuerden que la conexión queda guardado en una variable llamada mail SQL y esto es muy importante porque
después esta variable es la que yo voy a usar.
Por ejemplo ya llegamos acá no se preocupen para hacer más SQL y Cuadri y ejecutamos una consulta
pero acá se me presenta un problema más SQL y es una variable global que se puede usar en cualquier
parte del código pero no voy a poder usar dentro de una función.
Por qué.
Porque no hay comunicación digamos se acuerdan cuando vimos el alcance de las variables esta variable
que está acá afuera no funciona dentro de la función.
De hecho si yo creara un mail SQL y nuevo dentro de la función no tendrían nada que ver serían independientes
uno de otro.
A pesar de tener el mismo nombre por suerte ustedes se acuerdan de que había unas súper variables llamadas
globales y que poniendo como índice el nombre de la variable yo podía acceder dentro de una función.
Entonces miren este truco por así decirlo de truco tiene poco vuelvo a crear Veámoslo de esta manera.
Así vuelvo a crear una variable mi SQL y bueno así como está esta variable no tiene absolutamente nada
que ver con esta de acá arriba.
Pero ahora sí quedan vinculadas porque le estoy diciendo con esto
hoy vamos a usar o vamos a traer este Malle SQL y para dentro de la función.
Y ahora si este Maye se cuela y puedo decir que es lo mismo que esto de acá afuera
por qué me estoy adelantando y digo que voy a usar Maye SQL o vamos a operar con la base de datos dentro
de grabã imagen.
Si la imagen va grabada en archivos buenos pero en algún lugar tengo que dejar asentado cuál es la ruta
de la imagen por qué quiero asentar la ruta porque para cuando tenga que mostrarla voy a tener que recuperar
de la base de datos la ruta para poder mostrar el circulito.
No sé como estaba acá están las imágenes en dos lugares el círculo y el círculo.
Cuando entremos voy a tener que recuperar la dirección no el archivo.
La dirección de donde está grabado para esa dirección ponerla en etiquetas y M.G. para que aparezca
aquí Bueno empecemos a analizar la función graba imagen como es de costumbre ya preparó una variable
vacía llamada MSG.
Lo que vine acá es bastante parecido a lo que hicimos recién.
Miren es bastante bastante parecido si se toman algunas precauciones como filtrar el tipo de archivo
que viene vamos a filtrar o comprobar sería la palabra el tamaño porque qué pasa si nos suben un archivo
acumules supe comentar.
Si no me equivoco de 5 giga bueno sería tremendo para nuestro servidor.
Entonces veamos cómo opera en una variable y guardo la ruta muy similar a lo de recién guardo la ruta
final sería esto acá en inglés han puesto ruta objetivo no me parece mal y después se crea una variable
a donde dice Hublot OK o sea subida correcta.
Le ponen igual a uno.
Yo entiendo que es uno correcto sería incorrecto o fallido fallado bueno.
En esta línea de acá que parece algo complejo pero no lo es se utiliza nuevamente funciones preestablecidas
de PHP.
La primera está acá lo que haces.
Ya vamos a ver qué obtenemos aquí.
Lo baja todo a minúsculas por si hay alguna mayúscula de por medio luego saca la información con esta
función la información del archivo extrae el nombre y se queda solo con la extensión.
En definitiva acá está guardando la extensión si es png jpg y por qué lo pone todo en minúscula porque
si me están haciendo trampa porque después voy a comparar si el tipo de imágenes JPG y el tipo de imágenes
se PNG pero si me hacen trampa y me ponen una letra mayúscula y en una letra minúscula para sortear
mi sistema lo que hago es me asegura y pongo todo en minúscula se entiende.
Acabo de guardar la extensión del archivo.
Continuamos teniendo ya el tipo de archivo.
Vamos a utilizar de nuevo una función de PHP que mírense describe por su propio nombre Phil existe.
Le paso el Target Field la ruta completa y esta función lo que va a hacer es fijarse si no hay un archivo
ya con ese nombre si ese es el caso mensaje la imagen ya existe y cómo hacíamos para registro login
un B.R al final para ir concatenando y que me queden un mensaje debajo del otro
se acuerdan que habíamos empezado con un plot okey igual a uno bueno en cuanto yo detecto un error listo
ya lo pongo en cero.
A esto se dan cuenta ya vamos a ver cómo operamos con esto cómo tomamos un camino diferente ya que hemos
cambiado el estado de esta variable tan importante.
Esto también es fundamental aquí vamos a chequear.
No necesita mayor explicación sobre todo ya para colegas como ustedes.
Vamos a chequear el tamaño del archivo el tamaño máximo en el caso de que lo supere.
Bueno pongo un mensaje apropiado en la variable mensaje por supuesto por las dudas de que hubiera estado
en uno.
A la subida correcta que querría decir esta variable ya lo pongo en cero.
No no. Algo falló.
Otra cosa es que se quiera en el camino.
Por qué.
Porque tranquilamente podría haber dado bien.
Esto pasó bien seguimos con la variable en 1 pero nos encontramos con que nos están queriendo subir
un archivo punto PHP.
No no señor solo vamos a dejar subir archivos que sean de tipo jpg png J.P. y GIF como lo hago otra
vez de este gif si el archivo es distinto de JPG y es distinto de PNG.
En definitiva si no es ninguno de todos estos casos bueno.
Archivo un mensaje con mensaje y grabo algo que hable respecto a si obramos en consecuencia ya tenemos
descartado el hecho de que nos pongan un archivo que no corresponde con lo que esperamos y ahora sí
llegó el momento.
Si llegamos a este punto y esta variable es igual a cero en el mensaje le vamos a agregar también lo
siento la imagen no pudo subir.
Ahora bien si es igual a 1 aplico parte del código que habíamos visto recién se acuerdan.
Observad fail muevo el archivo temporal a un archivo definitivo utilizo Elif.
Por qué.
Porque quiero saber si es correcto bueno un nuevo mensaje y aprovecho y pongo la imagen acá está mal
el mensaje tomar la imagen y el nombre de la imagen con la ruta y todo ha sido subida.
Perdón si la ruta que estoy poniendo solamente el nombre de la imagen ha sido subida el nombre del archivo
de la imagen para ser exactos.
Si en este proceso hubo un error puedo decir también agregar acá para eso.
Así no pudo grabarse y agregar como mensaje hubo un error pero el error este es muy particular porque
es a la hora de grabar el disco.
La imagen viaja por las dudas le ponemos el Berk estimo que no haría falta porque eso sería el último
mensaje bueno
ahora si fue exitoso eso sería en este punto sólo si fue exitoso.
Yo voy a tener que actualizar la ruta de la imagen que voy a guardar en mi base de datos.
Entonces vuelvo al código acá tengo preparada la consulta miren que simple qué es.
Pero aparece un componente súper importante que quiero compartir con ustedes.
Bueno puedo utilizar tranquilo el mail SQL y por qué.
Porque eso dijimos lo trajimos gracias a global.
Dentro de la función QWERTY para aplicar una consulta y la consulta de alguna que ya sabemos usar.
Actualizar de la tabla usuarios y vamos a aceptar esta nueva columna que espera un parchar o string
que se llama usuarios imagen le vamos a aceptar.
Qué valor Target Field Target fail era la ruta más el nombre del archivo con la barra por supuesto pero
les pregunto yo.
Miren esto en mi tabla usuarios yo estuve borrando limpiando un poco de usuarios y me han quedado solo
dos.
Yo podría tener 100 200 mil usuarios.
Yo pregunto cuando actualice este valor se lo voy a actualizar a todos los usuarios no esta foto esta
dirección que ven acá hasta tengo grabada alguna prueba esta ruta a tirar un poco para que se vea mejor.
Ahora si esta ruta que tengo acá no se la voy a actualizar a todos por igual.
Solamente tengo que actualizarla en mi usuario en el que está el Oviedo entonces voy a tener que prestar
mucha atención en el Wer sestear Target Field en columnas en la columna perdón usuarios imagen donde
usuario.
Ahí sí hay igual y yo quiero poner mi usuario vi y se acuerdan que en el Lovin Miren voy a venir del
Lovin
miren lo que hacíamos.
Se acuerdan que habíamos activado variables de sesión y estábamos poniendo todas las variables dentro
de una variable de sesión y yo les dije el usuario Heydi lo vamos a usar a cada rato.
Bueno llegó el momento de usarlo quiero traer mi Heydi de usuario para filtrar y que solo se aplique
este cambio a mi propio usuario.
Entonces acabo de utilizar sesión en la red de variables de sesión y le voy a pasar como índice.
Usuarios Heydi porque en definitiva creo si no me equivoco mi user Heydi era el número 5.
Bueno pues bien todo esto se va a reemplazar por el 5.
Miren qué fácil y práctico.
Bueno entonces esto que tenías acá como anotador lo puedo borrar me queda esta última línea que la vamos
a subir y lo último que me queda hacer lo último que me queda hacer a verlo.
A ver pensemos dónde lo puedo hacer.
Lo voy a hacer aquí porque esto es cierto.
Por qué yo grabo en base de datos solo si es exitoso y porque yo no quiero modificar la ruta.
Si el archivo realmente no se pudo grabar acá pero el mensaje Yo lo quiero devolver tanto haya sido
exitoso o haya fallado la operación.
Entonces por las dudas yo lo pondría a esta altura después del IF después del
y también
después vendría a ser esto.
A estos se les yo lo pondría para asegurarme.
A esta altura ya cuando se termina la función de esto yo me estoy asegurando de que el mensaje sí o
sí siempre se devuelva.
Voy a hacer Reston
MSG devuelvo el mensaje a quien sea que me haya llamado diciéndole el resultado.
Esta última llave es la que cierra la apertura de la función.
Esta ruta la grabé manualmente para mostrárselas como quedaba una ruta adentro yo la voy a borrar.
Ahí está bien para borrar hice doble click y lo borré simplemente hice y se editó fácil vamos a volver
a la plataforma.
Voy a seleccionar cualquier imagen de prueba.
Vamos a ver qué tengo una bicicleta le voy a dar en actualizar
bueno acá veo algo que me desconcierta.
No tendría que haber tenido estos errores pero me encanta a compartir la verdadera programación.
Así así así suceden estas cosas en cuanto vi el error ya que ya me di cuenta en dónde había estado mi
falla y es que si estoy recibiendo archivos yo esta variable tiene que estar puesta de tal manera que
sea llenada por cual fuere el archivo que llegue y que estoy filtrando con estos índices de manera incorrecta.
Yo tengo que pasar todo lo que llega todo lo que sea que sean archivos por supuesto lo meto en esa variable.
Ahora sí porque mire vuelvo a funciones el encargado de filtrar y buscar el archivo el NIMH es acá dentro
de la función en sí bueno va a ser oportuno aprovechar ya que tuve un error.
Vamos a ver si hubo error y acá me grabó algo eso está mal.
No tendría que haber grabado nada Lehder en examinar bien no grabó nada por qué por error me quedo tranquilo.
Bueno por las dudas vuelvo a ingresar para que desaparezca desaparezcan los errores voy a darle a seleccionar
y voy a subirlo.
Vamos a poner la bicicleta que no se quiso subir ahí.
Probemos.
Bueno no mostró nada eso es porque todavía no agregamos la impresión de la variable mensaje por aquí
pero veamos primero si tenemos un archivo vici en nuestro ahora Berber aquí bien está vici a ver ahí
está ya surgió nuestro servidor.
Un buen paso un buen paso me motiva y me pone contento porque tengo la mitad del trabajo cocinado.
Ahora cuando tenga que subir videos más o menos lo mismo ya me lo voy a hacer mi idea es buena ahora.
Otro punto clave.
Tengo la ruta grabada aquí le voy a dar examinar de nuevo para que se actualice y ahí está miren archivos
barra Bize bien si todavía tengo dudas puedo venir acá.
Curso PHP tube y ahí va a pegar la ruta archivos o Arráiz y JPG Enter.
Y ahí tenemos la linda bicicleta.
Bueno agradezco que me acompañarán.
Seguimos en la próxima clase.