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

时间:2011-03-09 12:01:26

标签: php javascript json

在页面之间传递大字符串值的安全方法,我在服务器端使用PHP,在客户端使用jquery ajax

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

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

如何以安全的方式将值传递到下一页?或者我如何跨页面保留大值?

5 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点,其中没有一种方法是最佳的。

  1. 你可以通过使用hash-bang urls“伪装”不同的页面来保存所有内容。
  2. 你可以通过普通的get参数发送它们,但是你可能已经知道了,因为你问这个问题,这有局限性
  3. 您可以使用html5 localstorage,但由于除了最新的浏览器之外没有其它任何东西支持,这对于需要针对广泛受众群体的制作网站来说并不合适
  4. 您可以使用Cookie,但在这里您将遇到与get urls参数相同的限制
  5. 您可以使用闪存存储,但这需要在每个页面上加载Flash应用,某些用户可能没有闪存或可能已禁用闪存本地存储
  6. 我认为最好的解决方案是#2:使用get url参数并通过url保持状态。 请注意各种浏览器中网址长度的限制,并“压缩”您的数据,以便最大限度地减少其占用空间。

    执行此操作的方法通常是使用尽可能少的url参数,并使用逗号分隔的位标记。

    例如,您可以从

    更改网址参数

    ?cars=ford,bmw,vw,mazda?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}
    

    这个例子并不意味着很漂亮,只是为了展示这个概念。

    如果您通过这种方式最小化网址,则可以将大量数据存储在网址中,并且您不太可能遇到网址大小限制。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

bset安全方式是在数据库中为会话创建数据或向cookie添加数据(第一种方式更好),只传递id到另一页