elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [como hacer esto][php] borrar archivos después de visualización en el cliente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [como hacer esto][php] borrar archivos después de visualización en el cliente  (Leído 2,889 veces)
LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
[como hacer esto][php] borrar archivos después de visualización en el cliente
« en: 15 Abril 2015, 23:28 pm »

Buen dia..

Estoy tratando de generar un archivo 'directorio1/pagina.php'
y lo que quiero es que el contenido de pagina.php solo se visualice una ves y se borre...
main.php
Código
  1.  
  2.   mkdir('directorio1');
  3.   $contenido="<html><body><img src='./archivos/imagen1.png'/></body></html>";/*Esta imagen se creara tambien desde php pero eso ya lo tengo resuelto*/
  4.   $fp=fopen("directorio1/pagina.php","w");
  5.   fwrite($fp,$contenido);
  6.   fclose($fp) ;
  7.   header("Location: /directorio1/pagina.php");
  8.   rmdir("directorio1");
  9.  /*que debo hacer para borrar todo el directorio una ves el cliente obtenga todo el contenido*/
  10.  
que debo hacer para borrar todo el directorio una ves el cliente obtenga todo el contenido?

Mod: no escribir en mayúsculas... hay herramientas para resaltar texto


« Última modificación: 16 Abril 2015, 17:56 pm por engel lex » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [COMO HACER ESTO][PHP] Borrar archivos después de visualización en el cliente
« Respuesta #1 en: 16 Abril 2015, 17:25 pm »

No entiendo cual es el proposito de esto pero creo que rmdir necesita ejecutarse en pagina.php:

Código
  1.   <?php
  2.   mkdir('directorio1');
  3.   $contenido="<html><body><img src='./archivos/imagen1.png'/></body></html><?php rmdir('directorio1'); ?>";/*Esta imagen se creara tambien desde php pero eso ya lo tengo resuelto*/
  4.   $fp=fopen("directorio1/pagina.php","w");
  5.   fwrite($fp,$contenido);
  6.   fclose($fp) ;
  7.   header("Location: /directorio1/pagina.php");
  8.   ?>


En línea

LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: [como hacer esto][php] borrar archivos después de visualización en el cliente
« Respuesta #2 en: 22 Abril 2015, 21:34 pm »

No entiendo cual es el proposito de esto pero creo que rmdir necesita ejecutarse en pagina.php:


1- Imagina una aplicación web que procesa una base de datos con imágenes... (es necesario convertir cada imagen codificada en "base64" a un archivo .jpeg).
¿por que? pues por que si intentas copiar una imagen que se muestre con base64, por alguna razón al pegar la selección en word no pega las imágenes solo el texto...

Y necesito liberar todo ese espacio una vez ya se encuentre en el cliente... es decir que ya este almacenada en la carpeta temporal del cliente...
(corrígeme si estoy mal)

2- si había pensado en esa solución pero me surgió la duda si borro las imágenes se alcanzaran a cargar en el cliente.. necesitaría como un listener que me diga que ya se cargo todo el contenido de la pagina resultante del proceso, junto con todas las imágenes...

Que me podrías sugerir?
« Última modificación: 22 Abril 2015, 21:36 pm por Effort » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [como hacer esto][php] borrar archivos después de visualización en el cliente
« Respuesta #3 en: 22 Abril 2015, 22:54 pm »

No necesitas guardar la imagen en tu sistema de archivos puedes usar GD para desplegar la imagen directamente desde la base de datos.
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: [como hacer esto][php] borrar archivos después de visualización en el cliente
« Respuesta #4 en: 26 Abril 2015, 17:10 pm »

1- Imagina una aplicación web que procesa una base de datos con imágenes... (es necesario convertir cada imagen codificada en "base64" a un archivo .jpeg).
¿por que? pues por que si intentas copiar una imagen que se muestre con base64, por alguna razón al pegar la selección en word no pega las imágenes solo el texto...

Y necesito liberar todo ese espacio una vez ya se encuentre en el cliente... es decir que ya este almacenada en la carpeta temporal del cliente...
(corrígeme si estoy mal)

2- si había pensado en esa solución pero me surgió la duda si borro las imágenes se alcanzaran a cargar en el cliente.. necesitaría como un listener que me diga que ya se cargo todo el contenido de la pagina resultante del proceso, junto con todas las imágenes...

Que me podrías sugerir?

Las imagenes no se guardan en base64 dentro de una base de datos, provocas que al intentar indexar la columna termines agotando la memoria del servidor, para eso existen los campos de tipo blob aunque de todas maneras para almacenar imagenes se utilizan servidores estáticos o cdn y no base de datos, imagina si un millon de usuarios intentara solicitar imagenes, terminas con la base de datos abajo y sin portal, en cambio en un servidor de archivos puedes manejar caché entre otras cosas y no pasas por ninguna base de datos. Luego creas un cron que rastree y elimine todas las imagenes que tengan cierta edad aprovechando que los archivos tienen la propiedad de fecha de creación (por ejemplo los que tengan mas de 1 día).

