2016-11-19 80 views
0

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

我首先想到的是用变量的URL,就像这样:

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

,然后调用使用GET

echo $_GET['id']; 

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

例如,

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

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

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

否则,有什么其他方法来做到这一点?每次提交表单时创建一个新页面都是一种糟糕的做法 - 人们可能会发送垃圾邮件,并且有可能有人可以利用此页面在网站上创建恶意页面。

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

+4

呃......一个登录,带有你建议的模板?如果用户已登录,并且URL中的ID是连接到用户的订单,请显示它。如果没有,只需重定向或显示错误消息。这样做没有登录是不好的做法,是的。 – junkfoodjunkie

回答

1

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

如果你不想做任何事情,只是提供一个永久链接到状态页我会保存一个长期随机生成的字符串对订单,并提供给用户检查未来如

yoursite.com/orders/wUk1DhfxMh如果你使用一些路由 或yoursite.com/orders.php?code=wUk1DhfxMh,如果你不是一个框架。

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

0

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

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

0

我明白,你有如何使您的应用程序的算法有些怀疑,这里就是我认为这种情况:

  1. Insert顺序在你的数据库,获取插入的ID和把它交给用户。
  2. 设置用户将检查状态以接收$_GET['id']的页面,检查(SELECT)这个ID是否存在于数据库中。
  3. (如果用户存在):从你存储的表 获取你需要的信息。 (FETCH_ASSOCFETCH_OBJECT
  4. (如果用户不存在):显示错误。

如果您对编码有疑问,CodeSchool将在本周末的所有课程中提供免费试用。

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

R:为了提高交易的安全性,试图了解/学习PDO类,我想如果你聚集了一些好的做法和设计模式,将让你的代码,以一个新的水平。请致电PHP's Documentation