ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

koshoten.netコミュの導入Q&A

  • mixiチェック
  • このエントリーをはてなブックマークに追加
Koshoten.net2の導入やカスタマイズ等でわからないことなどを質問したり応えたりするトピックです。

コメント(72)

しばらく平和に運営してたんですが(^^;)、またちょっと気になることが出てきました。

管理メニューからいろいろと更新や修正ができるようになっていますが、そのうちの「お知らせ文面管理」です。あちこちの頁の文言が修正でき、HTMLのタグも利用できますが、このときにアトリビュートを二重引用符で括ると、それは全てエスケープされちゃうんですね。試しに"の前に¥を入れたり、実体参照するようにしてみてもだめでした。
あと、アンカーを張るとこちらが絶対パスを指定していても、さらにルートのパスが追加されるように見えます。しかもこちらが追加した二重引用符がエスケープされて。

いまはサーバーが提供してくれているphpMyAdminから、直接shop_infoを弄っているのですけど、何か上手い手はないでしょうか?

ついでと言っては何ですが、phpMyAdminで見てると、sessionあたりは結構すぐに、そこそこのサイズのオーバーヘッドができていますよね。この辺、最適化の目安、なんて言うのはあるんでしょうか?

よろしくお願いします。
軽石庵さん>

「お知らせ文面管理」の件ですが、実はこのモジュールはPHPを覚えたての頃に作ったもので、かなり試行錯誤を繰り返して訳わからなくなっています。(汗)

多分、magic_quotes_gpcというphpの設定によるものだと思うのですが、magic_quotes_gpcがOnのときは、GETやPOST等のデータが\エスケープされるので、stripslashesで一度\を削除して使っています。

ということで、下記のようなコードが何行かあるかと思います。

$shop_info['shop_info_title'] = ((get_magic_quotes_gpc()) ? stripslashes($HTTP_POST_VARS['shop_info_title']) : $HTTP_POST_VARS['shop_info_title']);

本来であれば、これで理論上はあっているような気がするのですが、他のモジュールではいちいちget_magic_quotes_gpc()でmagic_quotes_gpcがOnかどうか確認するまでもなく、stripslashesしているのも見受けられ、なぜなんだろう?と思っていたのを思い出しました。

なお、試しにmagic_quotes_gpcをOffで実験したところ、軽石庵さんのご指摘の事象になりました。

ということで、わざわざget_magic_quotes_gpc()で確認する必要はないということかもしれません。
ちなみに私はいつもmagic_quotes_gpcをOnの状態で使っていたので、ご指摘を受けるまで気がつきませんでした。

なので、

$shop_info['shop_info_title'] = ((get_magic_quotes_gpc()) ? stripslashes($HTTP_POST_VARS['shop_info_title']) : $HTTP_POST_VARS['shop_info_title']);

といった行は、すべて

$shop_info['shop_info_title'] = stripslashes($HTTP_POST_VARS['shop_info_title']);

に修正していただけますでしょうか。

あと、最適化の目安ですが、sessionについては今まで全く気にしておりませんでした・・・。
osCommerceの情報を見ていても、特にこのあたりの目安は見つからなかったので、私にもよくわかりません。

気になったときにoptimizeするというくらいでいいかと思いますが、いかがでしょうか。(根がずぼらですみません・・・)
いつもありがとうございます>Ryuさん

さて、教えていただいた処理を行った上で検証してみましたが、無事に二重引用符はエスケープされなくなりました。調べてみたんですが、XREAではmagic_quotes_gpc はoff に設定されているようです。