De todas maneras hay una manera de entregar un archivo y eliminarlo pero te va a costar mucha CPU y se trata de que el usuario descargue el archivo solicitandolo a un script en php y este obtenga el archivo con fopen y recorra los bytes de a 2048 y al finalizar que cierre con un fclose y ejecute un "unlink()" el cual se encarga de eliminar el archivo. Es necesario agregar en la parte superior de ese script la opción de que no finalice al finalizar el navegador ya que si el usuario cancela la descarga no se ejecutará el eliminado del archivo, asi que pones esto:

Código:
ignore_user_abort(true);

Y eso hará que cuando yo cancele la descarga el servidor continuará con el código hasta llegar al unlink.

Pero como te vuelvo a decir... a menos que tengas un servidor con muchos núcleos y una velocidad considerablemente alta y varios balanceadores, no lo hagas, por último almacenalos y ve eliminandolos por fecha y si es posible no uses archivos, por ejemplo si deseas desplegar un captcha puedes generarlo con la librería GD y luego desplegarlo y listo, no necesitas guardar archivos:

http://php.net/manual/es/function.imagecreatetruecolor.php
https://github.com/mkoppanen/imagick/blob/master/examples/captcha.php
En línea

LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: [como hacer esto][php] borrar archivos después de visualización en el cliente
« Respuesta #5 en: 27 Abril 2015, 20:58 pm »

Las imagenes no se guardan en base64 dentro de una base de datos, provocas que al intentar indexar la columna termines agotando la memoria del servidor, para eso existen los campos de tipo blob aunque de todas maneras para almacenar imagenes se utilizan servidores estáticos o cdn y no base de datos, imagina si un millon de usuarios intentara solicitar imagenes, terminas con la base de datos abajo y sin portal, en cambio en un servidor de archivos puedes manejar caché entre otras cosas y no pasas por ninguna base de datos. Luego creas un cron que rastree y elimine todas las imagenes que tengan cierta edad aprovechando que los archivos tienen la propiedad de fecha de creación (por ejemplo los que tengan mas de 1 día).

De todas maneras hay una manera de entregar un archivo y eliminarlo pero te va a costar mucha CPU y se trata de que el usuario descargue el archivo solicitandolo a un script en php y este obtenga el archivo con fopen y recorra los bytes de a 2048 y al finalizar que cierre con un fclose y ejecute un "unlink()" el cual se encarga de eliminar el archivo. Es necesario agregar en la parte superior de ese script la opción de que no finalice al finalizar el navegador ya que si el usuario cancela la descarga no se ejecutará el eliminado del archivo, asi que pones esto:

Código:
ignore_user_abort(true);

Y eso hará que cuando yo cancele la descarga el servidor continuará con el código hasta llegar al unlink.

Pero como te vuelvo a decir... a menos que tengas un servidor con muchos núcleos y una velocidad considerablemente alta y varios balanceadores, no lo hagas, por último almacenalos y ve eliminandolos por fecha y si es posible no uses archivos, por ejemplo si deseas desplegar un captcha puedes generarlo con la librería GD y luego desplegarlo y listo, no necesitas guardar archivos:

http://php.net/manual/es/function.imagecreatetruecolor.php
https://github.com/mkoppanen/imagick/blob/master/examples/captcha.php


Te diré exactamente a que base de datos me refiero... me refiero a la base de datos de whatsapp... almacena una previsualizacion de las imagenes compartidas.... y quiero hacer una pagina que subas esa base de datos y con un script de python extraer esas imagenes convertirlas en archivos y luego enviarlas al cliente y hacer lo que ya comentaba liberar todo ese espacio.... 
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: [como hacer esto][php] borrar archivos después de visualización en el cliente
« Respuesta #6 en: 30 Abril 2015, 13:33 pm »

Watsapp no guarda las fotos y videos en la base de datos, watsapp usa Sqlite 3 y lo único que guarda son las rutas a los archivos porque los archivos están almacenados en la tarjeta de memoria principal en una carpeta llamada Watsapp/Media.

En ese caso lo que puedes hacer es mover el archivo a un directorio público temporal y que el mismo proceso verifique los directorios temporales que tengan mas de 1 hora de antiguedad.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como hacer un cliente para latinchat
Programación Visual Basic
elLFaNtAsMa-pc 1 4,654 Último mensaje 24 Septiembre 2005, 02:31 am
por NYlOn
Visualización de archivos pcap online
Dudas Generales
Novlucker 1 4,428 Último mensaje 22 Julio 2010, 00:07 am
por Fahrenheit77
Problema de archivos DATA poniendo mi pc como cliente
Hacking Wireless
karlostek 7 4,245 Último mensaje 25 Octubre 2011, 10:23 am
por ChimoC
Ayuda ¿como hacer un cliente https?
PHP
joz_z 2 2,363 Último mensaje 3 Marzo 2014, 18:32 pm
por joz_z
Cómo borrar la cuenta de Google automáticamente después de fallecer o un ...
Noticias
wolfbcn 0 2,966 Último mensaje 3 Julio 2018, 21:33 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines