Php перенаправление формы с поисковым запросом между URL - PullRequest
0 голосов
/ 10 июля 2009

Я использую PHP для перенаправления некоторых поисковых запросов. Вот пример кода здесь (клик) .

И мой код 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 для аудио, но если вы найдете способ объединить эти файлы в один, сохранив две формы в моем HTML-коде, это было бы здорово.

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

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

1 Ответ

2 голосов
/ 10 июля 2009

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

<?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; как удаление может иметь значение?
...