什么是正确的方法:网址查询或开放会话?

时间:2010-07-16 21:07:01

标签: php

我有一个搜索表格,可以检查可用房间两天。在search.php之后,我列出了可用的房间。我想获得入住和结账日期进行预订。什么是正确的方法?

1-urlquery:

<a href="rooms.php?roomID='. $value['room'].'&in='.$checkin.'&out='.$checkin.'">

2-签入和结帐的开放时间

提前致谢

2 个答案:

答案 0 :(得分:2)

如果使用会话,您必须知道,如果用户在其浏览器中打开多个选项卡,则所有选项卡将共享同一会话 - 可能会使代码难以编码; - )


使用URL就可以了;但请注意XSS:考虑使用htmlspecialchars()和/或urlencode()等函数正确转义输出,具体取决于具体情况。


但有一件事:理论上,如果您的rooms.php脚本正在修改某些数据(比如将数据保存到数据库中),则应使用HTTP POST,而不是HTTP {{ 1}}。

关于这一点,您可以查看Safe methods - 阅读Idempotent methods and web applications也很有趣。

答案 1 :(得分:1)

使用会话变量可能是更好的方法,因为它允许您在服务器端存储更多数据,并仅将会话令牌作为cookie传递给用户。唯一的问题是用户是否禁用了cookie。这只占所有用户的一小部分。

使用会话还意味着您不必将参数添加到每个页面上的每个链接和每个表单,并且如果用户关闭页面(而不是浏览器)它仍然可以工作,然后返回后来。当我在寻找酒店优惠时,我一直这样做。

关于URL参数,您应该在将所有参数传递给用户之前将其转义。这样做:

<?php
$url = "rooms.php?roomID=" . urlencode($value['room'])
       . "&in=" . urlencode($checkin)
       . "&out=" . urlencode($checkout)

?>
<a href="<?php echo $url ?>">...</a>

这样,您的网页就不会受到跨站点脚本攻击。