http://www.boardholic.netサイトでDBにダミーメンバーデータを2つ作り、検索をテストしています。
サイト一番下にある『キーワード』タグから、GETで検索させたいのですがうまくいきません。
IE7ではカタカナは、思惑のデータが検索されず0件、漢字を検索させると画面が真っ白になります。
Firefox/2.0.0.3ではGETしたい文字がコード化され、思惑通り検索されます。
GETされたキーワードを、表示用と検索用に分けている関数コードを、書ききれないのでコメント掲載しました。
ちなみにテンプレートはEUC-jpで統一してあります。
GETされた文字を検索結果画面の左のテキストBOXに表示させていますが、その文字で再度POST検索させますとIE7でもうまくいきます。
ということは、コメント記載の関数以外に問題は考えられないのです。
何か、足らないことやおかしいことはありますか?
日本語はGET取得できないのでしょうか?よろしくお願いします。
>http://www.boardholic.net/index.php?type=tagsearch&ignition=...アウトドアスポーツ
アウトドアスポーツはurl encode
されていません。
urlencode
>http://www.boardholic.net/index.php?type=tagsearch&ignition=...アウトドアスポーツ
アウトドアスポーツはurl encode
されていません。
urlencode
コメント(4件)
function get_get_searchword($option){
// 検索キー(REQUESTデータ)を受け取り、エスケープします。
$disp_search_key = "";
$sql_search_key = "";
$url_root = _URL_ROOT;
if(isset($_GET['tag']) && $_GET['tag'] != ""){
unset($_SESSION['pageID']);
$_SESSION['search_key'] = $_GET['tag'];
$disp_search_key = htmlspecialchars($_GET['tag']);
$sql_search_key = addslashes($_GET['tag']);
$sql_search_key = mb_convert_kana($sql_search_key, "KVas");
}else{
header("Location: $url_root");
}
return array($disp_search_key, $sql_search_key);
}
日本語をGETしたことがなかったので、全然知りませんでした^^;
非常に解りやすかったです。
回答に返信をせず、終了してしまいましたのでコメントにて失礼いたします。
>http://www.boardholic.net/index.php?type=tagsearch&ignition=form&tag=<?php urlencode(ウエイクボード) ?>
過去の質問
smartyのテンプレート内にPHPコードを書いた時、
PHPコードからsmartyの変数を呼ぶ方法
http://q.hatena.ne.jp/1164294626
PHPで自前でDBからHTMLを文字として
生成している場合はurlencodeに別の
変数に代入する等の変換が必要です。
Smartyを使っているのに、アホウなので、
{foreach item=kword_item from=$kword_tag_data}
<li id="{$kword_item.kword_rank}"><a href="{$PHP_SELF}?type=tagsearch&ignition=form&tag=<?php urlencode({$kword_item.keyword}) ?>">{$kword_item.keyword}</a></li>
{/foreach}
や
{foreach item=kword_item from=$kword_tag_data}
<li id="{$kword_item.kword_rank}"><a href="{$text|escape:'{$PHP_SELF}?type=tagsearch&ignition=form&tag={$kword_item.keyword}'"}>{$kword_item.keyword}</a></li>
{/foreach}
これは、当然Smartyシンタックスエラー
などやっていました^^;
教えていただいた過去の質問を読みますと{php}・・・{/php}はよろしくなさそうなので、多次元配列を作る段階で、エンコードしたkword_urlフィールドを持ちforeachで吐き出すことで動作確認いたしました。
{foreach item=kword_item from=$kword_tag_data}
<li id="{$kword_item.kword_rank}"><a href="{$PHP_SELF}?type=tagsearch&ignition=form&tag={$kword_item.kword_url}">{$kword_item.keyword}</a></li>
{/foreach}
いつもありがとうございます^^