Url arasında arama sorgusu terimi ile bir form php yönlendirme

1 Cevap php

I'm using PHP in order to redirect some search query. There is some example of code here (click).

Ve benim PHP kodu:

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)
?>

ve 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)
?>

Sorun arama terimleri bir url ortasında olmalıdır ben onu kullanamazsınız olmasıdır.

Örneğin, Jiwa için olması gerekir:

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

"Anahtar kelimeler" anahtar kelimeler olmalıdır yerdir.

Ve bu olmadan %22} karakter arama çalışmıyor.

Peki nasıl böyle bir sorgu ile çalışması yapmak için bu PHP kod geliştirmek için?

Biri de bana söyledi

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

işe yaramaz, ama ben bunu kaldırdığınız zaman, bu artık çalışmıyor.

Şu anda ses için video arama ve audio_action.php için video_action.php kullanıyorum ama sen benim HTML kodunda 2 formları tutarken tek tek içine bu dosyayı birleştirmek için bir yol bulmak eğer harika olurdu.

Bana bu kodu geliştirmemize yardımcı olun.

PS: Ben bunun için JavaScript kullanmak istemiyorum.

1 Cevap

Bu deneyin:

<?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();
}
?>

Notlar:

  1. Iki PHP dosyaları artık birleştirilmiş olabilir.
  2. Kullanmayın "&amp;" bir URL - sadece HTML için. Location: HTML olmayan bir HTTP başlığı vardır.
  3. Arama bir İdempotent eylem - method="get" yerine method="post" kullanın.
  4. Yanlışlıkla $url[$_POST['audio']] yerine $url[$search_engine] kullanılır - bile kullanmak asla {[(2)];} nasıl muhtemelen bir fark çıkarmadan olabilir?