【发布时间】:2010-11-03 18:16:01
【问题描述】:
我正在制作一个画廊网站。默认情况下,照片和相册应该对公众隐藏,但所有者可以根据需要共享公共 URL。我也想为此使用短 URL。
我正在尝试找出最好的方法来做到这一点。起初我以为我可以有一个带有短 URL 代码(类似于Zneg8rjK)和完整 URL(/album/5/)的 MySQL 表。当用户访问此链接 (mysite.com/Zneg8rjK) 时,它会设置一个会话变量,该变量只是 /album/5 加上一个盐的哈希值,然后将它们重定向到完整的 URL。然后在该页面上,我可以重新散列当前页面并检查它是否在他们的会话中。没问题...但是当他们单击该相册中的照片时会发生什么?它坏了。
所以,我想到的下一个解决方案是,我应该为每张专辑和每张照片存储一个密钥,然后拥有一个像 /album/5/secretkey 这样的公共地址。短 URL 可以只指向这个。但是,如何授予用户查看相册中所有照片的权限?我是否应该只链接每张照片以指向照片 URL 的秘密版本,但前提是他们通过秘密相册 URL 访问相册?我担心的是我想尽可能地将密钥/URL 保留在地址栏中,这样用户就不会意外与他们不应该与他们分享的人分享它……但如果没有的话,这不是一个大问题。没有更好的解决方案。
想法?
等一下,我还需要对 URL 进行哈希处理吗?客户端没有办法修改会话变量吗?
【问题讨论】:
-
画廊的结构是什么?如果不知道它是如何设置的,以及当用户与图像交互时会发生什么等情况,这是一个相当不可能回答的问题。
-
我不确定你的意思?下面的答案对我来说听起来不错。每张照片都属于一个相册...您还需要什么?没有什么是一成不变的。当用户试图查看一张图片时,它会检查他是否有查看该图片的权限,然后要么显示给他图片,要么告诉他别管它。
标签: php mysql authentication permissions