2014-07-22 133 views
1

在構建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方法,它改變了這樣的?keywords=x+y+z http地址,關鍵字正在從$傳遞_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切換頁面時,帖子不再保留,搜索結果消失,我收集到我將不得不通過帖子切換頁面,所以我很困惑我應該採取哪種方法,謝謝所有提示:)

回答

2

如果您正在進行搜索,正確的方法將是GET,see the description of the various request methods from w3。在那個基礎上,GET更合適,然後是POST

說了這麼多,您檢索某種資源,你可能會說,該頁面的一部分,所以無論你似乎建議你可以做

/search?keywords=HAL&page=2 

或這種基於URI的版本,其中網頁是資源的定義的一部分:

/search/2/?keywords=HAL 

甚至全力以赴爲

/search/keyword1/keyword2/2 

(我本人不是最後一個粉絲,我喜歡中間或第一個;這一切都與您定義的資源有關,以及參數是什麼。我確信網絡充滿了討論,這將是相當冗長的張貼在這裏)

認識到你不是在談論$_GET$_POST。這些是PHP實現。你應該決定你會接受什麼METHOD作爲請求,然後你可以看看這些全局變量來找出信息的位置。

我的建議是

+0

我明白了,提前相當長的研究但是我明白你的觀點,是否有機會至少解釋一下如何實現'/ search/2 /?關鍵字= HAL'我看過那些斜槓和我好奇如何做到這一點;) – Mevia

+0

這些只是你的url欄中的正常斜槓:它們不必等同於特定的文件。標準方法是編寫一些處理所有流量的'路由器'(例如,通過'.htaccess'將所有流量發送到'application.php')。該文件從請求中讀取用戶要求的內容(例如,在'/' ),然後調用'search.php'文件,表明找到了第2頁,並給出了關鍵字。在PHP中,Google有點「router」,還有mvc->大量的例子! – Nanne