我想实现一个系统,我想知道POST请求的来源。
例如:我有一个带有提交按钮的表单。当用户点击提交按钮时,它会转到该页面。但是我想知道发布请求的来源。
这是现在的代码:
<form action="profile.php?id=<?php echo $user->id; ?>" method="post" name="formAdd"><input name="btnAddUser" type="submit" value="Add User"></form>
我应该使用隐藏的输入元素吗?这会是一个好方法还是别的什么?
答案 0 :(得分:3)
首先,没有可靠的方法 - 用户可以根据需要篡改请求。
除此之外,有两种方法可以获得您想要的信息:
$_SERVER['HTTP_REFERER']
获得:它包含请求来自的完整URL,但有些人使用扩展/防火墙/等。阻止甚至恶搞参考者答案 1 :(得分:1)
答案 2 :(得分:1)
这实际上取决于您需要它的安全性和可靠性。隐藏的表单字段可以工作,但这意味着您需要将其添加到指向您的处理脚本的每个表单。如果有人想要它也很容易伪造。或者你可以使用$ _SERVER ['HTTP_REFERER']。这并不总是可靠的 - 我相信它确实取决于您使用的浏览器,但在大多数简单的场景中应该足够好。另一种选择是在会话中存储一些内容并使用它。这可能是最安全的,因为它是所有服务器端并且不能被篡改,但它可能是最难实现的(不是它的火箭科学)。
答案 3 :(得分:0)
您可以将页面保存在会话变量中($ _SESSION [“something”] =“page.php”),这是最安全的方式,我认为,因为表单中的隐藏输入可以由用户和$ _SERVER ['HTTP_REFERER']并不总是可用。
答案 4 :(得分:0)
我会使用隐藏字段,其中value =“name_of_referring_page”。 这样,无论用户的设置,防火墙,浏览器等,您都可以获得所需的信息。