Php 如何创建一个特殊链接,以便单击该链接的用户可以访问某个注册页面?

Php 如何创建一个特殊链接,以便单击该链接的用户可以访问某个注册页面?,php,laravel,Php,Laravel,我使用Swift mailer生成一封电子邮件,在管理员用户为该用户创建帐户时发送给该用户。我希望该电子邮件包含一个链接,该链接指向只有该用户才能访问的帐户注册页面 我必须做些什么才能使注册页面仅可供该用户访问 任何用户都可以访问该页面(因为如果通过邮件链接单击,它将是一个GET请求),所以技巧是使其成为普通访问者难以找到的URL。只需创建您选择的随机字符串(最好是与数据库中的每个用户唯一相关),然后将其附加到您希望用户访问的页面: $id = rand(1, 100000); // Grab

我使用Swift mailer生成一封电子邮件,在管理员用户为该用户创建帐户时发送给该用户。我希望该电子邮件包含一个链接,该链接指向只有该用户才能访问的帐户注册页面


我必须做些什么才能使注册页面仅可供该用户访问

任何用户都可以访问该页面(因为如果通过邮件链接单击,它将是一个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 = 1337;
if($_GET['id'] == $id) {
  // Code here will only trigger when visiting page.php?id=1337
}
您还可以通过设置检查登录用户的ID是否与
$\u GET
参数匹配来检查特定的用户是否正在访问该页面:

if(isset($_GET['id'] && !empty($_GET['id'])) {
  // Code here will be executed on any ID in page.php?id=[any]
}
$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
}
不幸的是,由于电子邮件无法打开
POST
中的链接,无法阻止有人“猜测”您有与ID相关的代码。基于特定的
获取
请求限制内容是最好的选择,因为有人很难猜出参数需要的确切值

对于您的具体情况,只需使用上面的
1337
代码就可以了。只需将电子邮件中的
链接设置为使用该特定值即可

希望这有帮助!:)

可能重复的