【问题标题】:Starting PHP session from email link从电子邮件链接开始 PHP 会话
【发布时间】:2012-02-25 23:58:57
【问题描述】:

我有一封电子邮件,其中包含我已发送给潜在客户的各种产品的链接。单击链接时,我想将用户带到带有表单的页面。根据他们点击的产品链接,我希望隐藏输入字段的值等于产品名称。

我还希望该页面只能通过电子邮件中的链接访问。

我该怎么做呢?

【问题讨论】:

  • 您的服务器无法确定该链接是否实际上是从电子邮件中单击的。任何人都可以输入链接并访问同一页面。

标签: php session post cookies get


【解决方案1】:

电子邮件中的链接可能类似​​于

http://example.com/my-script.php?email=<email_address>&token=<token>

&lt;token&gt; 值由您的脚本(以秘密方式)根据电子邮件地址计算;然后在 my-script.php 上检查接收到的令牌值是否有效(通过再次从电子邮件地址计算令牌并比较两者)。

当然,知道此链接的任何人都可以访问该页面,但他们无法更改电子邮件地址的值。为防止这种情况发生,您必须拥有用户帐户,并且用户需要登录

【讨论】:

  • 电子邮件可以是电子邮件哈希,使其更安全。
【解决方案2】:

你的第一个问题很简单。您只需使用 URL ($_GET['pruduct_name']) 中的参数并将其放入隐藏输入的值字段中,例如:

<input type="hidden" value="<?php echo $_GET['product_name']; ?>" />

使 URL 只能通过电子邮件链接访问是相当困难的。

【讨论】:

    【解决方案3】:

    当您发送电子邮件时,您可以生成一个随机的字母数字序列,将其添加到 URL yourdomain.com/page.php?id=sdlasjh234897dhaksjhda 的查询字符串中,并连同它所连接的产品一起保存到您的数据库中。

    当用户到达页面时,您检查数据库中的该 ID。如果它不在您的数据库中,则显示链接无效的消息。否则显示表单并使用您保存在数据库中的产品名称以及您的 ID 填充隐藏的输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2013-08-30
      相关资源
      最近更新 更多