繁体   English   中英

PHP-分页:$ _ POST或$ _GET

[英]PHP - Pagination: $_POST or $_GET

我正在开发一个使用php分页的搜索系统(多个过滤器)。 起初,我在主窗体中使用了POST方法。 但是,使用POST我无法保持分页。 原因:例如,当用户按名称搜索时(例如,当他单击下一页时),查询将丢失并返回第一页。 为了解决这个问题,我改用GET方法。 但是使用GET,URL会获取参数。 用户不希望那样。

例:

http://mysearch.com/search.php?name=joe&id=1

我只是想成为

http://mysearch.com/search.php

我尝试了这种解决方法:

if(typeof window.history.pushState == 'function') {
        window.history.pushState({}, "Hide", "http://mysearch.com/search.php");
}

但是,当我在浏览器中点击“上一页/上一页”时,带有参数的URL都会返回。

有解决方案吗? 在分页中使用GET或POST,URL中没有显示参数吗?

您可以像使用$ _GET一样轻松地对$ _POST进行分页,而无需使用SESSION变量/ cookie,只需将分页变量作为隐藏值传递到HTML表单中即可。

例如-对于两个按钮,其中一个将您带到上一页,而一个将带到下一页:

//prev button
<form action="paginate.php" method="post">
    <input type="hidden" name="prev" value="0"/> 
    <input type="submit" value="Go to previous page"/>
</form>

//next button
<form action="paginate.php" method="post">
    <input type="hidden" name="next" value="2"/> 
    <input type="submit" value="Go to next page"/>
</form>

//search form
<form action="paginate.php" method="post">
    <input type="hidden" name="prev" value="0"/>         
    <input type="hidden" name="next" value="2"/> 
    <input type="text" name="search" value="User input goes here"/> 
    <input type="submit" value="Search the database"/>
</form>

缺点是使用浏览器的后退按钮(而不是HTML按钮)时POST会给出“页面已过期”错误,这不是很好。 出于这个原因,我希望使用$ _GET,而且因为您可以为$ _GET查询添加书签,但不能为$ _POST添加书签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM