PHP搜索脚本混乱

时间:2014-07-22 08:49:08

标签: php

在构建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切换页面时,帖子不再保留,搜索结果消失了,我认为我也必须通过帖子切换页面,所以我很困惑我应该采取哪种方法,谢谢所有的提示:)

1 个答案:

答案 0 :(得分:2)

如果您正在进行搜索,则正确的方法是GETsee the description of the various request methods from w3。在该基础上,GETPOST更合适。

话虽如此,你正在检索某种资源,你可能会认为该页面是其中的一部分,所以要么就像你似乎建议你做的那样

/search?keywords=HAL&page=2

或这个基于uri的版本,其中page是资源定义的一部分:

/search/2/?keywords=HAL

甚至全力以赴

/search/keyword1/keyword2/2

(我不是最后一个人的粉丝,我赞成中间或第一个;这一切都与你所定义的资源有关,你想要获得的资源,以及参数是什么。我“我确定网络上充满了讨论,而这些讨论在这里发布会相当冗长。”

意识到您不是在谈论$_GET$_POST。这些是PHP实现。您应该决定接受METHOD作为请求,然后您可以查看这些全局变量以找出信息的位置。

我的建议是