大家好我正在制作一个小图片上传网站。我发现了一个问题可以解决,我会告诉你。
我使用foreach
来显示每个图像,因此html中的1个图像如下所示:
<a href="edit.php?id=ID_OF_PIC"><img src="IMG_PATH"></a>
用大写字母写的东西只是例子,但有工作价值。在edit.php
中,id
用于更新图片名称。但如果我是一个偷偷摸摸的聪明黑客,我可以更改id
中的href
,并且像这样我可以更改另一篇文章。那么如何/在哪里可以保存/隐藏id
以便没有人可以更改它?
答案 0 :(得分:1)
简单解决方案:使用表格foreach图像。像:
<form action="edit.php" method="post">
<input type="hidden" value="ID_OF_PIC" name="id">
<input type="hidden" value="TOKEN" name="tokenID_OF_PIC">
<img src="IMG_PATH"><input type="submit" value="edit">
<form>
在发送表单之前,请创建TOKEN并将其保存在与ID相关的会话中。
$_SESSION['tokens'][ID_OF_PIC]='TOKEN_FOR_ID_OF_PIC';
TOKEN应该是每个图片ID的唯一字符串。
发布表单时,您获得了id和令牌。 您知道可以检查ID和TOKEN是否有效。
if($_SESSION['tokens'][ID_OF_PIC]==$_POST['tokenID_OF_PIC']){}
因此,这允许用户仅编辑服务器通过带有正确令牌的表单发送的图片。
但是,当IMG_PATH中还有ID时,这并不会阻止用户在浏览器中打开pic normal来查看它。
答案 1 :(得分:1)
@Qirel找到了一个简单的解决方案。实际上并不是很难做到这一点。在我的示例中,我只需要检查编辑图像的用户是否是图像的所有者。