我制作了一个充当待办事项列表的PHP脚本。在管理员端(只是admin.php),有一个显示表,这个表从mysql中的待办事项列表中获取每个记录,然后在每个记录旁边放置一个删除按钮。
每个删除按钮都有一个锚标记,其ID基于mysql中的特定关联行。因此,当有人点击删除按钮时,网址会转到/remove.php?id=ROWID
问题是有人可以从任何具有正确rowid的页面输入该URL,他们可以删除数据。在remove.php上,我使用$_GET
方法来获取ROWID。我可以制作一个表格并拥有该POST,我在网站上有其他功能。但即使是那些人,如果有人输入add.php,他们仍然可以访问php脚本中的添加功能。
我尝试使用session_start()启动会话;在admin.php页面中(最终将仅锁定到具有管理员权限的经过身份验证的用户),但如果有人知道该链接,即使没有在会话中,他们仍然可以转到/remove.php?id=ROWID
,或者说明来自admin.php的会话
我错过了什么吗?有没有办法阻止对经过身份验证的用户或会话内的用户访问remove.php?
答案 0 :(得分:0)
感谢上述帖子,
我用过:
if (isset($_SESSION['ID'])){
code goes here for if they are authenticated
}else{
die("You're not logged in as admin");
}
这将在page1.php和page2.php上启动会话,检查会话是否从page1启动。如果没有,将显示错误(骰子)消息。
如果您希望基于一段时间使用户的会话到期,请使用以下示例: http://thisinterestsme.com/expire-php-sessions/