在构建PHP应用程序的过程中,我已经达到了应该使用搜索引擎脚本的程度,但是我对如何使用它几乎没有任何疑问。
我已经看过很多关于这个问题的指南和教程,但没有一个解释采用哪种方法。
所以选项是:
使用post方法的表单,该方法将发布的关键字提供给执行查询的函数
<?php
$keywords = preg_split('/[\s]+/', $_POST['keywords']);
$products->search($keywords);
?>
<form action="" method="post">
<input type="text" name="keywords">
<input type="submit" value="submit">
</form>
表单使用get方法改变http地址,如?keywords=x+y+z
,在这种情况下从$ _GET传递关键字
<?php
$keywords = preg_split('/[\s]+/', $_GET['keywords']);
$products->search($keywords);
?>
<form action="" method="get">
<input type="text" name="keywords">
<input type="submit" value="submit">
</form>
使用post方法的表单,在提交时会重定向到同一页面,但使用?keywords=x+y+z
插件
<?php
header('Location: file.php?keywords=' . $_POST['keywords']);
exit();
?>
<form action="" method="post">
<input type="text" name="keywords">
<input type="submit" value="submit">
</form>
<?php
$keywords = preg_split('/[\s]+/', $_GET['keywords']);
$products->search($keywords);
?>
如果你想实现分页,从我学到的纯post方法是非常糟糕的。当通过$ _GET ?page=2
切换页面时,帖子不再保留,搜索结果消失了,我认为我也必须通过帖子切换页面,所以我很困惑我应该采取哪种方法,谢谢所有的提示:)
答案 0 :(得分:2)
如果您正在进行搜索,则正确的方法是GET
,see the description of the various request methods from w3。在该基础上,GET
比POST
更合适。
话虽如此,你正在检索某种资源,你可能会认为该页面是其中的一部分,所以要么就像你似乎建议你做的那样
/search?keywords=HAL&page=2
或这个基于uri的版本,其中page是资源定义的一部分:
/search/2/?keywords=HAL
甚至全力以赴
/search/keyword1/keyword2/2
(我不是最后一个人的粉丝,我赞成中间或第一个;这一切都与你所定义的资源有关,你想要获得的资源,以及参数是什么。我“我确定网络上充满了讨论,而这些讨论在这里发布会相当冗长。”
意识到您不是在谈论$_GET
与$_POST
。这些是PHP实现。您应该决定接受METHOD
作为请求,然后您可以查看这些全局变量以找出信息的位置。
我的建议是