【问题标题】:Url rewriting with user id使用用户 ID 重写 URL
【发布时间】:2015-01-16 17:00:02
【问题描述】:

我想转换这个网址:

http://example.com/users_images/image.jpg

进入:

http://example.com/users_images/user_123/image.jpg(123 是存储在会话中的用户 ID)

这可以通过 url 重写来做到这一点吗? 如果没有,你是如何处理这种问题的? 我不希望我的用户访问其他用户的文档。

谢谢

【问题讨论】:

  • 图像存储在哪里? “users_images”还是“users_images/[用户名]”?
  • users_images/[用户名]。我希望他们都使用相同的链接来访问他们的图像。所以他们无法猜测其他目录
  • 简单的方法,使用重写将image.jpg映射到像getimg.php这样的php文件,然后使用会话读取图像并将其发送到浏览器
  • 无论如何您都需要保护目录。 URL 重写不能保护您免受用户猜测其他目录的影响。您可以使用example.com/getUserImage.php?image=image.jpg 并通过 PHP 返回图像。
  • @PouyaDarabi 对不起,我写的基本一样,但你更快。

标签: php .htaccess url-rewriting


【解决方案1】:

无法从 .htaccess 中的 php $_SESSION 数组中读取值以进行 url 重写。你可以做的是读出%{HTTP_COOKIE},这样你就可以把它存储在那里,但我会避免这种做法。

我会创建一个文件夹来存储图像并在其中放置一个包含以下内容的 .htaccess 文件,以防止每个用户都访问它:

Deny from all

然后我会制作一个 php 脚本,负责读取会话变量,并使用 php 函数fpassthrough() 将图片传递给用户。可以调用 php 脚本,例如请求图像时:

RewriteRule users_images/(.*) /getpicture.php?image=$1 [L]

【讨论】:

  • 好吧,既然 3 个人告诉我这样做,我就这样做。我之所以接受这一点,是因为代码示例和对 cme​​ts 的支持也很好。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多