我正在使用分页创建搜索功能。
我有一个表单,我得到它的POST值。然后我用它来搜索数据库并返回一组结果。
结果会分解到页面中,用户可以单击视图中的页面链接。
我的问题是,如何在多个页面上保留搜索?
如果第一页获得POST值,并且在后续页面上我应该将搜索词放入网址,例如
www.example.com/search/various-keywords/p2
然后获取术语并再次查询数据库,将结果拆分为任何页面,p2,p3,p4等。
有更简洁的方法吗?
此外,在网址中包含用户输入是否不安全?我应该以某种方式编码吗?
如果用户在经过多个页面后再次点击,我将收到“确认表单重新提交”错误。我该如何防止这种情况?
答案 0 :(得分:1)
最好的方法是将搜索字词设为 GET 变量,这样您就可以随时检索它并将其添加到您想要的任何网址中。
只要你逃避搜索查询,你应该没有用户安全性,这也将删除重新提交表单错误。
答案 1 :(得分:1)
搜索应该使用GET方法,它是RESTful方式。将搜索字词添加到网址中(确保将其转义):
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
。
答案 2 :(得分:0)
您可以通过URI传递搜索词组,例如www.example.com/search?q=My+Search+Terms&page=1
,或者如果您认为合适,可以使用Cookies
或Sessions
。