MySQL4.025とPHP5での$_GETについての質問です。


http://www.boardholic.netサイトでDBにダミーメンバーデータを2つ作り、検索をテストしています。
サイト一番下にある『キーワード』タグから、GETで検索させたいのですがうまくいきません。


IE7ではカタカナは、思惑のデータが検索されず0件、漢字を検索させると画面が真っ白になります。
Firefox/2.0.0.3ではGETしたい文字がコード化され、思惑通り検索されます。
GETされたキーワードを、表示用と検索用に分けている関数コードを、書ききれないのでコメント掲載しました。

ちなみにテンプレートはEUC-jpで統一してあります。
GETされた文字を検索結果画面の左のテキストBOXに表示させていますが、その文字で再度POST検索させますとIE7でもうまくいきます。
ということは、コメント記載の関数以外に問題は考えられないのです。
何か、足らないことやおかしいことはありますか?
日本語はGET取得できないのでしょうか?よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/04/14 19:26:14
  • 終了:2007/04/14 20:01:08

ベストアンサー

その他の回答(1件)

id:studioes No.2

studioes回答回数522ベストアンサー獲得回数612007/04/14 19:44:26

ポイント20pt

urlエンコードしなきゃ・・・

  • id:seadwell
    表示用と検索用に分けている関数コード

    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);
    }
  • id:seadwell
    kurukuru-nekoさま、ありがとうございました。
    日本語をGETしたことがなかったので、全然知りませんでした^^;
    非常に解りやすかったです。
    回答に返信をせず、終了してしまいましたのでコメントにて失礼いたします。
  • id:kurukuru-neko

    >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に別の
    変数に代入する等の変換が必要です。
  • id:seadwell
    わざわざ、アフターフォローまでありがとうございます。
    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}

    いつもありがとうございます^^

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません