2012-04-01 20 views
7

Supongamos que el usuario A tiene algunas imágenes en su cuenta en Facebook que puede ver después de iniciar sesión.restrinja el acceso a los archivos de imagen para usuarios que inician sesión solo en php

Si el usuario A cierra la sesión y se prueba la url de una de esas imágenes, aparece el mensaje "restricción de acceso".

Piense en un sitio de redes sociales construida en PHP.

¿Cómo lograr ese tipo de control para que NO se puedan ver imágenes sin iniciar sesión en el sitio SOLO como lo hace Facebook?

Respuesta

12
  • Mueva todas las imágenes a una carpeta a la que no se puede acceder desde la web.
  • Implemente un script php (image.php) que compruebe si el usuario ha iniciado sesión y acepta un nombre de imagen como entrada (por ejemplo, image.php? Name = flower.png).
  • Si el usuario está conectado, enviar la imagen de tipo de contenido adecuado header()http://il2.php.net/manual/en/function.header.php (image/png por ejemplo)
  • leer el archivo desde el disco y lo enviará al usuario mediante readfile()http://php.net/manual/en/function.readfile.php.
  • Asegúrese de que las personas no puedan acceder a los archivos fuera del directorio de imágenes enviando algo como /images.php?name=/etc/hosts (sería mejor aceptar una ID de imagen en lugar de un nombre de archivo, o un hash del nombre de archivo, puede utilizar md5()http://il2.php.net/manual/en/function.md5.php para generar el hash pero recuerde que debe nombrar los archivos de imagen de acuerdo a sus valores hash MD5, en este caso siempre buscar el archivo de imagen sólo en el directorio de imágenes).
  • Si el usuario no está conectado, puede enviar una imagen personalizada que dice "Entra en la cuenta" o simplemente termina el script.
+0

supongamos que la imagen url es mysite.com/images/img.jpg. Si es golpeado esta url, cuando el guión se image.php ser ejecutado/ –

+0

El atributo 'src' de la imagen debe ser: mysite.com/image.php?name=img.jpg por lo que image.php guión controlará la acceder al archivo de imagen y mostrarlo solo en caso de que el usuario solicitante esté conectado. Si no está conectado, el script debe finalizar la ejecución; de lo contrario, el script debería 'readfile ('ruta/imágenes/img. jpg ') 'para enviar la imagen al usuario (no olvide utilizar' header() 'para establecer el tipo de contenido apropiado. – Yaniro

+0

si la url es mysite.com/images/img.jpg, que atributo src va a tratar de leer? –

Cuestiones relacionadas