とりあえずこれで一安心、なんですがもう一点、同じくお知らせ管理画面からの操作で、リンクを張ると自動的に自分のサイトのルート部分に当たる絶対パス(っていうのかな? うちだとhttp://www.karuishian.com/catalog/ )が頭に付加されますよね? これって外せないものなんでしょうか? いや、トップから他所様のところにリンク張りたいときってあると思うものですから。

オーバーヘッドの件は了解です(^^;)。なんか重たくなったなーと感じたら最適化してみる、って感じでしょうか。あまり頻繁にやってもよろしくないのでしょうね。
軽石庵さん>

絶対パスの件ですが、これはこちらで確認する限りでは、magic_quotes_gpc がoffのときに発生するようです。
なので、私の環境(magic_quotes_gpc がon)では、ちゃんと外部リンクをつけることができました。

もし.htaccessの編集が可能であれば、試しに下記のパラメータを追加してみてはいかがでしょうか。

php_flag magic_quotes_gpc On
さっそくありがとうございました>Ryuさん

XREAの掲示板なども見てみたんですけど、やはり.htaccess で対応するもののようですね。ということでこちらも解決しました。今回もどうもありがとうございました。

 って待てよ、もしかしたら最初から .htaccess を設定してやれば、ソース書き換えの手間も必要なかったってことなんでしょうか(^^;)?
軽石庵さん>

>  って待てよ、もしかしたら最初から .htaccess を設定してやれば、ソース書き換えの手間も必要なかったってことなんでしょうか(^^;)?

そ、そうですね。(汗)

さらに、次バージョン用にそのあたりを修正したshop_info.phpをsourceforge.jpにアップしておきましたので、そちらをご利用いただくという手もあります。。。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/koshoten-net/koshoten-net/admin/shop_info.php?rev=1.2&view=log
※ 上記ページのRevision 1.2 の(download)を押すと最新版がダウンロードできます。

なんだかんだと手間をおかけしてしまいますが、これからもいろいろとご意見よろしくお願いいたします。
商品一括登録時の質問です。
一点ずつ登録するときは管理コードの自動採番がありますが、一括登録時もできますか?
板吉さん>

一括登録のときは、自動採番はありません。

ただ、カスタマイズするのは、たいして難しくないと思います。

一括登録時に「管理コードをIDに使用:」を「使用しない」にするとproducts_idが自動採番されるのですが、その値が、
/admin/products_uploader.php
の496行目(ver.2.2.0)あたりにある、
$products_id = tep_db_insert_id();
にはいるので、
それを再度productsテーブルのproducts_modelに入れれば、products_idの値を管理コードとして使用できます。
ごちゃごちゃといじって見ましたがうまく行きません。
多分見当違いな事をやっているかと・・・

やった事-----------------------------------------------------------
494行目辺りの
tep_db_perform(TABLE_PRODUCTS, $sql_data_array);
// products_to_categoriesテーブルへの登録
の間に、以下を挿入。
$products_model = tep_db_insert_id();

アップロード設定の管理コードを「並び順」から順に
0、無記入、0、12、―
に変更。

「管理コードをIDに使用:使用しない」にチェックしてアップロードすると以下のメッセージ。

1062 - Duplicate entry '0-25' for key 1
insert into products_to_categories (categories_id, products_id) values ('25', '')
-----------------------------------------------------------------
正直どこが何をやっているかわからないで勘で触っている状態です。
具体的にはどうしたらよいのでしょう?
お手数かけますがよろしくお願いします。
板吉さん

かえって混乱するようなことを書いてしまってすみません。

もっと簡単なやり方があります。
とりあえず、上記のカスタマイズを忘れていただいて、挿入した行を削除して戻しておいてください。

次に、
/admin/products_uploader.phpの432行目(ver.2.2.0)あたりの

if (File_Exists(FILENAME_UPLOAD_TEMPFILE02)) {
$insert_ok_count = 0;

の後に、

$auto_count = 0;

を追加して、
さらに、490行目あたりの

// no_useの場合はそのままinsert
// productsテーブルへの登録

の後に、

$auto_count++:

を追加して、その次の行の

$insert_p_data = array('products_date_added' => $upload_date);

を削除して、

$insert_p_data = array('products_id' => $auto_count,
'products_date_added' => $upload_date);
$p_data_array['products_model'] = $auto_count;

を追加していただくと、上手くいくかと思います。
ご回答ありがとう御座います。
ご指示の通り修正した所、以下のエラーメッセージが出ました。

Parse error: syntax error, unexpected ':' in /*****/admin/products_uploader.php on line 496

該当の行は
$auto_count++:
がある行です。
よろしくお願いします。
板吉さん>

$auto_count++;

の最後は、コロン(:)ではなく、セミコロン(;)になります。

セミコロンに修正して再度お試しいただけますでしょうか。
$auto_count++:

$auto_count++;
に直してやってみました。

products_uploader.phpは問題なく表示されたのですが、csvファイルをアップロードしたところ、以下のようなエラーが出ました。

1062 - Duplicate entry '0-25' for key 1
insert into products_to_categories (categories_id, products_id) values ('25', '')
[TEP STOP]

アップロード設定の管理コードは「並び順」から順に
0、無記入、0、12、―
「管理コードをIDに使用:使用しない」にチェックしています。
よろしくおねがいします。
手元に確認できる環境がないので、あくまで推測に過ぎないのですが、もしかして、products_uploader.phpの496行目(ver.2.2.0)あたりにある、
$products_id = tep_db_insert_id();
を削除したってことはありませんでしょうか。

カスタマイズ時に追加した
やった事-----------------------------------------------------------
494行目辺りの
tep_db_perform(TABLE_PRODUCTS, $sql_data_array);
// products_to_categoriesテーブルへの登録
の間に、以下を挿入。
$products_model = tep_db_insert_id();
-----------------------------------------------------------------
は、削除してしまっていいのですが、もともとあったほうは生かしておく必要があります。
そこは削除してませんでした。
自分が信用ならないので、>>42の作業前に、新たにファイルをDLし直し、デフォルトのproducts_uploader.phpで>>42の作業をしました。
よろしくお願いします。
なにか、不完全な商品データがデータベース上に残っているのかもしれません。

一度、全件削除してから試してみることはできますか?
全件削除してから再度アップロードを試みました。
(商品データ10件分)
やはり同じようなエラーメッセージが出ます。

その後、商品一括処理ページ上部の「商品総点数」、「品切れ点数」には「2」、「0」とあります。
ショップサイトにも商品の表示は無く、商品管理で在庫ありの商品を検索しても「検索対象の商品はありませんでした。」と出ます。

商品データをDLしてみたのですが、カテゴリーが空欄、管理コードが0、他問題無しのデータが1つしか入っていませんでした。

よろしくお願いします。
訂正です。

ショップサイトには商品が2つ表示されていました。
1つはカテゴリー、管理コード以外は正常です。
カテゴリーはどこにも属してなく、管理コードは表示されていません。
もう1つは価格のみです。

両方ともトップページの「○月の新着商品」の所のみに表示されています。
では、products_uploader.phpの495行目(ver.2.2.0)あたりの、

// products_to_categoriesテーブルへの登録
$products_id = tep_db_insert_id();



// products_to_categoriesテーブルへの登録
$products_id = $auto_count;

にするといかがでしょうか。
ご指示の通り修正しましたが、>>45と同じようなエラーが出ました。
もしかして実は結構面倒な事になっているんでしょうか。
ちょっと時間ができたので、試しにこちらでもやってみたところ、無事に管理コードが自動採番されました。

なにか見落としはありませんでしょうか。

また、次善策としては、下記のカスタマイズをすることで、ダウンロードしたデータに自動採番された管理コードを含ませることが出来ます。

==========================================================
/admin/products_uploader.phpの697行目あたり

// データ抽出SQLの作成
if ($cfg_data_row == 1) {
$select_column_list = $cfg_field;



// データ抽出SQLの作成
if ($cfg_data_row == 1) {
$select_column_list = 'p.products_id, ' . $cfg_field;

にし、
722行目あたりの

} elseif (($column_list[$i] == 'products_price')) {
$csv_rec .= ($csv_row_flg ? $ini_data['upfile_delimiter'] . '"' : '"') . (int)$download[$column_list[$i]] . '"';

の後に、

} elseif (($column_list[$i] == 'products_model')) {
$csv_rec .= ($csv_row_flg ? $ini_data['upfile_delimiter'] . '"' : '"') . $download['products_id'] . '"';

を追加してください。
==========================================================

上記カスタマイズにより、最初に管理コードがないデータで一括登録(このときは「管理コードをIDに使用:使用しない」にします)し、それをダウンロードすることで管理コードが自動採番されたCSVファイルが手に入ります。
それをまた一括登録(このときは「管理コードをIDに使用:使用する(ID重複時は登録しない)」にします)すると、最終的に意図した結果になるかと思います。
再びデフォルトのproducts_uploader.phpをDLし直し、>>42の作業と>>51の作業をしましたが、結果は変わりませんでした。

また、>>53の作業を>>42、>>51の作業済み、未作業と両方のファイルで試しましたが同じようなエラーが出ました。

どういう事なのかさっぱり・・・
もしかしたら環境の違いなのかもと思ったので、phpとmysqlのバージョンを書いておきます。
PHP4.4.4
MySQL4.0.26
ちなみに、デフォルトのproducts_uploader.phpのまま、アップロード作業をすると問題なく一括登録ができるのでしょうか。

もし、それすらも上手くいかないようですと、なにかアップロードデータのほうに問題がありそうな感じがします。
デフォルトのproducts_uploader.phpで、管理コードを設定すると問題なく一括登録できます。
これは大人しく管理コード設定しておけっていう事でしょうかw
うーん、ちょっと解決策が思い浮かばないです。

Excelとかで簡単に連番をつけることはできますので、そのほうがいいかもしれないですね。

お役に立てませんで、申し訳ございません。。。
そうですね。
「なきゃいかん!」て機能でもないですし・・・

こちらこそ色々お手数かけてすいませんでした。
何もわからない者に付き合っていただいてありがとう御座いました。
Koshoten.net2管理人のRyuです。

公式サイトにユーザ登録できない、という不具合を以前よりご報告いただいておりましたが、このたびようやく不具合を解消することができました。
# 一部プログラムファイルの破損が原因でした・・・

今まで、公式サイトのユーザ登録がうまくいかなかった方は、お手数ですが再度登録作業をお願いいたします。

遅ればせながら、今年もKoshoten.net2をよろしくお願いいたします。
初めまして。Koshoten.net2 の導入でつまずいています。アドバイスをいただければ幸いです。

XREA+を使っているのですが、なぜか注文メール等においてsendmailでのメール配信ができません。smtpだと配信されますが、二重に送信されてしまいます。

サーバ(s263)のsendmailに問題はないようです。別のcgiで確認しました。

よろしくお願いします。
>アランさん

 はじめまして、軽石庵と申します。私もXREAを使っていて、同じ現象にぶち当たりました。その経緯はこの「導入Q&A」スレッドの#14〜#19に残っています。これが参考になるかも知れません。

 お役に立てば幸いです。
>Ryuさん
お疲れさまです。公式サイト、めでたくログインできました!ありがとうございます。
>軽石庵さん

ありがとうございます。導入メモのほうは目を通していたのですが、こちらのログは見落としていました。すみません。

email.phpを修正したところ、sendmailが使えるようになりました。

が、ひとつ問題が。sendmailで送信したメールの先頭に、X-PHP-IDTIME〜 がついてしまうのですが、これはどうにかなるのでしょうか。
うーん申し訳ないです。こちらではそういう事態は発生しなかったような気がするものですから…。これはちょっと、ワタシの守備範囲を越えていそうです。
アランさん>

初めまして。Ryuです。

「X-PHP-IDTIME〜」というのは私も見たことがないのですが、もうちょっと情報をいただけませんでしょうか。

軽石庵さん>

お待たせいたしました。
ようやく公式サイトの不具合を治すことができました。

Koshoten.net2のバージョンアップについても、これからボチボチ時間を見つけて進めたいと思います。
>軽石庵さん
いえいえ、とんでもないです。ありがとうございました。

>Ryuさん
ありがとうございます。登録確認メールはもちろん、Koshoten.net2から送信されるメールすべてに、次のようなフレーズがメールの先頭に挿入されます。

X-PHP-IDTIME: 13187 2007-02-07 12:52:21


設定はすべてデフォルトのままでも同様、本家のosComerceでも試してみましたが、やはり結果は同じでした。ちなみに、他社のレンタルサーバ(チカッパ、さくら)ではこのようなことは起こりませんでした。

他社サーバの利用も検討しつつ、こちらでももう少し調べてます。
アランさん>

X-PHPやIDTIMEでGoogleしてみても、全くといっていいほど情報がないですね・・・。

なにかXREA特有の事例なのかもしれませんね。

もし何か進展がありましたら、書き込みよろしくお願いいたします。
はじめまして。CSVの一括アップロード処理で行き詰っています。
アップロード設定で、カテゴリーが二重に表示され、一応50まで無理やり番号を振っても、設定データに不備がありますが表示されます。
07/6/19日の2.2.1版を使用しています。スクリプトはオリジナルなままで、別環境のサーバーでも再現しますので、データーベースの破損ではなさそうです。
どう設定すればエラーが出なくなるのでしょうか。アドバイスいただければと思います。
ツヨシさん>

こんにちは。Ryuです。

ご説明と画像を拝見すると、原因は不明ですがアップロード用の設定ファイルがおかしくなっているようです。

通常、アップロード用の設定ファイル(/admin/data_upload/upload_csv_format.txt)は、

2,p2c.categories_id,ID,0,1,11,*
15,p.products_model,,,0,12,*
3,pd.products_name,,,1,255,*
0,pd.products_subtitle,,,1,255,-
0,pd.products_series_title,,,1,255,-
5,pd.products_author,,,1,255,-
7,pd.products_description,,,0,65535,-
0,pd.products_description2,,,0,65535,-
13,pd.products_keywords,,,0,65535,-
0,p.products_isbn,,,1,50,-
9,pd.products_volume,,,1,50,-
0,p.manufacturers_id,NAME,,0,11,-
8,pd.products_published,,,1,100,-
11,pd.products_publishers,,,1,2550,-
12,p.products_quantity,,0,1,4,-
14,p.products_image,,,0,64,-
0,p.products_status,,1,1,1,-
10,p.products_price,,,0,20,*
0,p.products_weight,,0,1,8,-
0,p.products_date_available,,,,,-
0,p.products_tax_class_id,,1,1,11,-
0,pd.products_url,,,0,255,-
0,p.recommendation_order,,0,1,3,-
0,p.sort_order,,0,1,12,-
0,pd.products_memo,,,0,255,-

といった感じで、1行1項目になっているのですが、
今回、この設定ファイルが1項目あたり2行になっているのかもしれません。

ちなみに上記は、2.2.1版のオリジナルの設定ファイルの内容です。
もし上記と設定ファイルの内容がかわっているようでしたら、
上記をコピーして設定ファイルにペーストして使ってみてください。

よろしくお願いいたします。
早速の回答ありがとうございました。オリジナルの元データに何故か改行コードが加わり、データが一行飛ばしで登録されていたのが原因でした。
改行を取り除き、CSVの項目にあわせてシーケンスを振り分けて、無事一括登録できました。
ただ、IDの項目に手こずり、IDが登録されていませんのエラーが出て悩んだのですが、使用をやめて管理コードを割り振るにしちゃいました。別に運用に問題はありませんし、必要であれば他の空き項目に振って、phpMyAdminあたりから見ればいいかなっと思っています。
今後、サイトの色全体を変更したいという大きな野望?があり、単にCSSの色コードを変えるだけでは駄目っぽいので安定運用後の課題としています。またお世話になるかと思いますがよろしくお願いします。
ご無沙汰しています。ようやくチョコチョコとカスタマイズも終わり、もうすぐそれなりにようやく完成の段なのですが、代金引換の請求設定で悩んでいます。
最終画面のcheckout_confirmation.phpで、代引きの手数料が顧客請求金額に含まれません。自分の設定の方法が悪いのか、OSC元々の仕様っぽい気もするのですが、請求書金額以外に別途代金の支払いが生じるのはマズイかと思います。
イメージ的には
小計: 520円
ゆうメール: 340円
代引手数料: 390円
合計: 1,250円
という感じにできればいいなと思うのですが、どう変更すればよいのかさっぱり見当が付きません。仮に表示のみを変更できたとしても、売り上げ管理画面上でも反映される必要があると思いますので、シッピングの項目名を、ゆうメール(代引)に変更し、送料を730円に変更してDBに書き込めばよいかと思うのですが、送料絡みのあたりのソースが非常に難しくてお手上げに近い感じです。何かヒントをいただければと思います。
自己解決しました。っていうか、合計行モジュールの設定を変えれば表示するようになってるんですね。某所oscommerce+mobileのデモも見て、代引き手数料は枠外に表示される仕様だと思い込んでしまいました。
手数料を抱き合わせた送料を表示するために、配送手段選択の場面で、
・ゆうパック(通常)
・ゆうパック(代引)
というように表示し、次の支払方法の画面で、通常の画面では振込口座を表示、代引の画面では振込口座を非表示ってな逃げ方が一番ラクかもって考えていました。めでたくお蔵入りです。(´ー`)y-~~。
http://sourceforge.jp/forum/message.php?msg_id=15389

ログインすると、残り32件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

koshoten.net 更新情報

koshoten.netのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング