EC-CUBEの商品検索不具合
<<
作成日時 : 2007/02/15 12:41
>>
トラックバック 0 / コメント 4
クライアントのECサイトとしてオープンソースの"EC-CUBE"を利用している。

現在はVPSサーバ"ラピッドサイト"にてカスタマイズテストを行い、各クライアントサーバに実装している。
尚、現在使用しているバージョンは"1.0.2"である。
その中で、登録している商品を検索する際に不具合が見つかった。
まず、「商品管理」→「商品マスタ」から商品IDに数値以外の文字を入力する。

ここで、「aaaa」と入力して検索してみる。
するとPHPのエラーが表示される。

ttp://demo.ec-cube.net/admin/products/index.php SELECT COUNT(*) FROM dtb_products WHERE del_flg = 0 AND product_id = ? DB Error: invalid number SELECT COUNT(*) FROM dtb_products WHERE del_flg = 0 AND product_id = 'aaaa' [nativecode=ERROR: invalid input syntax for integer: "aaaa"]
どうやら、SQLでエラーが出ているようだ。
そこで、「/html/admin/products/index.php」を修正する。
[省略]
// エラーチェック
// 入力エラーチェック
function lfCheckError() {
$objErr = new SC_CheckError();
$objErr->doFunc(array("開始日", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));
$objErr->doFunc(array("終了日", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE"));
$objErr->doFunc(array("開始日", "終了日", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM"));
return $objErr->arrErr;
}
[省略]
上記の場所に追記する。
[省略]
// エラーチェック
// 入力エラーチェック
function lfCheckError() {
$objErr = new SC_CheckError();
$objErr->doFunc(array("商品ID", "search_product_id"), array("NUM_CHECK"));
$objErr->doFunc(array("開始日", "search_startyear", "search_startmonth", "search_startday"), array("CHECK_DATE"));
$objErr->doFunc(array("終了日", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_DATE"));
$objErr->doFunc(array("開始日", "終了日", "search_startyear", "search_startmonth", "search_startday", "search_endyear", "search_endmonth", "search_endday"), array("CHECK_SET_TERM"));
return $objErr->arrErr;
}
[省略]
これで商品IDの入力チェックが可能になったが、エラー表示させるためにテンプレートも変更する。
[省略]
<td bgcolor="#f2f1ec" width="110">商品ID</td>
<td bgcolor="#ffffff" width="194"><input type="text" name="search_product_id" value="<!--{$arrForm.search_product_id|escape}-->" size="30" class="box30" /></td>
[省略]
上記に以下を追記する。
[省略]
<td bgcolor="#f2f1ec" width="110">商品ID</td>
<td bgcolor="#ffffff" width="194"><span class="red"><!--{$arrErr.search_product_id}--></span><input type="text" name="search_product_id" value="<!--{$arrForm.search_product_id|escape}-->" size="30" class="box30" style="<!--{$arrErr.search_product_id|sfGetErrorColor}-->" /></td>
[省略]
動作検証してみると、数値以外はエラー表示されるようになった。

これは商品検索での対応だが、顧客管理の方は問題なく動作するようだ。
|