如何为每个(唯一的)重定向URL生成PHP表单?

时间:2016-12-01 18:56:15

标签: php jquery forms url identity

我会尽量简短地说明我要完成的事情:

  • 假设我正在通过短信发送消息。通过电子邮件发送给5000个联系人(但我希望这个版本只有10或1.000.000,无论音量如何)。 在这条消息中,我正在推广一个类似于在某个奇特的地方举行的晚宴的活动。收到此消息的所有人都会被邀请。 每条消息都包含一个URL,链接到专门用于该事件的登录页面。这个页面是响应式的,它打开了一个很好的图片+一些文本,基本信息和一个PHP表格来回答邀请。

  • 此表单包含几个字段。在这个例子中,让我们说:

      你来参加派对吗? (答案可供选择:“是”或“不,谢谢”)。   你会陪伴吗? (回答选择:“只是我”或“+1”,“+ 2”)。   还有什么你想告诉我们的吗? (免费打字领域)。   [提交]

  • 发送的消息中的每个URL链接实际上都是UNIQUE重定向,每个重定向都属于5000个联系人中的1个。 每个联系人都在SMS和电子邮件上收到了自己的链接。 所有这一切都意味着在我用来发送消息的数据库中,每个联系人都被归为重定向/短URL。 通过这种方式,我很清楚谁甚至只是打开了登陆页面,而无需要求开启者填写任何信息。 我只知道,例如:

    Mr. Skywalker is http://website.com/dinnerparty/01
    Ms. Organa is http://website.com/dinnerparty/02
    Mr. Solo is http://website.com/dinnerparty/1138
    Mr. Calrissian is http://website.com/dinnerparty/4469
    
    And they all redirect to http://website.com/dinnerparty/
    

到目前为止很好,对吧?! 现在这里是棘手的部分......

  • 我需要你帮助我的是如何将页面上的PHP表单“链接并锁定”到这些唯一的URL。 基本上,当Calrissian先生点击/ 4469时,我希望他能够点击“是”(我来参加派对),“+ 2”,[提交]。

一旦他提交了,如果他刷新页面,他就不能再提交表格了。相反,他看到一条消息,如“你的答案已收到,谢谢!” 该页面对于联系人列表中的每个人来说基本相同,但由于它是HIS链接,因此显示的是HIS表单。

  • 之后,我需要能够检索这些信息(他做出的选择)。

我知道这可以做到,因为我之前遇到过这种过程。我只是不知道如何重现它!我不是一个程序员,只是一个试图“自己”学习的菜鸟。

到目前为止,我认为我必须以某种方式为5000个表单中的每个表单提供ID和ID,我只是猜测“此URL =此表单”的信息将包含在URL中,这看起来像'{ {3}}“

这一切都响铃吗?我到目前为止的询问(使用关键字“PHP”和“URL”)只是教会了我如何使用GET数组将信息从联系表单转移到另一个页面的内容,但这不是我需要的。

所以,如果你有任何线索,任何有关如何实现这一点的线索,我将不胜感激!

感谢阅读,我们将非常感谢您的帮助!

PS:抱歉英语不好;)

1 个答案:

答案 0 :(得分:0)

首先,不要使用增量ID。这很容易被称为序号攻击。请改用UUID。否则,访客可以输入下一个/上一个/随机ID,并可能为另一个访客提供RSVP。这对你来说是个坏消息,但是对于攻击者来说非常好(他们会为你做这件事......这可能会让受害者大吃一些,例如购买不必要的晚餐)。有关一些很好的解释,请参阅https://www.youtube.com/watch?v=CgJudU_jlZ8https://www.youtube.com/watch?v=gocwRvLhDf8

其次,您应该在URL中维护UUID,例如http://website.com/guest/123e4567-e89b-12d3-a456-426655440000 - 使用脚本或类似.htaccess的内容,您可以拾取UUID并将其传递给单个脚本。例如:

RewriteEngine On
RewriteRule ^/guest/(.*)$ /my-form.php?id=$1 [L]

从那里,在你的my-form.php中,你可以检查$_GET['id']是否存在,然后验证它(它是否存在?先前是否已提交?等)。如果验证,则可以照常显示表单并发布到自己(仍然在URL中使用UUID)。在提交时,您再次验证ID,并处理提交。

然后,在后续页面加载时,您可以拒绝再次提交表单...或者相反,允许用户编辑他们的响应。也许他们不再是+2 ......但是用例取决于你,有些RSVP在X日期之后不允许编辑...所以请记住这一点。 / p>

-

现在,要讨论大量短信/电子邮件服务,您可能希望拥有一个用户数据库。为了发送唯一的链接,您只需要做一些所谓的"邮件合并" (或合并标签等)...基本上,您可以在简报/消息中使用URL:http://website.com/guest/[guest_id],并且mailmerge将使用您数据库中的UUID替换[guest_id]

那里有很多邮件/短信群发邮件服务,所以我不需要列出任何邮件/短信群发邮件服务。选择一个具有API并符合您要求的产品。

希望这会有所帮助。祝你好运:)