件名: nmoxmenu Geeklog Plugin 4.0 にバグ

投稿日: 2008/03/18 00:54
投稿者: くろねこ

nmoxmenu Geeklog Plugin 4.0 にバグを発見しましたのでご連絡します。 誰か対処方法を考えてください 問題点: 話題に"_"を含むと表示されない 原因: 言語指定のためのSQLを生成しているところで、WHERE 条件に Like を使用している
PHP Formatted Code
        //言語指定のためのSQLを生成
        $sql_lang=COM_getLangSQL("tid","where");
        if($sql_lang==''){
                $sql_lang=" where tid not like '%\_%'";
        }else{
                $sql_lang=$sql_lang." or tid not like '%\_%'";
        }
このため、下記のSQL文を実行する際に話題中に含まれる"_"がワイルドカードとして認識される
PHP Formatted Code
        $rs=DB_query("select * from ".$_TABLES["topics"].$sql_lang." union select * from ".$_TABLES["nmoxmenu_topics"].$sql_lang." order by sortnum asc");
話題中の"_"をすべてエスケープシーケンス出来ればいいのですが... 可能なんでしょうか? 以上、ご報告です。

書き込み: nmoxmenu Geeklog Plugin 4.0 にバグ

投稿日: 2008/03/18 02:52
投稿者: 南木

くろねこさん、ご指摘ありがとうございました。 多言語切り替え機能がOFFの時はアンダースコアが含まれる話題は表示されないようにしています。 もし、表示したほうがよろしければこんな感じで1行をコメントアウトすれば変更できます。
PHP Formatted Code
//言語指定のためのSQLを生成
$sql_lang=COM_getLangSQL("tid","where");
if($sql_lang==''){
        //$sql_lang=" where tid not like '%\_%'";
}else{
        $sql_lang=$sql_lang." or tid not like '%\_%'";
}
 
こういう解釈でよろしいでしょうか。

書き込み: nmoxmenu Geeklog Plugin 4.0 にバグ

投稿日: 2008/03/18 10:11
投稿者: くろねこ

くろねこです。 早速のご回答ありがとうございました。
Quote by: 南木

くろねこさん、ご指摘ありがとうございました。 多言語切り替え機能がOFFの時はアンダースコアが含まれる話題は表示されないようにしています。 もし、表示したほうがよろしければこんな感じで1行をコメントアウトすれば変更できます。

PHP Formatted Code
//言語指定のためのSQLを生成$sql_lang=COM_getLangSQL("tid","where");
if($sql_lang==''){
 //$sql_lang=" where tid not like '%_%'";
}else{
 $sql_lang=$sql_lang." or tid not like '%_%'";
}
 
こういう解釈でよろしいでしょうか。

くろねこは取り敢えず、このif文ブロック全部をコメントアウトして使用しています。 ご指摘のとおり、多言語切替がONの状態ですが、多言語切替を使用していない状況です。<これが元凶? geeklogでは、多言語環境の場合には"_"を言語を表す部分との区切り文字として以外使用出来ない仕様でしょうか? それであれば問題は無いのですが、そうで無ければ意図したとおりに動作しない場合が出てきそうです。 以上、ご対応ありがとうございました。

Geeklog Japan - 掲示板
https://www.geeklog.jp/forum/viewtopic.php?showtopic=10001