簡體   English   中英

PHP搜索腳本混亂

[英]PHP search script confusion

在構建PHP應用程序時,我已經達到應在搜索引擎腳本上工作的地步,但是我對如何使用它卻沒有多少疑問。

我已經看到了許多有關此問題的指南和教程,但都沒有解釋采用哪種方法。

所以選擇是:

帶有發布方法的表單,該表單將發布的關鍵字提供給可以查詢的功能

<?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切換頁面時,帖子不再保留並且搜索結果消失了,我認為我也必須通過帖子來切換頁面,所以我很困惑應該采用哪種方法,謝謝所有提示:)

如果要進行搜索,則正確的方法是GET請參閱w3中各種請求方法的說明 在此基礎上, GETPOST更合適。

話雖如此,您正在檢索某種資源,並且您可能會爭辯說頁面是其中的一部分,因此,正如您似乎建議的那樣,您可以

/search?keywords=HAL&page=2

或基於uri的版本,其中page是資源定義的一部分:

/search/2/?keywords=HAL

甚至全力以赴

/search/keyword1/keyword2/2

(我不喜歡最后一個本身,我更喜歡中間或第一個;這全都與您定義為試圖獲取的資源以及參數是什么有關。我確定網絡上到處都是討論,需要花很多時間才能在此處發布)

意識到您不是在談論$_GET$_POST 這些是PHP實現。 您應該確定要接受哪種METHOD作為請求,然后可以查看這些全局變量以找出信息所在。

我的建議是

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM