我正在使用Swift邮件程序生成一封电子邮件,当管理员用户为该用户创建帐户时,该电子邮件会发送给用户。我希望该电子邮件包含一个链接,该链接指向只有该用户才能访问的帐户注册页面。
我必须做些什么才能使注册页面仅供该用户访问?
答案 0 :(得分:0)
任何用户都可以访问该页面(因为如果通过邮件链接点击它将是一个GET请求),所以诀窍是使常规访问者找到一个困难的URL。只需创建一个您选择的随机字符串(最好与数据库中的每个用户唯一关联),并追加它到您希望用户访问的页面:
$id = rand(1, 100000); // Grab the unique string from your database here
echo "<a href='page.php?id='" . $id . ">Registration link</a>";
然后,要检查有人访问该页面时是否设置了此ID变量,您可以检查$_GET
参数:
if(isset($_GET['id'] && !empty($_GET['id'])) {
// Code here will be executed on any ID in page.php?id=[any]
}
如果您想检查特定字符串,可以使用:
$id = 1337;
if($_GET['id'] == $id) {
// Code here will only trigger when visiting page.php?id=1337
}
您还可以通过设置检查登录用户的ID是否与$_GET
参数匹配来检查特定用户是否正在访问该页面:
$id = '' // Grab the user's ID from your database here
if(isset($_GET['id'] && !empty($_GET['id']) && $_GET['id'] == $id) {
// Code here should be written based on the user being logged in
}
很遗憾没有办法阻止别人猜测&#39;您拥有与ID $_GET
相关的代码,因为电子邮件无法在POST
中打开链接。根据特定 GET
请求限制内容是最好的选择,因为有人难以猜测参数所需的确切值。
对于您的具体情况,您应该完全正常使用上面的1337
代码。只需在电子邮件中设置<a href>
链接即可使用该特定值。
希望这有帮助! :)