代码之家  ›  专栏  ›  技术社区  ›  Mevia

PHP搜索脚本混乱

php
  •  1
  • Mevia  · 技术社区  · 12 年前

    在构建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方法的表单,提交后会重定向到同一页面,但使用 ?关键词=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 回复  |  直到 12 年前
        1
  •  2
  •   Nanne    12 年前

    如果您正在进行搜索,正确的方法是 GET , see the description of the various request methods from w3 。在此基础上 获取 比 POST .

    话虽如此,但您正在检索某种资源,您可能会认为该页面是其中的一部分,因此,无论您如何建议,您都可以这样做

    /search?keywords=HAL&page=2
    

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

    /search/2/?keywords=HAL
    

    甚至全力以赴

    /search/keyword1/keyword2/2
    

    (我本身不喜欢最后一个,我喜欢中间的或第一个;这一切都与你定义的资源有关,你试图获得的资源,以及参数是什么。我确信网络上充满了讨论,在这里发布这些讨论会很冗长)

    意识到你不是在谈论 $_GET 对 $_POST .这些是PHP实现。你应该决定什么 METHOD 您将接受请求,然后您可以查看这些全局,以找出信息所在的位置。

    我的建议是

    推荐文章