3

各ページに検索フォームがあります。フォームヘルパーを使用すると、デフォルトで。になり$_POSTます。検索語をURIに表示したいのですが:

http://example.com/search/KEYWORD

私は約1時間Googleを利用していますが、役に立ちません。$_GETネイティブURI規則のため、基本的に無効にする方法に関する記事しか見つかりませんでした。私はこの種の機能を最初に欲しがる人にはなれませんね。前もって感謝します!

4

5 に答える 5

5

JS が有効になっていない人を扱っている場合は、より良い修正方法があります。

意見:

<?php echo form_open('ad/pre_search');?>
   <input type="text" name="keyword" />
</form>

コントローラ

<?php
    function pre_search()
    {
        redirect('ad/search/.'$this->input->post('keyword'));
    }

    function search()
    {
        // do stuff;
    }
?>

私は以前にこれを何度も使用しました。

于 2008-11-26T01:44:21.027 に答える
4

私の知る限り、単純な POST でこれを達成する方法はありません。ただし、Javascript を介してフォームにアクセスし、宛先を更新することはできます。例えば:

<form id="myform" onsubmit="return changeurl();" method="POST">
<input id="keyword">
</form>

<script>
function changeurl()
{
    var form = document.getElementById("myform");
    var keyword = document.getElementById("keyword");

    form.action = "http://mysite.com/search/"+escape(keyword.value);

    return true;
}
</script>
于 2008-10-22T20:47:39.643 に答える
0

最善の解決策は次のとおりです。

$uri = $_SERVER['REQUEST_URI'];

$pieces = explode("/", $uri);

$uri_3 = $pieces[3];

erunwaysに感謝します!

于 2010-08-09T09:08:16.313 に答える
0

セグメント化された URL とともに GET クエリ文字列を有効にする方法については、この記事をご覧ください。

http://codeigniter.com/forums/viewthread/56389/#277621

有効にした後、次のメソッドを使用して追加の変数を取得できます。

// url = http://example.com/search/?q=text
$this->input->get('q');

allowed_uri_chars 構成設定を変更する必要がないため、これは優れています。ユーザーが入力したものを単に URI に入力すると、「送信した URI には許可されていない文字が含まれています」というエラーが表示される場合があります。

于 2008-10-28T07:03:06.133 に答える
-2

CodeIgniter についてはよくわかりませんが、これは PHP であり、$_GETまだ利用できないのでしょうか? Google と同じように URL をフォーマットmysite.com/search?q=KEYWORDし、$_GET['q'].

その上、検索フォームは POST を使用するのに適していないように思えます。GET はブックマーク可能であり、サーバー側で何かが変更されていることを意味するものではありません。

于 2008-10-22T20:47:14.637 に答える