Project

General

Profile

Bug(バグ) #2338

[PATCH][etc] 部分一致検索を行う箇所でワイルドカード検索ができてしまう

Added by Hiroshi Kato over 8 years ago. Updated over 8 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Assignee:
Target version:
Start date:
2011-08-03
Due date:
% Done:

100%

3.6 で発生するか:
[QA]バグ通知済:
No
3.8 で発生するか:
Unknown (未調査)

Description

Overview (現象)

メンバー画面の「メンバー検索」や「コミュニティ検索」、あるいは管理画面の「メンバー管理」などでは、ニックネームやキーワード等で部分一致検索が行える。ここで、アンダースコア("_")やパーセント("%")を含めて検索すると、文字としてではなくメタ文字(ワイルドカード)として検索が行なわれてしまう。

これは仕様と考えれば問題ではないと言えるが、この動作は意図した仕様ではなく、不具合として扱うべきであると考えられる。

Causes (原因)

LIKE検索を行っている箇所では

$query->addWhere('name LIKE ?', '%'.$value.'%');

のように(部分一致)検索文字列として入力された値を直接渡しているためメタ文字がそのままメタ文字として扱われてしまっている。

Way to fix (修正内容)

LIKE検索は関数化されていない(LIKEメソッドがあるわけではない)ため、LIKE文を用いている箇所全てで入力文字列中のメタ文字をエスケープするか、最終的にSQLが生成される時点でエスケープを施すという対応が考えられる。

具体的な修正箇所や修正方針については検討できていない。

Note (補足)

バックスラッシュを含む文字列での検索についての挙動も気になる。例えば "foo\bar" というニックネームのメンバーがいる場合、メンバー検索で "foo" と検索すればヒットするが、 "foo\" と検索してもヒットせず、 "foo\\" と検索するとヒットするような動作を確認している。


Related issues

Related to OpenPNE 3 - Bug(バグ) #2106: 部分一致検索を行う箇所でワイルドカード検索ができてしまう Fixed(完了) 2011-05-17
Related to opOpenSocialPlugin - Backport(バックポート) #2350: [PATCH][etc] 部分一致検索を行う箇所でワイルドカード検索ができてしまう Fixed(完了) 2011-08-03
Related to opOpenSocialPlugin - Backport(バックポート) #2351: [PATCH][etc] 部分一致検索を行う箇所でワイルドカード検索ができてしまう Fixed(完了) 2011-08-03
Related to opOpenSocialPlugin - Backport(バックポート) #2352: [PATCH][etc] 部分一致検索を行う箇所でワイルドカード検索ができてしまう Fixed(完了) 2011-08-03

Associated revisions

Revision 54727a89 (diff)
Added by Hiroshi Kato over 8 years ago

added escape function to like query. (fixes #2338)

Revision 4d1dce43 (diff)
Added by Hiroshi Kato over 8 years ago

moved function of DoctrineQuery::andWhere() to opDoctrineQuery::andWhereLike(). (fixes #2338)

Revision 52c33a2c (diff)
Added by Hiroshi Kato over 8 years ago

added escape function to like query. (fixes #2338)

This patch uses opDoctrineQuery::andWhereLike() method that was
added in OpenPNE-3.6beta13.

Revision 07dd03fb (diff)
Added by Hiroshi Kato over 8 years ago

added escape function to like query. (fixes #2338)

This patch uses opDoctrineQuery::andWhereLike() method that was
added in OpenPNE-3.6beta13.

(cherry picked from commit 52c33a2c7f2de4cac903c89e651afaa12dfdeae7)

History

#1 Updated by Hiroshi Kato over 8 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

更新履歴 54727a89355a499a59089cf141bb1463d861e27d で適用されました。

#3 Updated by Shingo Yamada over 8 years ago

  • 360対象 set to RC1

#4 Updated by Shingo Yamada over 8 years ago

  • Target version set to 1.3.3

#5 Updated by Hiroshi Kato over 8 years ago

更新履歴 4d1dce437b38157c2bab17b29b2e69309a0919f2 で適用されました。

#6 Updated by Shogo Kawahara over 8 years ago

  • Subject changed from 部分一致検索を行う箇所でワイルドカード検索ができてしまう to [PATCH][etc] 部分一致検索を行う箇所でワイルドカード検索ができてしまう

#7 Updated by Hiroshi Kato over 8 years ago

更新履歴 52c33a2c7f2de4cac903c89e651afaa12dfdeae7 で適用されました。

#8 Updated by Youichi Kimura over 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Fixed(完了)
  • % Done changed from 50 to 100

Also available in: Atom PDF