我的web应用程序非常简单。有两个按钮:一个称为"保存",另一个名为"显示我的图像"。基本上,用户可以从Facebook API保存图像,并将其存储在名为"备份"的服务器文件夹中(在服务器上备份他们的图像,以便如果他们从FB中删除了FB或图像,他们将有备份)。
-
当用户单击"保存"时,图像将存储在两个位置。图像URL将存储在SQL数据库中,但也将保存在名为"备份"的服务器文件夹中
-
当他们点击"显示图像"时,它将从数据库中检索图像的URL并显示图像。但是,当调用
checkImage()
时,它将检查图像URL是否有效。如果它无效,它将从服务器文件夹"备份"中检索相同的映像。
我不希望管理员访问备份文件夹并能够看到所有用户的图像。
在图像保存在服务器上的备份文件夹中之前,我想对用户图像进行编码,当他们请求图像时,它将解码并显示。
这可能吗?
我之所以想这样做,是因为我担心FB图像的URL会被破坏,因此图像不会显示在网站上。
function checkImage($url) {
if (@getimagesize($url)) {
echo "image exists ";
} else {
echo "image does not exist";
}
}
是的,这是可能的,也是一件好事
我已经在这类系统上工作过,我在类似谷歌硬盘或dropbox的网站上工作过。用户文件的安全/隐私是第一位的,你所说的非常有效和合理。
让我向你解释一下你可以做些什么来实现这一点,这样即使管理员/任何人都可以通过ftp访问该文件夹,他/她也根本看不到图像。
当你将图像保存到数据库中,并保存facebook的链接以检查其是否有效时,还保存图像中的以下信息,以便以后使用它们来解密图像。
- 文件大小
- 图像类型
- 图像扩展
- 图像原始名称
- 图像加密名称
- 图像路径
- 图像用户
- 用户路径
现在让我来解释一下这些列对您的系统意味着什么。
文件大小显然是您保存到服务器的图像的大小,以防您需要了解服务器的信息。
图像类型应该是类似于image/jpeg
或image/png
的文件类型
图像扩展应该是图像的扩展,您需要使用它来解密系统内的图像。
图像原始名称也应用于系统解密图像以显示原始图像名称
比方说,php的headers
函数内部将使用图像原始名称+图像扩展名。
图像加密名称,这将是一个没有文件扩展名的随机字符串,例如:
假设你有一个名为:myimage.jpeg
的图像,现在你要做的是将原始文件名和扩展名保存到数据库中,然后在使用php的move_uplooaded函数将文件移动到用户的文件夹中(文件夹也可以是每个用户唯一的随机字符串),然后只需将上传过程中的文件重命名为类似823982j3kkj2hjh3j2h323hj2h3jh23jh
的文件,只是一个名为文件夹的随机字符串中没有扩展名的随机字符串,该文件夹与用户相关,即使用户也不知道,并将该随机字符串名称与图像的其他详细信息一起保存,稍后您需要识别图像并将其重命名为具有扩展名的原始图像。
图像路径应该是图像文件夹的完整路径,您需要它来识别存储图像的文件夹
图像用户这显然是用户的id
用户路径这是一个随机字符串命名的文件夹,图像将存储在中
通过这种方式,你将加密图像,它将只对用户可见,只有从系统的功能,甚至管理员将无法识别连接到用户的文件夹或文件,文件将在没有扩展名和原始名称的情况下保存,因此只有系统能够解密它。
我希望我已经给你一个如何做到这一点的想法。