2022/07/02 19:19 JST

Geeklog Japan Forums

nmoxmenu Geeklog Plugin 4.0 にバグ


状態: オフライン

くろねこ

Forum User
登録日: 2006/09/07
投稿数: 120
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");
話題中の"_"をすべてエスケープシーケンス出来ればいいのですが... 可能なんでしょうか? 以上、ご報告です。

状態: オフライン

南木

Forum User
Active Member
登録日: 2006/06/27
投稿数: 236
場所:栃木県
くろねこさん、ご指摘ありがとうございました。 多言語切り替え機能が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 '%\_%'";
}
 
こういう解釈でよろしいでしょうか。
nmox

状態: オフライン

くろねこ

Forum User
登録日: 2006/09/07
投稿数: 120
くろねこです。 早速のご回答ありがとうございました。
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では、多言語環境の場合には"_"を言語を表す部分との区切り文字として以外使用出来ない仕様でしょうか? それであれば問題は無いのですが、そうで無ければ意図したとおりに動作しない場合が出てきそうです。 以上、ご対応ありがとうございました。

時刻はすべて JST , 現在の時刻は 07:19 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック