我想在加载后隐藏ID中的ID GET参数,但保留数据。
基本上,我为用户提供了公开私有页面的选项,但不希望人们能够看到监视列表的ID,因为他们可以随后更改号码并查看任何人的关注列表,而不仅仅是用户决定公开的一个特定监视列表。
使监视列表公开的原始按钮如下:
<a href="watchlist-download.php?id=<?php $watchlist_id; ?>"
class="btn btn-primary btn-block download-pdf" title="Download Watchlist PDF">
<i class="icon-share icon-white"></i> Share Watchlist
</a>
然后,需要使用监视列表ID来填充结果页面(例如,页面返回与数据库中的监视列表ID关联的项目列表),因此ID必须位于URL中(或者,它需要某处)来获取正确的内容,但用户不应该在URL中看到它。
我不确定这是否真的可以实现。如果您还需要更多信息/代码片段,请询问!不知道人们需要什么才能解决这个问题,所以如果你让我知道你需要什么/什么是相关的(如果有的话),我会发布它。
感谢您的帮助!
答案 0 :(得分:2)
另一个建议是使用随机哈希,例如链接到您的监视列表的md5。您可以在创建关注列表时生成一个。
要在php中生成唯一的md5哈希,您可以使用:
$unique_hash = md5(uniqid(rand(), TRUE));
假设您有一个包含监视列表的数据库表:
id_watchlist | name | hash
然后例如以下内容:
1 | watch 1 | 41ad0f218d400e4a1bcfdf9e762163e7
2 | watch 2 | e82fd1f16c23fd04e7893afc41e6a358
然后使用哈希而不是id来获得相应的关注列表。
<a href="watchlist-download.php?hash=<?php $watchlist_hash; ?>"
class="btn btn-primary btn-block download-pdf" title="Download Watchlist PDF">
<i class="icon-share icon-white"></i> Share Watchlist
</a>
例如:
http://www.example.com/watchlist_download.php?hash=e82fd1f16c23fd04e7893afc41e6a358
因此,最终只能更改网址中的ID,并且仍可通过普通链接访问监视列表。
答案 1 :(得分:1)
听起来我想要使用$_POST
代替$_GET
<form method="post" action="watchlist-download.php">
<input type="hidden" value="<?php echo $watchlist_id ?>"
<button type="submit" value="Go">Share Watchlist</button>
</form>
要回答您的其他问题,确保手头的用户无法看到其他人的视频,您需要创建一个数据库,每个用户都会有一个唯一的用户ID,当用户转到视频时,您将查询数据库以确保查看的视频与当前用户相关联。您很可能会有一个名为user_video
的表格,其中会存储user_id
以及video_id
答案 2 :(得分:0)
如果您将id
放在页面中的任何位置(无论是否在URL中),它就不再是私有的了。保护URL参数的最佳方法是生成随机哈希并将数据库中的URL保存到该哈希值。
您的监视列表网址将类似于/watchlist-download.php?get=e7b3418ab97e75deade429cb8da1dce4
,然后在数据库中查找散列并获取原始网址,在内部解析并为查看者提供所需内容。
如果仅在内容所有者的要求下生成此哈希,它还将阻止CSRF攻击。