Php 在动态页面之间传递大字符串值的安全方法

Php 在动态页面之间传递大字符串值的安全方法,php,javascript,json,Php,Javascript,Json,为了在页面之间传递大字符串值,我在服务器端使用了PHP,在客户端使用了jQueryAjax 我正在做一个旅行门户网站,在那里我必须显示预订的火车列表,我从php获得json格式的详细信息,并将json数据格式化为html。一切都很好 问题是我需要将所选列车信息和所有列车信息传递到下一页,如果用户希望更改所选列车,我需要返回到上一页并再次显示列车列表,而无需查询服务器 如何以安全的方式将值传递到下一页?或者如何在页面之间保持较大的值?您可以在页面之间使用POST吗?您可以考虑将其存储在用户会话中。

为了在页面之间传递大字符串值,我在服务器端使用了PHP,在客户端使用了jQueryAjax

我正在做一个旅行门户网站,在那里我必须显示预订的火车列表,我从php获得json格式的详细信息,并将json数据格式化为html。一切都很好

问题是我需要将所选列车信息和所有列车信息传递到下一页,如果用户希望更改所选列车,我需要返回到上一页并再次显示列车列表,而无需查询服务器


如何以安全的方式将值传递到下一页?或者如何在页面之间保持较大的值?

您可以在页面之间使用POST吗?

您可以考虑将其存储在用户会话中。这将使您的数据在服务器端保持“安全”,否则您将失去对用户数据的“控制”。

正如Robert所说,您可能需要使用PHP会话。 否则,您可以使用JSON并通过GET传递它,但在GET参数的长度方面可能会遇到一些问题。
如果您不打算查询服务器,请注意,所有数据都可以进行操作

有几种方法可以做到这一点,但没有一种是最优的

  • 通过使用散列链接“伪造”不同的页面,您可以将所有内容保存在内存中
  • 您可以通过正常的get参数发送它们,但您可能已经知道,因为您提出了这个问题,所以这有局限性
  • 您可以使用html5 localstorage,但由于它只受最新浏览器的支持,因此对于需要面向广大受众的生产站点来说,这是不好的
  • 您可以使用cookies,但在这里您将遇到与get url参数相同的限制
  • 您可以使用闪存存储,但这需要在每个页面上加载闪存应用程序,并且一些用户可能没有闪存或禁用了闪存本地存储
  • 我认为最好的解决方案是#2:使用get url参数并通过url保持状态。 请注意不同浏览器中url长度的限制,并“压缩”您的数据,使其占用空间最小化

    实现这一点的方法通常是使用尽可能少的url参数,使用逗号分隔的位标志

    例如,您可以从

    ?汽车=福特、宝马、大众、马自达
    ?c=23

    然后根据预定义变量按位测试
    c
    ,如:

    var BMW = 1, VW = 2, FORD = 4, KIA = 8, MAZDA = 16;
    
    if(c & BMW) { bmw is set}
    if(c & VW) { vw is set}
    if(c & FORD) { ford is set}
    if(c & KIA) { kia is set}
    if(c & MAZDA) { mazda is set}
    
    这个例子并不意味着漂亮,只是为了展示这个概念


    如果您以这种方式最小化url占用空间,则可以在url中存储大量数据,并且不太可能遇到url大小限制。

    b设置安全的方法是在数据库中为会话创建数据或将数据添加到cookie(第一种方法更好)并且仅将id传递给另一页

    如果我在返回上一页时使用POST,它会要求重新发送数据,我需要防止这种情况如果您阅读了问题,它会声明用户需要能够返回上一页(浏览器中的“后退”按钮)在不查询服务器的情况下仍然可以访问数据,数据库如何对此有所帮助?