我正在尝试建立一个考勤系统,在该系统中我标记了员工的考勤,而我单击了该链接。因此,每当员工按下按钮时,我都会收到一封带有拒绝信息的电子邮件,并接受URL。我尝试传递的URL中将包含可变数据,例如:
http://website.com/page.php?id=123&username=abc
然后使用$_GET['id],
$_GET['username'].
,但是我看到的问题是,如果用户知道URL和URL,那么他们可以只传递他们的信息来执行我要在此处执行的过程。他们的ID
。
有更安全,更好的方法吗?
答案 0 :(得分:2)
我的意见是
如果用户单击了该链接,则不需要该param。而是将其存储在会话中,然后进行检查!
对于管理员,该参数没有问题。您只需要检查当前用户会话是否具有管理员角色,或者是否仅显示权限错误 >
答案 1 :(得分:1)
希望您知道发帖的方式。这就像我们发的信一样。您必须先打开它才能看到其中的内容。因此,请使用POST方法。您可以执行类似的操作。在这里,我假设用户已登录系统,然后通过会话将获取并存储用户数据。然后将它们分配到隐藏的输入字段中。
<?php
session_start();
if (isset($_SESSION['UserName'])) {
?>
<form action="http://website.com/page.php" method="post">
<input type="text" value="<?=($_SESSION['UserName']);?>" name="username" hidden>
<input type="text" value="<?=($_SESSION['UserId']);?>" name="userid" hidden>
<button type="submit" name="submit">Confirm Your attendance</button>
</form>
<?php
}else{
header('Location: login.php');
}