【V5計画】CAFEMILK SHOPPING CART V5 (113レス)
上下前次1-新
28: 2009/07/23(木)03:05 ID:??? AAS
コントローラ
テンプレートエンジン本体の各機能を一括して操作する
基本的に、main.cgi経由でのexecuteからの要求を受けて、
スキンを取得しろとかプラグインを実行しろとかタグを置き換えよとか本体に言う
コントローラは直接WORDLISTにアクセスできない
→executeかpluginを経由すればOK
本体
要求に応えてスキンを取得する
要求に応えてプラグインを実行する
要求に応えてタグを置換する
省11
29: 2009/07/23(木)13:45 ID:U4ZiCbfG(1/2) AAS
■ スキン
テンプレートエンジンは難解だがスキン側から見ると単純
HTMLに独自タグを使う
部品化されている
基本的に2種類
プラグインタグ
pluginを呼び出すタグ
→pluginはスキンにて呼び出しを要求するという仕様
テンプレートタグ
各種要素を出力する
省9
30: 2009/07/23(木)13:47 ID:U4ZiCbfG(2/2) AAS
わかりやすく言うと、
プラグインタグはスキン部品呼び出し(そのうえプログラムを実行できる→自由度が高い)
テンプレートタグは要素(文字列など)呼び出し(スキン部品の呼び出しやプログラムの実行はできない)
どちらにもオプションをつけることができる
<####hoge:a:b:e:c####>
foreachなどの命令文は一切ない
→そのへんはexecuteかpluginにやらせる
31: 2009/07/25(土)21:54 ID:EVQjpFBn(1) AAS
>>1です
ZENでショップにトロイを仕込まれるトラブルが発生してます。
CSRF脆弱性を突いてアップロードされたそうです。
自動ツールで攻撃されているようで、被害は多数に及んでいるはずです。
大半のショップは問題に気づいていないでしょう。恐ろしいことです。
外部リンク[php]:zen-cart.jp
CAFEMILKでは
CSRF脆弱性は独自の「実行リクエスト保護多重セッション」によって防止
されている
アップロードされたファイルのMIMEタイプを読んで決められたMIMEタイプ
省4
32: 2009/07/25(土)21:57 ID:PUE3LKWG(1) AAS
CAFEMILKは、既存の脆弱性についてはすべてについて入念に対応したと
公言しています。
その内容は上に書いたとおりで、なかなかよくやっていると思います。
33: 2009/07/25(土)21:59 ID:BwZLCaSC(1) AAS
すいません
既存の > 既知の
でした。
34: 2009/07/25(土)22:03 ID:??? AAS
>>1 って作者?
35: 2009/07/27(月)01:31 ID:??? AAS
CSRFなんて昔は気にされていなかったものだしあとから対応ってことが難しいからここのような後発の製品に強みがあるんだな
一般にショッピングカートと名がついているものの大半はCSRFなんか放置してるだろうに
いまCSRFに対する完全な防御を謳っている製品がどんだけあるだろうか
36: 2009/07/27(月)12:43 ID:??? AAS
■ サブルーチン(など)のルール
サブルーチンの呼び出しは以下のようにして行うとルール化されている
[呼び出す側]
パッケージ名::サブルーチン名
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
status => $status,
省12
37: 2009/07/27(月)12:45 ID:??? AAS
オブジェクト方式についてもだいたい同様
[例]
my $database = Cafemilk_database_log->connect
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
status => $status,
column_filename => 'database/item_column_list.csv',
省8
38(1): 2009/07/27(月)12:47 ID:??? AAS
ルールの意味をわかりやすく説明するサンプルコード
my $userdata = {};
$userdata->{test} = 1; ← ? 格納した情報を
require 'test.pl'
Test::testsub
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
省14
39(1): 2009/07/27(月)12:57 ID:??? AAS
■ CGIモジュール
モジュールCGI.pmは以下のようにして呼び出される
$userdata->{cgi_query} = CGI->new();
こうすることでCGIオブジェクトはdieしなくなるので、どこからでも呼び出して利用できる
(CGI.pmはフォーム関連の環境変数を消してしまうので2度のuseができない)
[例]
my @param_list = $userdata->{cgi_query}->param();
40: 2009/07/27(月)13:01 ID:??? AAS
>>38の訂正 ちょっとだけ
require 'test.pl' > require 'test.pl';
sub test > sub testsub
41: 2009/07/27(月)13:04 ID:??? AAS
>>39 ちょっとだけ
2度のuse > 2度のnew
42: 2009/07/27(月)20:55 ID:??? AAS
このスレの書き込み、なにがしたいんだ?
43: 2009/07/28(火)00:49 ID:??? AAS
誰かがプログラム解析して情報載せてるんだろ
どこかwikiでも紹介したらそちらに行くんじゃ?
44: 2009/07/28(火)01:10 ID:??? AAS
ここはWEBプログラミング板だったよな
45: 2009/07/28(火)18:06 ID:??? AAS
■ データベース
独自のモジュールを使う
CSV形式
エクセルに対応してるらしい
カラム名を指定して操作する
2種類
通常
商品や会員などを扱う
ログ
レコードの操作があまりできない 読込と追記専門
省2
46: 2009/07/28(火)18:08 ID:??? AAS
基本的な使い方
my $database = Cafemilk_database_basic->connect ← オブジェクト方式connectで呼び出す
({
config => $config,
userdata => $userdata,
log_error => $log_error,
log_alert => $log_alert,
status => $status,
column_filename => 'database/item_column_list.csv', ← カラム名の情報
column_separator => ',',
省9
47: 2009/07/28(火)18:15 ID:??? AAS
レコードのマッチングをしたいとき
$database->get_record_all();
$database->match_database
({
column_name => 'カラム名',
match_word => '値',
});
my @lines = $database->get_extract_database();
レコードのサーチをしたいとき
$database->get_record_all();
省13
上下前次1-新書関写板覧索設栞歴
あと 66 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.013s