2014-07-22 4 views
1

При создании PHP-приложения я достиг точки, где должен работать скрипт поисковой системы, однако у меня мало вопросов о том, как это сделать.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> 

Форма метод поста, который после представить это перенаправление на ту же страницу, но с ?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); 
?> 

Из того, что я узнал, чистый метод пост очень плохо, если вы хотите осуществить нумерацию. При переключении страницы через $ _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 vs $_POST. это реализация PHP. Вы должны решить, какой METHOD вы примете в качестве запроса, и затем вы можете посмотреть эти глобальные таблицы, чтобы узнать, где находится информация.

Мой совет будет

  • читать на этих методов (см the link to w3)
  • в то время как вы на него, проверить filter_input
+0

я вижу, довольно долгое исследование впереди мне, но я понимаю, есть ли вероятность, что вы могли бы объяснить хотя бы немного о том, как выполнить эту функцию '/ search/2 /?ключевые слова = HAL' ive видели эти косые черты вокруг и им любопытно, как это сделать;) – Mevia

+0

Это не более, чем обычные косые черты в вашем строке url: они не обязательно должны быть равны определенному файлу. стандартный метод заключается в том, чтобы написать какой-то «маршрутизатор», который обрабатывает весь ваш трафик (например, отправить все в 'application.php' через' .htaccess'. Этот файл читает из запроса то, что спрашивал пользователь (например, разделить на '/'), затем вызовите файл 'search.php', указав, что страница 2 была найдена, и указав вместе с ним ключевые слова. Google немного для' router' в php, а также mvc-> множество примеров! – Nanne

Смежные вопросы