Php 控制试用订阅的访问

Php 控制试用订阅的访问,php,mysql,security,authentication,Php,Mysql,Security,Authentication,我的任务是建立一个系统,允许我们公司的人发送一封带有pdf文件链接的电子邮件,该文件将保存在我们的Web服务器上。收件人可以通过链接查看我们通常销售的新闻稿。我们的想法是这样做三个月,然后看看他们是否愿意继续并支付全额订阅费 我已经建立了注册部分,但我正在努力找到发送电子邮件的最佳解决方案。这是我的想法,但如果有人有更好的,我很感兴趣 1) 发送电子邮件时,生成附加到URL的通用代码。使用将遵循url,它将检查数据库中的“ok”条目,并通过/失败它们的访问。这似乎没问题,但链接可以传递,甚至可以

我的任务是建立一个系统,允许我们公司的人发送一封带有pdf文件链接的电子邮件,该文件将保存在我们的Web服务器上。收件人可以通过链接查看我们通常销售的新闻稿。我们的想法是这样做三个月,然后看看他们是否愿意继续并支付全额订阅费

我已经建立了注册部分,但我正在努力找到发送电子邮件的最佳解决方案。这是我的想法,但如果有人有更好的,我很感兴趣

1) 发送电子邮件时,生成附加到URL的通用代码。使用将遵循url,它将检查数据库中的“ok”条目,并通过/失败它们的访问。这似乎没问题,但链接可以传递,甚至可以加载到任何人都可以访问的公共站点

2) 为了扩展上述内容,我想我可能会有一种“一次性点击”的方式,一旦我知道链接被点击,它可能会过期,因此任何后续的点击都会失败。缺点是,如果他们点击查看并关闭窗口,他们就完成了。同样,如果他们点击,并且在下载完成之前计算机崩溃,他们也会被锁定。我不知道是否有办法(在PHP中)确认文件下载已完成

3) 我可以将这些文件放在/trials/201009这样的目录中/r@nDomstr1n6.pdf文件上传到哪里,链接的名称是随机的,因此很难猜测。然后我可以使用.htaccess使用不同的密码保护每个月的文件夹。这可能会变得单调乏味,很可能会让用户感到厌烦

我们不想强迫他们管理自己的密码b/c必须登录并记住另一个帐户可能会阻碍参与

谢谢你的建议。
D.

首先,要意识到,在你这边,你能做的事情只有这么多。您允许用户下载PDF,之后他们可以随心所欲地使用它(合法或其他)。因此,防止传递链接并不一定会阻止人们分享或发布PDF本身

也就是说,如果你真的想让它更难一点,你可以改变你的建议2,在点击链接后,在链接过期之前设置某种时间延迟。您还可以限制链接为文件提供服务的次数。因为人们有各种各样的连接速度,而且因为我不知道你的PDF有多大,所以如果你选择使用它,我不能确定时间延迟应该是多少


不过,正如我所说,如果有人决定共享该文件,他们可以轻松做到。

我会说,使用随机代码对每个电子邮件地址进行身份验证,并在5天后过期。如果您限制对第一次访问url散列的ip的访问,这也可以起作用,但可能会方便合法用户/客户

在任何情况下,如果需要,合法用户都可以轻松地请求新的身份验证代码。这样,即使您的任何限制给您的潜在客户带来不便,他们也不会因此而生气


最后,考虑到如果他们喜欢PDF并想分享它,他们可能只会分享PDF本身,而不用麻烦一个链接。

另一个可能是,既然你已经知道了人的电子邮件地址,就在他们的电子邮件链接中为他们形成一个特定的URL。 所以用户会点击一个链接

为电子邮件地址保留一个包含以下数据的表

身份证 电子邮件地址 阅读日期 到期日

当他们点击链接时,检查他们是否阅读过该链接,以及是否检查过该链接是否过期。如果没有,请向他们提供pdf,如果它给了他们一个页面,上面写着“对不起,您的试用期已过期…”

如果是第一次点击,则设置读取日期,计算到期日期并设置

或者,您也可以选择生成一个散列或其他内容,并使用散列来标识用户,而不是他们的电子邮件地址

您还可以在表中设置一个下载列,并通过每次单击链接时增加下载列来阻止他们下载超过20次或其他内容。

我在此处询问了后续信息:。请原谅我,如果它应该合并的话。似乎最好把它拆散,因为它是相关的,但不同。