我正在创建一个带有分页的搜索功能。
我有一个表单,我得到它的POST值。然后使用它搜索数据库并返回一组结果。
结果被分解成多个页面,用户可以点击视图中的页面链接。
我的问题是,如何在多个页面上持久化搜索?
是否应该在第一页得到POST值,并在后续页面我应该把搜索词到url,例如
www.example.com/search/various-keywords/p2
然后获得术语并再次查询数据库,将结果拆分到任何页面,p2, p3, p4等。
有更干净的方法吗?
另外,在url中包含用户输入是否不安全?我应该用某种方式对它进行编码吗?
如果用户在浏览多个页面后点击返回,我会得到"Confirm Form Resubmission"错误。我该如何预防呢?
最好的方法是将搜索词设置为GET变量,这样您就可以随时检索它并将其添加到您想要的任何url中。
只要您转义搜索查询,您应该可以与用户安全,这也将消除重新提交表单错误。
搜索应该使用GET方法,这是RESTful方式。将搜索词添加到URL中(确保已转义):
http://www.example.com/search?q=example+search+term&page=1
如果你有一个<form>
,它会负责转义:
<form action="search" method="GET">
<input type="text" name="q" />
<input type="submit" value="Search" />
</form>
例如输入test & test
,则为search?q=test+%26+test
您可以通过URI传递搜索短语,如www.example.com/search?q=My+Search+Terms&page=1
,或者您可以使用Cookies
或Sessions
,如果您认为合适。