各ページに検索フォームがあります。フォームヘルパーを使用すると、デフォルトで。になり$_POST
ます。検索語をURIに表示したいのですが:
http://example.com/search/KEYWORD
私は約1時間Googleを利用していますが、役に立ちません。$_GET
ネイティブURI規則のため、基本的に無効にする方法に関する記事しか見つかりませんでした。私はこの種の機能を最初に欲しがる人にはなれませんね。前もって感謝します!
各ページに検索フォームがあります。フォームヘルパーを使用すると、デフォルトで。になり$_POST
ます。検索語をURIに表示したいのですが:
http://example.com/search/KEYWORD
私は約1時間Googleを利用していますが、役に立ちません。$_GET
ネイティブURI規則のため、基本的に無効にする方法に関する記事しか見つかりませんでした。私はこの種の機能を最初に欲しがる人にはなれませんね。前もって感謝します!
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;
}
?>
私は以前にこれを何度も使用しました。
私の知る限り、単純な 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>
最善の解決策は次のとおりです。
$uri = $_SERVER['REQUEST_URI'];
$pieces = explode("/", $uri);
$uri_3 = $pieces[3];
erunwaysに感謝します!
セグメント化された 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 には許可されていない文字が含まれています」というエラーが表示される場合があります。
CodeIgniter についてはよくわかりませんが、これは PHP であり、$_GET
まだ利用できないのでしょうか? Google と同じように URL をフォーマットmysite.com/search?q=KEYWORD
し、$_GET['q']
.
その上、検索フォームは POST を使用するのに適していないように思えます。GET はブックマーク可能であり、サーバー側で何かが変更されていることを意味するものではありません。