Php 使用MVC在CodeIgniter中处理post查询的最佳方法是什么?

Php 使用MVC在CodeIgniter中处理post查询的最佳方法是什么?,php,codeigniter,session,search,http-post,Php,Codeigniter,Session,Search,Http Post,“我的视图”有一个搜索框(但问题比此场景更一般),当您提交搜索查询时,控制器会检查您的输入并显示分页结果 现在,为了让用户能够浏览这个特定搜索查询的不同页面,我必须存储搜索数据(我使用flashdata)并将页码作为url_段检索 这一切都很好,但问题是,如果用户进入搜索后单击“刷新”(或只是重新进入搜索页面),会发生什么情况。由于日期是从上一次搜索保存的,因此它显示相同的搜索结果,但在这种情况下,我希望重置搜索并显示所有结果。所以我想知道做这件事的最佳方法是什么(我认为这应该是一个比较常见的问

“我的视图”有一个搜索框(但问题比此场景更一般),当您提交搜索查询时,控制器会检查您的输入并显示分页结果

现在,为了让用户能够浏览这个特定搜索查询的不同页面,我必须存储搜索数据(我使用flashdata)并将页码作为url_段检索

这一切都很好,但问题是,如果用户进入搜索后单击“刷新”(或只是重新进入搜索页面),会发生什么情况。由于日期是从上一次搜索保存的,因此它显示相同的搜索结果,但在这种情况下,我希望重置搜索并显示所有结果。所以我想知道做这件事的最佳方法是什么(我认为这应该是一个比较常见的问题,但我找不到任何合理的答案)

简而言之,如何在控制器内正确处理这种情况:

1. Show regular page
2. User submits search query, POST contents are saved, results displayed
3. 
   a) If user clicks on pagination link, keep showing results
   b) If user refreshes page, reset search parameters, show full results
第三步给我带来了问题,因为我必须使用一个非常混乱的代码(本质上,分页链接的附加参数告诉控制器它仍然是搜索查询的一部分),我想知道是否有干净的解决方案


谢谢。

不要在会话中存储搜索数据,不要为此使用post,而是使用get。这将解决您的问题,允许用户将链接传递给朋友,并且仍然可以正常工作。codeigniter的分页类可以使用query param来处理get方法。干净的解决方案是您不想这样做。如果用户刷新页面,他们希望得到相同的页面,可能包含最新信息。如果在刷新时,他们的搜索自动重新启动,这是意外和不寻常的行为。