【发布时间】:2012-02-28 18:47:38
【问题描述】:
我正在使用 Yii 框架开发一个网站。在我的网站上,我有用户资料(已经实施)。我将有一个文件上传器,以便用户可以上传个人资料图片。一些个人资料可能对公众开放,其他个人资料将是私人的。公共用户应该无法访问私人个人资料,并且除了个人资料所有者之外,任何人都可能无法访问此个人资料中的图像。
我了解到将图像存储在 MySQL 数据库中是一个坏主意,因为它会降低性能并且可能在我的虚拟主机上被禁止。我曾考虑将图像存储在受保护的目录中,但如果在这里完成,我将根本无法链接到图像。那么我如何才能在有效的个人资料(公共个人资料或属于用户的个人资料)上显示图像?
任何提示或想法将不胜感激(与 Yii、php 或任何其他相关)。如果我的问题不清楚,请告诉我。谢谢。
*顺便说一句,我从来没有上过正式的 Web 开发课程,而且和许多其他人一样,我在自己的时间里学到了我所知道的一切,所以我很可能错过了一个非常简单/明显的解决方案。
【问题讨论】:
-
听起来像是您需要解决的架构的实现。您应该存储他们的用户类型(私人或公共),然后在查看者尝试查看某人的个人资料时进行检查。如果他们没有以他们试图查看的个人资料的(私人)用户身份登录,请不要向他们显示任何内容。
-
感谢您的回复。我想我对此并不完全清楚。我已经按照您的建议实施了它(对于私人和公共用户。破解 url 的用户会被发送到某个错误页面/拒绝访问页面)。但是,我担心“聪明”的用户仍有可能通过一些 url hack 访问私人用户的图像(因为图像存储在公共域中)。如上所述,我不想将其存储在受保护域中的原因是我根本无法在用户页面上显示图像,但也许我的想法是错误的?