2009-07-10 3 views
0

Я использую PHP, чтобы перенаправить поисковый запрос. Существует пример кода here (click).Php перенаправление формы с поисковым запросом между url

И мой PHP код:

audio_action.php:

<?php 
$search_field = trim($_POST['audio_field']); 
$search_engine = trim($_POST['audio']); 
$url_params = preg_replace('/(\)+/', '+', $search_field); 
$url = array('deezer'=>'http://www.deezer.com/s.php?s=', 'jiwa'=>'http://www.jiwa.fm/#search/track/', 'last.fm'=>'http://www.last.fm/music?q='); 
header('Location:'.$url[$_POST['audio']].$url_params) 
?> 

и video_action.php:

<?php 
$search_field = trim($_POST['video_field']); 
$search_engine = trim($_POST['video']); 
$url_params = preg_replace('/(\)+/', '+', $search_field); 
$url = array('youtube'=>'http://www.youtube.com/results?search_type=&amp;search_query=', 'dailymotion'=>'http://www.dailymotion.com/relevance/search/', 'google_video'=>'http://video.google.com/videosearch?q='); 
header('Location:'.$url[$_POST['video']].$url_params) 
?> 

Проблема заключается в том, что я не могу использовать его, когда условия поиска должен находиться в середине URL-адреса.

Например, для Джива должно быть:

http://www.jiwa.fm/#search/track/{%22q%22%3A%22keywords%22} 

Где «ключевые слова» это место, где ключевые слова должны быть.

И без этих %22} символов поиск не работает.

Как улучшить этот PHP-код, чтобы заставить его работать с таким запросом?

Кто-то сказал мне, что тоже

$search_engine = trim($_POST['video']); 

бесполезно, но когда я удалить его, он больше не работает.

В настоящее время я использую video_action.php для поиска видео и audio_action.php для аудио, но если вы найдете какой-то способ объединить эти файлы в один, сохранив 2 формы в своем HTML-коде, это было бы потрясающе.

Пожалуйста, помогите мне улучшить этот код.

PS: Я не хочу использовать JavaScript для этого.

ответ

2

Попробуйте это:

<?php 
if (!empty($_REQUEST['audio_field'])) 
{ 
    $url = array(
     'deezer'=>'http://www.deezer.com/s.php?s=__keywords__', 
     'jiwa'=>'http://www.jiwa.fm/#search/track/{%22q%22%3A%22__keywords__%22}', 
     'last.fm'=>'http://www.last.fm/music?q=__keywords__'); 

    header('Location:'.str_replace('__keywords__',preg_replace('/(\)+/', '+', trim($_REQUEST['audio_field'])),$url[trim($_REQUEST['audio'])])); 
    die(); 
} 
else if (!empty($_REQUEST['video_field'])) 
{ 
    $url = array(
     'youtube'=>'http://www.youtube.com/results?search_query=__keywords__', 
     'dailymotion'=>'http://www.dailymotion.com/relevance/search/__keywords__', 
     'google_video'=>'http://video.google.com/videosearch?q=__keywords__'); 

    header('Location:'.str_replace('__keywords__',preg_replace('/(\)+/', '+', trim($_REQUEST['video_field'])),$url[trim($_REQUEST['video'])])); 
    die(); 
} 
else 
{ 
    // No search query; redirect to search page 
    header('Location:http://lostsymphonia.free.fr/r/index.html'); 
    die(); 
} 
?> 

Примечания:

  1. Два PHP файлы теперь могут быть объединены.
  2. Не используйте «&amp;» в URL-адресе - это только для HTML. Location: - это HTTP-заголовок, который не является HTML.
  3. Использование method="get" вместо method="post" - поиск является идемпотентным действием.
  4. Вы случайно использовали $url[$_POST['audio']] вместо $url[$search_engine] - вы никогда не используете $search_engine; как можно удалить его, возможно, иметь значение?
+0

Спасибо за ваш быстрый ответ :-) Вы были прав, удалив $ search_engine ничего не меняет в моем старом коде. Я должен был удалить некоторые плохие скобки или так, когда я проверил. Я обновил свой код, и есть некоторая ошибка: Ошибка анализа: синтаксическая ошибка, неожиданная ';' в /mnt/102/sdb/c/4/lostsymphonia/r/action.php в строке 11, которая является: header ('Location:'.str_replace ('__ ключевые слова __', $ url_params, $ URL [$ SEARCH_ENGINE]); Вам не кажется, что это исходит от $ url [$ search_engine]? Или: $ search_engine = trim ($ _ REQUEST ['audio']); и ['видео]? Почему вы решили сохранить его? (PS: Извините, не могу делать разрывы здесь) – Mark

+0

Я забыл ')'. Я добавил его сейчас - мой текущий код должен работать. Я решил сохранить '$ search_engine', потому что он выглядит лучше, чем' $ _REQUEST ['video'] '. – Zarel

+0

Спасибо, я обновил свой код здесь: http://lostsymphonia.free.fr/r/index.html он работает для поиска звука, но не для видео. У моего полного кода больше поисковых систем и форм, поэтому я хотел бы сделать его легче. Вам действительно нужна $ search_engine часть? – Mark