如何在表单提交上创建新页面?

时间:2016-11-19 00:58:10

标签: javascript php html forms

每次提交表单时,我都在尝试创建新页面。它将是一个订单状态页面 - 一个将定期更新的页面。基本上,我希望用户看到一个表单确认页面,我希望它是永久链接(他们可以稍后访问)。

我的第一个想法是在URL中使用变量,如下所示:

http://www.example.org/member.php?id=123

然后使用GET

调用id
echo $_GET['id'];

http://www.example.org/member.php将是一个模板,只是等待用户特有的一些细节。 一旦我有了这个,我可以使用一个简单的if语句来检查他们的订单状态。

例如,

if ($id === "user_id") {
   echo "Your order is: Pending";
}

然而,这似乎是一个坏主意,只是为了它的安全方面。如果其他人猜到用户ID,他们可以查看他们的订单状态。离开那里,这是我的第一个问题。

如果用户ID足够长,这是一种安全的做法吗?

否则,有什么其他方法可以做到这一点?每次提交表单时创建一个新页面感觉就像一个不好的做法 - 人们可能会垃圾邮件,并且有可能有人利用它来在网站上创建恶意页面。

有什么建议吗?大多数主要零售网站都有订单确认页面(想想ebay.com) - 他们是如何做到的?另外,我建议的网址格式是否安全?

3 个答案:

答案 0 :(得分:1)

最理想的情况是您在提交表单之前强制用户登录,然后向他们提供他们过去订单的列表,他们可以检查状态,提供订单的user_id与记录的会话中的id匹配在用户中。在列表中为每个订单添加一个像yoursite.com/orders/1这样的链接,然后查询id为1的订单,其user_id与登录的用户ID相匹配,以确保他们是唯一可以查看它的人。

如果您不想进行任何操作,只需提供状态页面的永久链接,我就会根据订单保存一个长期随机生成的字符串并提供给用户进行检查在未来,例如

yoursite.com/orders/wUk1DhfxMh 如果您正在使用带有某些路由的框架  或 yoursite.com/orders.php?code=wUk1DhfxMh ,如果你不是。

查询数据库以选择具有匹配代码的顺序,确保阻止MySQL注入并清理$ _GET输入。

答案 1 :(得分:0)

您确定需要制作新页面吗? 您可以拥有一个基本的“确认”页面(例如http://yoursite.com/order/confirm使用PHP会话来创建自定义的确认页面 - 除此之外,如果你创建一个新页面,你应该在URL中使用ID,并检查会话ID。 (例如http://yoursite.com/order/confirm/ABsisnEALnsoSK?yyyy=xxxx)然后检查用户是否已登录。

最后,cymath有一个很好的异步页面创建示例;虽然它不是你想要的 编辑:这不是页面创建,它就像我之前所说的:在网址中有一个额外参数的页面:永久链接,只使用PHP。

答案 2 :(得分:0)

我知道您对如何制作应用算法有疑问,这就是我对此案例的看法:

  1. Insert您的数据库中的订单,获取插入的ID并将其提供给用户。
  2. 设置用户将检查状态以接收$_GET['id']的页面,如果数据库中存在此ID,请检查(SELECT)。
  3. (如果用户存在):从表中获取所需信息 你存储它们。 (FETCH_ASSOCFETCH_OBJECT
  4. (如果用户不存在):显示错误。
  5. 如果您对如何编码感到疑虑CodeSchool将在本周末为所有课程提供免费试用。

    如果用户ID足够长,这是一种安全的做法吗?

    R:为了提高交易的安全性,尝试了解/了解PDO类,我认为如果您汇总一些良好实践和设计模式,它将使您的代码更上一层楼。< / p>

    有关详细信息,请访问PHP's Documentation