☆ショッピングカートのCGIを作りたい!Perlで☆
仕事が忙しいのは仕方ないとして、 ttp://cgitest.s7.xrea.com/cart.txt これの再アップだけでもして欲しい・・・ なぁ、>>1 よ 俺も君と同じようにPerl馬鹿だった。 でもさっきPHPの本を軽く読んでみた。 馬鹿にならんくらい簡単だぞ、これくらいできるようになった君ならあっという間に 完成できるかもしれない。 PHP4をお勧めするよ、マジで。 こんなにセッション管理が楽だとは思わなかったよ。 >>276 お待たせしました。ウプ完了です。 最初のに送料計算用のスクリプトを加えようとしてるんですが、今のところ機能 してません。しばらくいじってなかったらすっかり忘れてるし(w >>271-275 ご協力ありがとうございます。てか、一瞬で終わってるな・・・・ >277 PHPは最初の方でも勧めてくれた方がいたような・・・・ とりあえず現状最もデファクトスタンダードに近いと思われるという事で Perlから始めて見ました。まぁ、こんなタラタラやってるうちにPHP全盛って事に なったりは・・・・しませんよね? というわけでまたボチボチ続きを始めますのでよろしくお願いします・・・(何をだ?) 送料の自動計算と「〜円以上送料無料」のの機能を追加してみました。 未だに微妙に文字化けするのがチョイ鬱・・・・ 文字コードをフォームのHTMLも含めて見直してみます。 >>279 HTTPヘッダのところでも指定した方が良いよ >278 そうだね、現状ではサーバを製作者側で指定できない限りはPHPはまだ使えないね。 シカーシPHPも4になってほぼ機能的に出尽くした感があるし、ぼつぼつ標準設置の レン鯖増えてきたし、WebアプリののRADとして、Perlとはすみわけしながら普及 しそうな勢いがあるな。 ところで設置URIは、上記と同じ ttp://cgitest.s7.xrea.com/cgi-bin/shop4.htm でいいのかえ?最終確認画面で文字化けしちょるようだが なかなかのデザインだのう。 はよ完成して動くことを祈る。 Mac/iCab2.71で見ると、購入ボタンの次の画面でunknown Content-Type: が出よりますな。 CGI中のHTMLヘッダで文字コードを指定する場合って、たとえばeucにしたいのなら "content-type: text/html;charset=EUC-JP\n\n"; で良いんでしょうか?ここで言われたので、ぐぐるで検索掛けてみたら 上のような書き方がちらほらあったので。ただ「文字コード、charset」とかで検索すると ほとんどが<META>タグの記述方法になってるので、いまいちこれでいいのが自信が無い・・・ いまさらながら気が付いたんですが、どの本読んでもhtmlヘッダ に関しては "content-type: text/html\n\n" を書けとしか書いてないんですよね。散々文字コードの事は書いてあってjcode使って コンバートしろとかは書いてあるのに・・・・ スイマセンsage忘れ・・ 間に合いませんでした。 >>285 あってる。 ただ、;のあとに半角スペース入れた方がいいのかな 意味あるのかは知らないけど、みんなやってるということで print "Content-type: text/html; charset=euc-jp\n\n"; でもmetaにも書いてくれると親切だ。 ありがとうございます。ヘッダとMETA両方にしつこいくらいに書きます(w しかし、なんで入門書にこれが書いて無いんですかね? 文字コードの自動判定なんてまともに出来ないヴァカブラウザがゴロゴロしていて 純粋なHTMLはS-JISで書くのが一般的(?)なのに・・・ いくらフォームデータエンコードしても、CGI内のHTML表示部分で ちゃんと指定しとかなきゃ行ったり来たりしてる間にブラウザも迷うっちゅねん! と思うのですが・・・・ ところで、皆さんはCGI内のHTML部にMETAとか<HTML></HTML>書くときに 何処に書いたらいいかわからなくなる事無いですか? 一箇所で完結すれば良いんですがHTML出力を前半と後半をサブルーチンで 分けたり、使いまわしたりする時に、</html>は何処に入れるんだ? とかここは<html>はいるのか?みたいに >>288 そうだよ両方書くんでちゅ。 それが当たり前でちゅ。 ていうかここで2回も書いたんでちゅ。 ヘッダ出力とフッタ(は要らんかもしれんが)を サブルーチンとかモジュール化したら? CGI.pmでもヘッダ出力できるけど、 日本語の場合、文字コードの指定が必要だから ジブソで用意しました。 >>289 うろ覚えだけど、最近の CGI.pmなら 文字コードやContent-Typeとかも 指定できた気がする えらいぞ!短期間でよくここまで! 後は289のいうとうりモジュール化することを進めるよ! あとでつかいまわしができるよ! CGI.pmでヘッダ出力できるよ。 #!/usr/bin/perl use CGI; $query = new CGI; print $query->header(-charset=>'Shift_JIS'); おいらは最初にヘッダを出力しちゃってそれぞれの出力終了時にフッダの サブルーチンに飛ばしてる。 >>289 >ていうかここで2回も書いたんでちゅ。 そうでしたね。いや、読んではいたんですが、どうしても>>285 の方法が はっきり自信持てなかったもんで・・・・ >CGI.pm その辺の事は今後順次勉強していきたいと思います。とりあえずはできるだけ 自分で書くというのも勉強になりますので・・・ >モジュール化 プログラム経験が無いのでモジュールと言うものの概念がいまいちワカランのですが 「良く使うものをサブルーチンにして、それを別ファイルに纏めておく」と言うことで 良いんでしょうか? >>291 ほんとにここでスレ立ててよかったです。本とかWEB情報だけじゃこの短期間ではとてもじゃ 無いけどここまで出来なかったと思います。 調子に乗って「ド素人のド素人のためのCGI入門」のHPでも立ち上げようかな・・とか思ったりしてます(w ここまでやってきて思ったのは「初心者用」とか「入門」といううたい文句の本やWEBの説明も 所詮(失礼ですが)プログラマーの方が書いてるので、「ド素人が如何に無知か」という事がいまいち 理解されて無いようなので・・・ >>292 print $query->end_html これで終れる >「良く使うものをサブルーチンにして、それを別ファイルに纏めておく」 >と言うことで良いんでしょうか? サブルーチンをファイルにしてメインからrequireするあたりがモジュール化の第一歩。 そこから名前空間の概念覚えて、別ファイルのほうpackage宣言してみて、って 少しづつ覚えていけばいいと思うよ。(その先がまだ長いんだけれど‥‥) いきなり.pmモジュールなんていうとワケわかんなくなるからね。 で、商品ページの方はどうよ? >>295 なるほど、そんな単純なものではなさそうですね>モジュール >商品ページ いかんせん仕事の都合で間があいちゃったんで全然出来てません。設計書を作ってる 最中だったんですが、今読み返してみるとようワカラン(w もう一度1からやり直しです。最初はフォームからHTML生成しちゃおうと思ったんですが、 在庫数をカウントしたいので、cgiからdatファイルから読み出してHTML表示させるしか無さそう・・・ HTMLにHiddenで入れようとも思ったのですが、商品が減る度にHTML書き直させなきゃならなそうだし。 ただ、全てをCGIにやらせると鯖の負荷も高くなりますよね?どうしたものか・・・・ >296 open (READ,$filename); @data = <READ>; close (READ); #@dataに対して必要な処理 open (WRITE,">$filename"); print WRITE @data; close (WRITE); 式でやると、.datの件数が増えると負荷もかかるしメモリも喰う。 これは鯖屋さんに嫌われる。(警告が来たり、いきなり垢止められたりする) open (READ,$filename); open (WRITE,">$tempfile"); while($line = <READ>){ #$lineに対して必要な処理 print WRITE $line; }; close (WRITE); close (READ); rename ($tempfile, filename); 式でやるなら、1セッション中に(検索と在庫デクリメント程度であれば) 複数回処理かけても大した負荷(プロセス時間)にはならないし、メモリも 喰わない。この方式で数百〜1万件(行)程度の処理しつつHTMLを吐かせる CGIを一般の複数件のレン鯖に置いているけれど、苦情は来たことがないぞ。 この場合、.datはTABまたはSPACE区切りテキストがいいな。 一般配布のCGIにはカンマ区切りが多いけど、UNIX育ちのPerlのsplitは/\t/ や/\s+/に対し最適化されているから、行数が大きくなったときの処理時間の 差は結構馬鹿にならない。 カンマ区切りだと例外処理がウザい(書き込み時にデータにカンマがないか チェックするか、Excelなcsvにすべくクオート処理せねばならん。後者の場 合、単純にsplit出来なくなる)しね。 プチECとしてはデータ内に半角スペースも含まれるだろうから、TAB区切りが 一番いいだろう。 えーとパスワード認証してるCGIに直接アクセスするにはどうしたら? フォームが <input type="password" name="pass" size="10"> <input type="hidden" name="mode" value="login" > になっていて、 &ReadParse(*form); $pass=abc; $fpass=$form{'pass'}; if ($fpass eq $pass){ #−−−メニュ画面ーーーーー# } ってなってるんですが、後の(他の)処理の中でその処理終了後 メニューに飛ばしたいんです。hogehoge.cgiになんかくっつけて呼び出す(?pass=とか?) ような感じになるんじゃないか?というところまではたどり着いたんですが・・・・・ すいません。書き方悪かったですね・・・・流れとしては フォーム(HTML)からパスワード入力>menu画面(menu.cgi)>データ入力 >データ入力後refreshでもう一度menu画面に戻る。 てのをやりたいんですが、戻り先をmenu.cgiにするのにパスワード を渡す方法をがわからないんです。そもそもFORMのinputで渡すような項目を Formを使わずに渡す方法ってどんなのがあるんでしょう? >>300 方法としてアドレスに埋め込む(リフレッシュ先のアドレスに仕込む) hoge.com/menu.cgi?id=hoge&pass=hoge HIDDENを使う データ入力の度に <INPUT HIDDEN NAME=id VALUE=hoge><INPUT HIDDEN NAME=pass VALUE=hoge> これを必ず仕込んでおく なお、どちらの方法でもmenu画面で逐次パラメータを取得して次に渡す必要がある 的外れの返答かな? 自己訂正 当然ながらHIDDENを使うときはFORMタグを必要としますからね。 ありがとうございます。その辺を知りたかったんです。 つまり、通常フォームから <input type="password" name="pass" size="10"> <input type="hidden" name="mode" value="login" > と言う内容をsubmitボタンを押すことにより送信するんですが、 その内容をフォームを使わずに渡す方法を知りたかったんです。 >>301 の説明だと menu.cgi?mode=login?pass=123 とかで良いんですかね? でスクリプト中で$loginpass=123とか指定しておけば、cgi内から上記のように リンクかける場合は menu.cgi?mode=login?pass=$loginpass としておけば大丈夫って事ですよね? とりあえずやってみます。 >>303 そのとおり。 あと老婆心ながらHTMLのタグを書くときに""(クオーテーション)はいらない。 ""がいるのはスペースが含まれる場合のみ。 ""を省略するだけで結構処理スピードがあがるよ。 ありがとうございました>教えてくださった皆様・ うまくいきました。 ちなみにこれと同じ方法を使ってFORM内の Submitボタンを画像とかに置き換える事は可能なんでしょうか? ボタンの変わりに画像貼ってそれのリンク先をmenu.cgi?neme=submit ってやるとsubmitボタンとして動作します? 皆様いつもありがとうございます。 商品ページ作成部分が若干出来たのでウプしました。 ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm から入れます。パスワードは「123」です。 今のところ、商品カテゴリーの作成と商品の追加しか動きません。 カテゴリーを追加した後に商品を追加する事になります。既存のカテゴリーは 「商品群1」と「商品群2」です。 商品群1の内容は ttp://cgitest.s7.xrea.com/cgi-bin/main.cgi?mode=show&fname=test で 商品群2の内容は ttp://cgitest.s7.xrea.com/cgi-bin/main.cgi?mode=show&fname=test2 で見られます。 カテゴリーを新規作成の際のファイル名は拡張子無しで。新しく作ったカテゴリーの 内容を見るときは ttp://cgitest.s7.xrea.com/cgi-bin/main.cgi?mode=show&fname=”作成時につけたファイル名” できるはずです。 あ、今現在新規商品作成時に指定したオプション項目は反映されません。 「,」で区切って入力してもらって、そこからセレクトボックス生成させる のを今作ってます。 うーん、せっかく上手くいっているところに水を差すようだが、 URIでパスワード指定やっちゃうと、認証もクソもないぜ。 URIがバレた時点でソッコーで改ざんされっぞ。 googleツールバーの高機能版では閲覧中のURI自動通知されちまうしな。 「登録しました」のページに「メニューに戻る」ボタンをつけて、 hidden渡しじゃだめなんかい? どうしてもrefreshでやりたいなら、refererとってCGIと認証ページからの アクセスのみ許可するとかやってやんねーと。 >>311 確かにそれは思ったんですけど、一応pass入れたあとの管理者用画面だから 大丈夫かな・・・と考えてたんですが・・・・・ hiddenで入れてもソース見ればそのままpassが見えちゃうわけですし・・・・ >>312 postで(formから)passが入ってこないときadmin.cgiがエラーメッセージ吐いて 終了するようにすりゃいいんだよ。したら、URIがバレても簡単にはアクセスでき ないだろ? #!/usr/bin/perl require 'cgi-lib.pl'; my $method=$ENV{REQUEST_METHOD}; $pass='123'; &ReadParse(*form); if ($form{'pass'} ne $pass or $method ne 'post'){ #passミスマッチとGET拒否 print "Content-type: text/plain\n\nForbidden."; exit; } #──以下処理。formを吐く場合は必ず #<input type=hidden name=pass value=$pass>を仕込む GET全拒否しちまってるけど、たとえば、こうよ。 >hiddenで入れてもソース見ればそのままpassが見えちゃうわけですし・・・・ 上みたいな処置しときゃadmin.cgiにマトモにソースを吐かせるのに絶対にpostで pass渡さなきゃいけねーから、過信は禁物だがpassを知らない限りソースも見れん ワケよ。admin.htmにはpass書くわけじゃねーんだしさ。 #漏れはCGI.pm詳しくないんだが、CGI.pmでpostとgetの読み分けは出来んのかなあ。 #詳しい奴フォロータノム 後、>>311 でも書いたがrefererとって ttp://cgitest.s7.xrea.com/cgi-bin/admin.cgi ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm 以外からのアクセスは弾いちまえばいいんだよ。 ちょっと機能追加 登録済み商品の修正が出来るようになりました。 >商品登録テストしてくれて人 今のところ、文字置換やエラー処理全然いれて無いので、コメントのところで 改行入れるたり、新規ページ作成時に、ファイル名入れないと、データボロボロになります(汗 明日(今日か・・)必要フォーム項目未記入時のエラー処理と、改行その他、文字列の 置換処理を出来るようにします。 >>311 =313 なるほど・・・・と入っても、いまいち管理用画面でのその辺のセキュリティの必要性が 理解できて無いんですが・・・・・ どっちにrefererとって弾く事だけはやっておいた方がよさそうですね。 ところで、今回、新規データ入力時に @data=($no,$hoge,$mona,$gik) $line=join("\t",@data); open(FH,$file); @logdata=<FH>; close(FH); open(WRITE,">$file"); print WRITE $line; print WRITE @logdata; close(WRITE); として、新しいものが上に来るようにしました。 で商品修正時にココの前で教えてもらった方法2の応用で @newdata=($no,$hoge,$mona,$gik); $line=join("\t",@data); open(IN,"$file"); open(TMP,">$temp"); print TMP "$line; while(<IN>){ my @cell = split/\t/; if($cell[0] ne "$no"){ print TMP; } } rename($temp,$file) ってやってるんですが、この方法だと、修正したファイルがデータの一番上(一行目)に 来ちゃうんですよね(そういう風にしてるんですが) これって、たとえば4行目のデータだったら、また同じ所にかき戻す方法ってどうやれば良いんですか? if($cell[0] ne "$no"){ print TMP; の後に if($cell[0] eq "$no"){ printTMP $line; でうまくいかなかったです。書く位置がまずかったんでしょうか? $noは数値だよね? なら、 while(<IN>){ my @cell = split/\t/; $_ = $line if $cell[0] == $no; print TMP; } で数値評価したらどうかな? なんとなくだけど、$cell[0]か$noに空白とか含まれてそうだったんで。 >>316 うまくいきました。ありがとうございます<IN> で変数が$_に入ってるってのがすっかり頭から飛んでました・・ ところで、正規表現なんですが、たとえば$priceに半角数字以外(「,」とか)が入ってた場合に エラーを表示させるのって if ($price eq ~/\D/){ print "価格はカンマ無しの半角数字で入力してください"; } で良いんですよね? >>317 全然違う。検索は $scalor =~ /$hoge/; だぞ。 if ($price =~ /\D/) { print "価格はカンマ無しの半角数字で入力してください"; } まあがんばれ。 ↑の通りに書いてみたら,半角数字も弾かれちゃいました・・・・・ そうだと思うんですが・・・・ だから $price=~/\D/; だと「$priceに数字以外のものが含まれていれば」 って事になりますよね? のはずなんですが・・・・弾かれちゃうんですよ・・・ もう一度ソース見直してみます。 ってかさ、数字以外は取り除けばいいんでない? そっちの方がユーザーライクだと思うが。 $price =~ tr/0-9//cd; それも考えたんですが、全角数字入れられた時の対応も一緒に やっちゃおうと思ったので。 >325 そう思って [\D\s\t]とかもやってみたんですが・・・ダメ 適当なファイルに書き出して見てみたら? CGI::Carpとかでハンドルしてるなら warnや dieで見てもいいけど。 そうか、上手く逝ったか。漏れこのスレ、検証してないやつばっか(297とか^^;) 書いてるから、ちょっと心配してるんだな。 > で変数が$_に入ってるってのがすっかり頭から飛んでました・・ 慣れると便利なんだよ、デフォルト変数$_。 はまると怖いけどね。 で、正規表現検索は相手が文字列でも if ($price =~ /\D/)・・・ だよ。 えっと、上記の処理より前に if ($price eq ""){ print"error" } ・ ・ #その他変数の未記入チェック ・ ・ ってやってから上の処理やってるんですけど、その辺は関係あります? 一応、未記入のエラーはちゃんと表示されます。 で、上記の検索を書くと、数値だろうがなんだろうが弾かれちゃう・・・ うわ、 if ($price =~ /\D/){ print "$price"; } ってやったら、入力したのと違う数字が出てきた・・・・・ この数字どっから来たんだろ??? 198000って入力したのに429467294って・・・たかどんな数字入れても おんなじ数字が吐き出されてる????何でだ? ちなみに置換処理を無くして実行すると、ファイルにはちゃんと入力した 数字が書き込まれてます。 >>330 うわ、とっくに話題が過ぎ去ってやがる。リフレ忘れた。鬱打 &jcode::tr(\$price, '0-9', '0-9'); #全角数字を半角に変換 if ($price !~ /0-9/){ print "価格はカンマ無しの半角数字で入力してください"; } あたりではどうかな? >>332 という事は、その処理以前にどこかで$priceに値が代入されてるんだよ。 探しなさい。 え〜〜〜〜 解決したっぽいです・・・ どうやら、使ってるエディタにバグがあるらしく、上書き保存するとなぜか s-jisで保存されてたっぽい、のが原因みたいです。(設定はEUCにしてるのですが) お騒がせして本当に申し訳ありませんでした・・・・m(__)m エディタ変えようかな・・・・・ >>335 俺はいまだにメモ帳使ってるぞ。メモ帳最強。 あと、 >&jcode::tr(\$price, '0-9', '0-9'); #全角数字を半角に変換 jcodeでこんな事も出来るんですね。フォームデータ受け取り時に h2zでカタカナは全部置換させてるんですが、そこで数値にしなければならない 変数も全部変換掛けといた方がよさそうですね。 とりあえずご迷惑したお詫びに町内10周走ってきます。 皆様の暖かいご支援のおかげで、 新規ページの追加、商品の登録、編集、削除 までできるようになりました。また 「簡易商品ページメニュー」を作り、そこから商品ページにアクセス 出来るようにしました。(管理画面の中) ココに表示されるURLをコピペすれば、使う人は、メニューページを 自由に作れるのでは無いかと・・・・ ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm パスワードは123です。 ある程度のエラー処理と文字列置換は入れたつもりなのですが・・・・ >>338 適当に弄ってれば誰でも使えそうなカンジですね。 って、弄ってみました。 感想: どのページからでも管理画面に戻れると良いかなあ。 (ページ作る時に何回も戻ったので…) >>314 >いまいち管理用画面でのその辺のセキュリティの必要性が理解できて無いんですが・・・・・ だーかーらー、http:// うんちゃらかんちゃら/admin.cgi?mode=login&pass=xxxって URIがばれちまったらイッパツで商品ページ改ざんされちゃうだろっていってんの。 PasswordをGETに含めるのはヤバいんだって。直リンオッケーだしな。 知り合いとはいえ金絡んでやってんだろ?しっかりしろよ。 商品価格書き換えられたところに注文とか去れちまったら大損害だろ? URIバレた瞬間にPasswordもってかれちまうんだから、ほんとはPOSTがいいんだけどな、 せめてリファラチェック(GETメソッドはCGI自身からのアクセスみ許可)と、 本稼動のときは変な名前のディレクトリ作って、cgi本体の名前からは予想も出来ねー よーな名前でrobotよけのMETAつけた認証ページ設置するぐらいの対策はぐらいはしとけよ。 >340 robotよけのメタは、誰も見ていないです。きっと。 >340 詳しい説明ありがとうございます。リフレッシュを止めて、フォームボタンで hiddenを渡し、リファラチェックも入れるようにします。 ところで、一つのサブミットボタンで二つ以上のアクションを指定する事って 出来るんでしょうか?たとえば <form method=post action=hoge.cgi> <form method=post action=hage.cgi> <input ... <input.... <input type=submit value=OK> </form> </form> とかやっておけば、submit押した時に、両方にフォームの内容が送られるんでしょうか? むり(やったことないけど)。 仮に出来たとして、ブラウザはどっちに応答すればいいのさ。 >>342 二つ以上アクションさせたい場合はhiddenでvalueを送ってスクリプト のなかのifで受ける。 例: <form method=post action=hage.cgi> <input type=hidden name=action value=hoge> <input type=hidden name=action value=hage> <input type=submit value=OK> </form> 〜hage.cgi〜 if ($DATA{'action'} eq 'hoge') { ******************* } if ($DATA{'action'} eq 'hage') { ******************* } >>343-344 ありがとうございました。 今、注文受けたら在庫数を減らすってところを作ってるんですが これが結構大変そうです・・・・・ う〜ん、注文が確定した時(メールを送信する直前)にカートに入ってる 各商品の注文数を、商品ごとに各商品ファイルと照合して、注文数>在庫数 又は在庫数=0ならエラー、もし注文数<在庫数なら、「在庫数ー注文数」して 商品ファイル内の該当商品の在庫数を修正・・・・・ それぞれの処理は、今まで教えていただいた事でかけそうなんですが、データの抽出、条件分岐が非常に複雑になりそうです。 >>346 それって全然簡単じゃない?例としては if ($ORDER{'mona'} > $ZAIKO{'mona'}) { print "申し訳ありません。只今$ORDER{'mona'}は在庫を切らしております。\n"; } else { $ZAIKO{'mona'} -= $ORDER{'mona'} } こんな場合こそ、パール独特の変数、ハッシュが力を発揮する時だよ。 ハッシュを上手く使ってね。 >347 えっと、カートの中身が複数だった場合商品によって、格納されているファイルがそれぞれ違うので まずforeachとかで順にカートの中身を取り出しながら商品の格納されているファイルを、検索(hidenでファイル名を渡してある)して、見つかったファイル名をまたforeachなりwhileなりで 検索して、商品名がマッチしたら在庫数と注文数を比較、それで0か足りない場合は エラー、もし大丈夫なら、在庫数から注文数を引いて、ファイルに書き直し・・・・ みたいな事をやらなければダメな気がするんですが・・・ @files=glob "$dir/*.dat"; # $dirはディレクトリ名。*.datのlistを得る foreach $file(@files){ open FILE,$file or &error; while(<FILE>){ my($no, $hinmei, $zaiko・・・) = split /\t/; #左辺のmyのリストは適当に $zaiko{"$file::$hinmei"} = $zaiko; } close FILE; } とかやって%zaiko{"ファイル名::品名"}(%zaiko{"ファイル名::商品番号"}?)に 代入して、%zaikoに対しデクリメント。 >>347 さんの言うとおりhashならサーチ用にループしなくてイイからね。 で、 foreach $file(@files){ open FILE,$file or &error; open TMP,">$temp" or &error; while(<FILE>){ my(@dummy) = split /\t/; @dummy[2] = $zaiko{"$file::$hinmei"} if exists $zaiko{"$file::$hinmei"}; #$dummy[2]は適宜変更 print TMP @dummy; } close FILE; close TMP; rename $temp,$file; } とかやって戻してやるってのはどうかな? あ、ここまでやって思いついたが、カートの中身を %cart{ファイル名::商品名}=注文数 ってハッシュにして、後者の書き戻しループで在庫チェックさせればイッパツだ。 そのほうがイイや。速いし。 えーと、ちょっとヒマがあったんで上の追記を。 カートの中身を $cart{ファイル名::商品名}=注文数 (注文がない場合は0でなくハッシュを生成しない) ってハッシュにしてあるとして、 @files=glob "$dir/*.dat"; foreach $file(@files){ open FILE,$file or &error; open TMP,">$temp" or &error; while(<FILE>){ my(@data) = split /\t/; my $key = "$file::$data[2]"; # $data[2]は商品名ね if (exists $cart{$key}){ if ($data[1] < $cart{$key}){ #$dummy[1]は在庫 print "$data[2]は在庫が不足しています"; }else{ $data[1] -= $cart{$key}; } } print TMP @data; } close FILE; close TMP; rename $temp,$file; } で、読み出し→在庫チェック→在庫デクリメント→書き戻し が1回で終わると思うんだな。 まあ例によって書きなぐりだから、globでファイルリストを取り出し、 cartをexistsで調べて在庫チェックとデクリメント処理する、 という流れだけ理解してもらえれば。 >>350 =297さん いつもありがとうございます。 せっかく、頂いたんですが、違う方法で実装できました。 次は「在庫がありません」だけではちょっと不親切なので「在庫が無いので買物カゴから削除しました」 と「在庫が足りないので$cyumon個を$zeiko個に変更しました」と表示して カートの中身を書き換える機能を作成中です。一度に商品ファイルとカートファイルを の二つをハンドルするので、ループ中の何処で、書き込んで、何処でテンポラリーファイルを リネームするのかが、書いててわからなくなる・・・・(苦笑 スクリプト一行書くごとに、print"処理結果" and exit;で出力内容を確認しながら 進めてます 買物を途中で止められた場合、datファイルが残ってしまっているので、それを 定期的に消したいんですが、たとえば最終更新時間から$time以上経過したら 削除させるのって @files=glob("./cart/*.dat"); foreach(@files){ @info=stat $_; $deltime=time-60*60*$time if ($info[9] >$deltime){ unlink $_; } } で、大丈夫ですか? これを、買物終了時かなんかに実行されれば、誰かが買物を完了してくれたら自動的に 入らないファイルが消える、というふうにしようと思うんですが・・・・ statで得られる時間って time関数と同じで方式(1700年からの秒数?)ですか? なんか誤字だらけ・・・ ×入らないファイルが消える ○要らないファイルが消える おお、自力で実装できたか。ガンガン腕を上げていますね。 あとは欲張って機能拡張しすぎてスパゲッティにならんようにね。 statで得られるのはtimeとおなじ*1970年からの*通算秒だよ。 最終更新からの経過だけ調べるだけなら、ファイルテスト演算子-Mで 最終更新からの*経過日数*が得られるよ。 foreach(glob("./cart/*.dat")){ unlink if -M $_ > $time; # $timeは日数、0.5なら12時間 } とか。 大人のCGI(書籍) ttp://www.byakuya-shobo.co.jp/hj21/otona/main.html あたり読んで、パクれ。 今のお前ならもうこの本のスクリプトを解析、応用できるはずだ。 持ってたりします・・・>大人のCGI 実は他でソースパクってUpload.cgi作ったら動いた事は動いたんですが それを、admin.cgiにサブルーチンとして埋め込むと動かなくなります。 そのソースは、CGI.pm使ってたんですが、enctype="multipart/form-data" で受け取ったデータを ReadParseかけちゃってるのが問題なのかな?とか思ってたりするんですが、関係あります? そこだ。ファイルデータは生で扱え。 その動いたっちゅうUpload.cgiで、どこをパースしてどこを生で扱っているか 解析してみるのだ。この件に関して間違いのない文書はRFC1867。 ちょっと、頭の中がテンパって来たので、気分転換で、管理画面のUIを整理しました。 ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm 各画面から必要なページに戻れるようにボタンをつけました。 あと、新規ページ作成時と、デザイン変更時に作成結果(変更結果)が確認できるようにしました。 うぷろだでわかんないってどの辺?よかったら書いてみ なんか、今日xreaが調子悪くないですが? 私のPCのせいだろうか・・・・ しかし、1/10に > Perlも、いやプログラミングさえ未経験。「必ずわかるCGI」と > その他の入門書で何とか「掲示板」の仕組みがようやく理解できました。 んな事書いてた>>1 が一ヶ月でここまで来るとは正直予想できなかった。 俺モジュール使え無い。つまり1にいつの間にか越された。ウツウツウツウツウツウツ。。 >356 そんなクソ本を紹介すんな。 誤字脱字だらけ&ヘタレすぎ。立ち読みしてて叩きつけたくなった。 >>365 マジっすか?? 近くの書店で注文しましたが・・・・ >>365 あれがクソ本だと言うのは構わないから、具体的にどのあたりのコードがヤバいとか、 他にいい本や資料、URIがあったら教えてやってくれ。 実践的で単機能のコードの量、カバーするCGIの範囲では間違いなく現在トップ クラスの良書だ。 O'REILLYが出してる本ならまず間違いない・・・・・・高い&重いけど。 久々にレスが沢山ついててちょっとビクーリ さて、アプロダの件なんですが、今まではスクリプトの頭で ReadParseかけちゃってて、multipart/form-data使うには それがまずそう、というヒントを頂いたんですが、いまさら ReadPaeseの前に use CGI; $query = new CGI; $images=$query->param('gazou'); if ($images ne ""){ #処理 } &ReadParse; #今まで通り で大丈夫なんですかね?要はReadparseはそのままでmultipart/form-dataで 受け取った特定の物だけCGI.pmで処理するというかんじになるかと思うんですが また、日本語がおかしい・・・ ×というヒントを頂いたんですが、いまさら ○というヒントを頂いたんですが、いまさらReadParse止められないので。 それだと後ろの&ReadPaeseがコケる。POSTデータをCGI.pmが先に拾って まうんやないかな。そんな妙なコード組んだことないから、いざやったら 出来てしまうんかも知れへんけど。 もうこの際CGI.pmで逝きゃええやんと思ふ(書き直しも大した手間じゃない) けど、まぁ何にせよcgi-lib.plで逝くと決めたんやから、動くコードが落ちて たからといって場当たりで手を広げるもんやない。 cgi-lib.plを用いたファイルアップロードのサンプル ttp://cgi-lib.berkeley.edu/ex/perl5/fup.html と、そのソースや。 ttp://cgi-lib.berkeley.edu/ex/perl5/fup.cgi.txt 読め。ほどけ。取り入れろ。 >>1 ここにCGI.pmのサンプルあり。 http://www.harukaze.net/ ~mishima/perl/module/upload_by_CGI_pm.html あぷろだはいまだ研究中で未実装ですが、今までずっと気になっていた 「同じ商品を買い足した場合」の処理を変更しました。 これで、あとはアプロダさえ実装できればほぼ完成かと・・・ ようやくアプロダ実装完了しました・・・ 商品画像、ページ背景画像、ページバナー、それぞれあぷろど可能です。 但し、実サイズで表示されますので、あまり大きい画像は・・・・・ というわけで久々にageさせていただきます。 ページメニュー ttp://cgitest.s7.xrea.com/cgi-bin/menu.cgi 管理ログイン画面 pass=123 ttp://cgitest.s7.xrea.com/cgi-bin/admin.htm いいかんじかな? 買い物かごの中をみる、を選択したときに、中身がある場合は常に 「精算する」というか、買い物フェーズに行くボタンが必要かなと思うけど。 reply-to:ツ蟆・ この度はご注文ありがとうございます。このメールはご注文いただいた方に自動的に送信 される 確認メールです。追って店主よりご連絡致しますので、ご注文の内容をご確認の上、今し ばらく お待ちください ・・・メールが文字化けしているかな? menu.cgiが吐くMETA <meta http-equiv=content-type content=text/html; chaset=EUC-JP> になってるけど、 <meta http-equiv="Content-Type" CONTENT="text/html; charset=EUC-JP"> とクオートせんとばけちゃうよ。スペース入ってるから・・・ あと、「買い物を続ける」のリンク色が背景に溶けこんでて見にくいな。 ま、いずれも小さなことだ。よくやったね! ほんとよく頑張ったよね。 見習わなきゃと思いました。 ページ作成時に既存の画像ファイルを使えるようにアプロダ以外にファイル名指定 を可能にしました。また、商品やページを書き換える際に画像を削除できなかったので (てかそうしちゃうと弊害もありそうなので)画像管理用のメニューを用意して 必要無い画像ファイルを削除するプログラムを追加しました。 ひとまずこれで「完成」という事にさせていただこうかと思います。(V1.00) ファイル名を変えたのでアクセス用URL変更になりました ttp://cgitest.s7.xrea.com/cgi-bin/login.cgi パスワードは123です。 さて調子に乗ってCGIZooあたりにシェアで登録してみようか・・とか思ってるのですが・・・・ 顧客情報のファイルって、パーミッションを適切に設定しても覗けるんですか? テキストじゃダメなんでしょうか。 頑張ってるとは思うがシェアで登録するほどのものではないだろ。 まだね。 perlで、画像貼り付け可能な掲示板を作ろうと思ってます。 ユーザに、画像のURLを入力させて、遠隔地にある画像を 表示するわけです。このような場合に、その遠隔地にある画像の サイズ(ピクセルサイズ)を取得することはできますか? 小さいサイズの画像に制限したいのです。画像ファイル(GIF)の ヘッダ数バイトを取得できればいいのですが、もし可能ならば、 方法を教えてください! >>383 7〜8バイト目にwidthが、9〜10バイト目にheightが入ってる。 位置が固定だから楽。(JPEGは可変。) 画像はローカルじゃなくて別サーバーか。 一般的なサーバーにLWPは入ってないだろうから 単純にSocket開いてreadすればいいのでは。力技だけど。 あ、でもSocket自体普通のプロバイダじゃ使えなかったりするな・・・ そういえばPNGもサイズの位置は固定だね。 「フリー」ウェアの精神は最近廃れているのだろうか。 自分を育ててくれたネットに対しての貢献というか恩返しというか、 後塵のために自分も・・・・・・まあいいや。 設計から実装まで、果てはβテストからデバッグまでここで聞いてたのになぁ。 「フリーで配布しているものはない」「知人に頼まれて急いでいるがPerlは未経験」 というから、ちょっと調べればすぐ解るようなことも教えてきたのにな。 無謀者が苦労に相応した報酬を受け取ることに異論はないよ。 教わろうがなんだろうが今回のCGIは無謀者が作ったんだからさ。 だけどさ、なんか寂しいよな、こういうのって。>^(無謀者) このスレにいた人には無料で配ると、不満がでなくなる上テスターまで確保できるんだぜ(笑) そういう腹芸をこなさないとだめだな。 ここまで作ったんだからシェアにしたいと思うのも人情でしょうけど、これまで 一から無償で教えてきて下さった人たちが、寂しい思いをするのも分かるような 気がします Perl初心者なのに、ご友人のためにショッピングカートを作ろうと、頑張られて いるのは偉いなぁ、と影ながら応援していましたが、ここに来て、突然にお金に 対する色気を出してくるのも、うーん、と思ってしまいます シェアにするのが悪いとかでなく、無謀者さんが一生懸命作られたcgiを無償で 欲しかったからというわけでもなく、なんだか、うーん、なのです(^^;) うーん、と思う他に、少し悲しいのは、これからこの板で質問する人たちが 「お前も、完成が近づいたらシェアにするとか言いだすんじゃないの? なんで、他人の金儲けに俺らがタダで協力しないといけないのよ?」 と思われることでしょうか まあ、簡単なことも自分で調べない教えて君が減って、むしろ良かったりする のかも知れませんが(^^;) ただ、私なら、自分で作ったcgiなんて信用できないので、私用に使うのなら ともかく、他人に使ってもらおうなんて、恐くてとても考えられないのですが、 無謀者さんはその点、勇気があるなぁ、と純粋に感心しました ところで、自分は、欲しいcgiがあったら海外の物を探して、適当に日本語化して 使うのが主なので、よく知らないのですが、シェアのcgiって、そんなに需要の あるものなのでしょうか? 無謀者さんのおっしゃってたcgizooを見ると、結構な数のシェアcgiがあるよう ですが・・・ >391 実際あるよ。 というかね、個人に対する需要はともかく、やっぱCGIていうのは、Webデザインとか 設計の問題とかがあって「オーダーメイド」なものなんだよな。 んで、CGIとか出しておくと、オーダーが入る。 お金払うからこういうもの作ってくれ、とかね。 儲けというか、良い小遣い稼ぎにはなる。 115 :参加するカモさん :01/12/21 19:46 http://gotonext.cool.ne.jp/gazou/hiroyuki02.jpg ひろゆき、歯まっ黄色!! 歯糞だらけ!!びっくり!!(・∀・)キタナイ!!ビークリ!! ひろゆきへ 歯みがきしましょうね・・・・ 156 :参加するカモさん :02/01/08 14:08 >>115 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死死 157 :参加するカモさん :02/01/08 14:11 >>115 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪呪 卒業研究でショッピングシステムとか作るってのは今更というカンジかなぁ。 >このスレにいた人には無料で〜 素人が作ったものなんかいらんよ シェアで配布でもいいんでない? その後いろいろな問題にぶちあたりまたこの板を利用して質問してくることだろう。 何度かそれを繰り返して一人前になったらここで同じような疑問をもった人間に教 える立場に変わってくれればいいんでない? 俺はオーダーメイドのものしか作らないけど、配布に耐えれるだけのものをつくる にはかなり大変だからねぇ、まぁがんばれよってことだ。 ども。やはりシェアに関しては予想通りお叱りを受けてしまいましたね。 自分でもまだ迷っています。まシェアにしたからって必ず売れるというもんでも ないでしょうし、何人かの方がおっしゃるとおり実用にどこまで耐えられるものなのか まだ未知数ですし・・・ とりあえず、開発するきっかけとなった友人の所では取り合えず設置しておいた フリーの奴で「使い方なれてきたからとりあえずこのままで」っていわれて 行き場がなくなってしまいました(w 現在は、デバッグしながら細かい機能実装してます。捕らえずサーバーパス以外の ほとんどすべてをWEB上で設定できるようにしました。 「調子に乗るなボケ」って意見がひとつも出ないのは、素人が作ったこの程度のスクリプトでも シェアとして成り立ってしまう可能性があるからなんだろうな。 実際ZOO見てみてもカートってカテゴリだと登録数少ないしな。 値段によっては結構売れるかも知れんぞ 金をとるなら、取れるなりのものを作ってからにしてほしいと思う。 フリーのモノのより落ちるんじゃあダメじゃないかと。 機能の数ということではなく、ね。 オープンプラットフォームということで、 アップローダーは最低でもサイズ制限、MacBinaryぐらいは対応していないと、 シェアのWebアプリとはいえないと、「個人的には」思います。 WEBショップを開店しようと思ってるので 無謀者さんのカートCGIに興味あります。 でもどこまで実用に耐えられるものなのか不安があるので シェアだと手が出ないです。 問題なく運用できて売り上げがあがったら 幾らか払っても良いですが。 >403 試用していただけるなら喜んでお出しします。もちろん無料で。 >402 マックバイナリーは一応対処してるつもりです。まだMACでの最終確認してないですが。 サイズ制限に関しては表示部の表示の自動縮小を含め研究中です。 KENT氏の&JpegSizeあたりを改造(ぱくり?)しようと思ってます >>404 ここだけ無料で配っておいて、他で値段つけたりすると何かと問題になるような・・・ 配るというか、モニターしていただけると助かるな・・・という感じでして。 ここの方々には何もない常態からおんぶに抱っこでお世話になっていますので。 万が一、間違って「使ってみたい」って人がいらっしゃれば是非試用していただいて ご感想をいただきたいのです。その結果「ダメだ使い物にならん」と思ったら 破棄していただければ良いですし。少しでも使えそうなら不満点を指摘していただき 改良の参考にさせていただければと。 なるほど、そこまで考えて改良を続けていくならシェアでも いいと個人的には思う。シェアCGIなんてほとんどサポート代 みたいなもんだろうし。まあがんばりや。 送料について、「北海道/東北/関東/…」ていう地域のくくりは 固定にしていいの? 宅配業者の価格体系よく知らないからわからんけど、 もし「同じ関東でも東京・神奈川・千葉はxxx円、それ以外はyyy円」とか いう体系がありうるなら、sub_soryo()関数内で固定で持ってる県名も ユーザが指定できるようにするのがいいのではないかと思ふ。 (上のような細かい地域指定機能はサポートしないという仕様にする or カスタマイズ別料金 つーのももちろんアリだとおもうが) 行き場がなくなったのは気の毒だね。 「使い方なれてきたからとりあえずこのままで」ってそれ、あるんだ。 「オレは何のために開発したんだよと小一時間‥‥」てヤツだよな。 ま、そーゆー事情ならいっちょシェアにでもして見るか、という気持ちもわかるわ。 そーゆーコトは先に言えよ、な。 >>380 は明らかにチョーシぶっこいてるようにしか聞こえなかったんで一言 言いたくなったのさ。 まぁせっかく作ったんだから、全く儲けちゃイカンとは言わないが…… 公共に還元って事でさ、売り上げの一定比率で2ch運営に寄付って のはどうかね? イヤ、実際受け付けてくれるのかどうかは知らんのだが…… >>411 いや、寄付よりもオイスターのID買えば(・∀・)イイ!! ここは無神経な1に裏切られた気分の皆さんが 寒々しく愚痴るスレになりました いや別にシェアウェアにするのは構わないと思うよ。 問題なのは、なぜここでそれを表明するか、なんだよな(笑) こういう反応になっちゃうの、わかってるでしょうよ。もったないなぁ、いい雰囲気なすれだっただけに お久しぶりです。年度末はつらいですなぁ・・・ いろいろ、不快な思いをさせて申し訳ございません。 とりあえず言い分けさせていただくと、自分としては シェアを作ろうってつもりではじめたわけではないですし そもそもここまでご協力いただけるとは、正直思いませんでした。 結果として「利用された」と思われるような発言をしたのは私の思慮不足 だったとは思いますが、しらばっくれて公開しちゃうってのは さらに不義理な行為だと思ったので、たたかれるのを覚悟で表明させていただきました。 ここは私がPerlを始めるにあたって挫折しない道を教えてくれた場所ですし、 まだまだわからないことだらけの自分に有益な情報が山ほどあります ちょくちょく覗いてますし、またお力をお借りすることもあると思います。 今後ともよろしくお願いいたします Perl始めようと思ってここにきたんだがこのスレ為になったYO! 読み物としては楽しかった。ただ>>1 のシェアウェア化はいただけないが。 漏れだったら今回作ったものはフリーとしておいてこのスレで得た知識でで もう1本気合いの入ったものをかき上げてそれをシェアウェアにするなぁとか思った。 そうだ! ここにくるみんなをうまく利用して(おだてて)つくらせる。 これおいしいアルね! おれかなり協力したけどシェアでええぞ シェアでもフリーでも公開してみてわかることはたくさんあるからとにかく公開しろ んでその問題などをここでまた相談しろ どうせここまでボランティアやってきてやったんだから面倒みたる。 1が儲けてうらやましいやつは自分で作ってシェアにすりゃいいだろ、そいつらにも 惜しみなく協力してやるよ。 シェアにするって事は、そのソフトに関して責任を持たなければいけない って事だ。もしスクリプトの不具合が原因で利用者に損害が出た場合は 責任をとらなければいけない。 俺はそれが怖くてシェアなんかには出来ないけどな。 しかもショッピングカートなんて一番被害が大きくなりそうだし。 >>421-423 どうい でも、そんなシェアが氾濫してるってのもまた現実 >>422 も言ってるが、 他人に聞きまくって作ったスクリプトで、 不具合とか出た時にサポートとか出来るんか? つか、また聞きにくるんかな?w >>426 れすが30個くらいついて、そのうち20個が煽りで、しかもすぐに放置されて風化するような スレッドは要らないよ。 長い間 本スレッドにおつき合い頂いた皆さん。 本当にありがとうございました。 私は、本日(有)無謀社 を設立。皆様にお手伝いいただいた、ショッピング カートを主力商品に据え、アプリケーション・サービス・プロバイダーとして、 営業を開始いたしました。 思えば、1月の初旬にスレを立てて以来、こんなにも急速に成長できたのは、 ひとえに皆様の暖かいご支援と、数多の叱咤激励あればこそと痛切に感じます。 この場を借りまして御礼申し上げると共に、今後ともよろしくご指導いただけ ますようお願い申し上げます。 平成1x年 4月1日 無言某者 って、話ができるぐらいになったらいいなぁ (w オイラもなんかシェアウェア作るか…… おれ、何回か質問に答えたけど。 べつに、シェアウェアでもいいんじゃないの? 公開したいなら。 気兼ねするこたないだろよ。 新規性のあるライブラリとかなら、フリーで使わせてほしいところだけど。 ショッピングカートは、よくあるジャンルだし。 ライブラリなら、>>1 もフリーで公開しただろう。 そもそも、みな、Perlを商売のタネにしてきたんじゃないの。 Perlはフリー。 Linux も Apache も BIND も Sendmail も PHP も PostgreSQL もフリー。 おれら、そういうの使って商売してるんじゃないの? >>1 のプログラムくらい、シェアで公開したがってるなら、 プレッシャーかけてやるこたないだろよ。 世の中、小物チンカス揃いだってことが良くわかる良スレだなあ。 ショッピングカートについて質問させてください。 DOS/Vパソコンショップ等で良くあるBuild to Order式の ショッピングページは、作るのが難しいでしょうか? ショッピングカートの質問に答えさせてください。 >>434 は何が言いたいかわかりません。 技術的に問題が生じた場合はここで質問してください。 設置で問題が生じた場合は他の板へ逝ってください。 有難うございます。 たとえば1台のパソコンをWebショップで注文します。 ショップブランドPCだと、CPUは何GHzとか、 ハードディスクは何GBだとか、スペックの変更が 出来て、請求金額も自動計算されて・・・ ってことなんですが、スレ違いですね。スマソ >>437 かっ、簡単なんスか?! パーツの価格は毎週1〜2回の価格更新が必要なので、 フリーorシェアウェアのショッピングカートで更新が 容易なものが見当たらないもので・・・ >>438 DBかDBもどきのクラスでも作れば簡単だろうが‥‥ 全部をWEB上でやる必要があるかな? 更新・更新っていうけど、どっかでデータを入力する人が居るわけだ。 それをサイト上でやるか、ローカルでやるか…… Web制作板だけど http://pc.2ch.net/test/read.cgi/hp/1021096525/l50 M$製品の吐くHTMLはウンコだけど、こういうやり方なら、自分好みのHTMLを 吐くことも可能でしょ? エクセルにデータ入れた側からHTMLになってるワケだし、PerlやPHPこねくり 回すより遼に簡単じゃないか? >>440 さん有難う。昔、Lotusアプローチでヤったことあります(爆 ところで、1さんはシェアウェアをはじめたの? もうかってるのかどうか、知りたいです。 ぜひ、教えてください。 コノスレなんか泣けた(w >1以外の方々に敬礼!! お久しぶりです。その節はお世話になりました。>皆様 >>442 さん はい、いろいろ考えた末公開させていただいております。全然儲かってません。(w ダウンロード数、ページアクセス数は結構あるんですがね・・・ で公開してみて皆さんの言っている意味がいろいろわかってきました。 サブジェクトが「教えてください」のメール多数。 書き出しが「初心者なんですが」のメール多数。 BBSへのがいしゅつ質問多数。 etc・・・ それでも、このスレで右も左もわからない私に色々教えていただいた皆様の事を思い出し 可能な限りのサポートをさせていただいております。スクリプトの方もバージョンアップを 重ね、当初のcgi-libを使ったものから、CGI.pmを使ったものに作り変えました。 まだまだ、perl/cgiに関しては初心者の域を出ない状態ですが、四苦八苦しながらも 考えたものを形にする(スクリプトに落とす)事が何とかできるようになって来ました。 全て、このスレで親切に教えていただいた皆様のおかげです。 公開騒動で色々言われちゃったのと、しばらく仕事が忙しかったので、ご報告が大変遅れてしまいましたが、 とても気になっておりました。 この板、スレの住人の皆様がいなければ私がperl/CGIを作れるようになんてとてもならなかったでしょう。 改めて、皆様に御礼させていただきたいと思います。 本当にありがとうございました。m(__)m >>444 何回か答えたものだけど。 スレッドたった当初は、本当に書けるようになるとは思わなかった。 あなたの努力の成果だと思うよ。 シェアでの公開も、俺は全然問題ないと思うよ。 Perlは奥が深いし、CGI以外でもいb�「ろな場面で試gえる言語なのbナ、 今血繧煌謦」って腕b繧ーていって演コさい。 で、また2chとかで質問してる人がいたら、あなたの得たノウハウを 書いてあげればいいんじゃないかな。 べつにわざわざ返事は必要ないので、sage >>445 (´-`).。oO(sageはメール欄におながいします。) ショッシーな質問でスマソ。 ECサイトで例えば指輪の種類がいっぱいあったとします。 それをサイズで分類して並べるのとダイヤ、パールとか石の種類ごと にならべるのを簡単に実現するのはDBにしてCGIと連携するのが一番 でしょうか? よろしくおねがいします。 >>449 あんまり 簡単・簡単 言ってくれるな 手間を掛けない=安価 ではない 我々の商売は、むしろ省力化に対して金を取るんだから 自分の手間の代わりに対価を払う気があるなら、案件をまとめて下請けに出すのが一番簡単。 見合う金さえ払えば、とにかく面倒なことは全部引き受けてくれる。 安価に仕上げたいという意味なら、既存の販売システムで似たような機能の物を探すのが吉 その代わり、全てが望み通りというわけには行かなくなるだろう。 生産性で言えば、その方法(適当なDB+CGI)で実現は可能なのだから、CGIでも DBでも既得の技術を使うのが一番「簡単」だろう。 他に効率的な手法があったとしても、未知の技術に手を出して、既知の技術で作る 何倍もの手間を掛けるなら、意味はない。 ここの1氏が、既得のPerlを選んだことで、最終的に目的に達しているのがよい例だ。 で、君は何が望みなのかな? ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━― ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉 ここで人気No.1のAV女優、及川奈央のオマ○コが見れました!! うぉぉぉぉぉぉ!!!!素晴らしい!!!(*´Д`*)ハァハァ http://plaza16.mbn.or.jp/ ~satchel/oikawa_nao/ なんかこのスレいいな・・かなり良スレだったみたいだね・・ 俺も早く>>1 みたいにperlでいろいろやりたいよ __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ ∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ 久々に来て見たらまだスレが生きててビクーリ その節はお世話になりました>皆様 只今はPHP+MySQLを勉強中です。 (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン 山崎に保守されている名スレ 必死ぶりに無謀者さん降臨。 でも、大分前だけど。 最近の研究成果の発表とシェアの売れ具合の報告希望。 自分の過去を見てるみたいで懐かしい気持ちになった。 カートを作ったら、次は決済だけど...皆たまは、どうしてまつか? 会社の業務として精力剤のみの ショッピングカートをPerlで作りました。 DBは一切使わず、テキストのみで注文を記録 してます。 板とは直接関係ない話ですが クレジットカード決済のショッピングサイトを建設しようと思っています。 オンラインでカード決済をするには各カード会社に加盟すれば カード会社のサーバを通して決済ができるのでしょうか? 入金システムとかはやっぱクレジットカードとかのほうが無難? Webマネーを取り込みたいんだけどそれについて書いてあるいいサイトないかな? メール送信フォームを作っています。 #名前 <tr> <td class=r align=right width=110>名前 <font color=red>※</font></td> <td class=r width=440> <input type=text name=name size=30 style='ime-mode:active' value="$cnam"></td> </tr> # 項目1 print "<input type=radio name=hoge value=\"A\" checked>A \n"; print "<input type=radio name=hoge value=\"B\">B \n"; リターンメールで $mbody .= "名 前 = $in{'name'}\n"; はメールの本文にちゃんと出るのに $mbody .= "項目1 = $in{'hoge'}\n"; は表示されません。。 考えられるミスがわかる方ご指摘お願いいたしまするー 選択肢から複数選択し、OKボタンを押すと、それら選択された アイテムに対して、何らかの処理を施すといったことをやりたいのですが、 これらをperl CGIで書かれた例があれば教えて頂けないでしょうか? >>488 アンケート系CGIのソース見れば一発だと思われ おお、まだこのスレ生きてたのか・・・・ 懐かしい。 書き忘れたけど。>>495 は「1」 このスレを建てた「無謀者」でした。 もう8年前の事なんだな・・・・・ この後PerlやPHPでいろいろ書きました。 おかげさまで仕事の幅も広がってたんですが、その後職を変えたんで しばらくスクリプトも書いてないです。 久しぶりになんか作りたくなりました・・・・ 読み返してみて、あらためて当時いろいろ教えてくれた皆様に感謝の気持ちで一杯です。 当時レスしてくれた皆様、今でもこの板にいらっしゃるんでしょうか? >>496 お疲れ様。 まぁこのスレでもサカナに一杯どうや? >>497 当時の方ですか? このスレは自分のその後のキャリア形成にかなり影響を与えてくれました 今だったら、EC-CUBEやZen Cartがあるから、自分で作ろうなんて思わなかったろうなぁ・・・ 当時本当に「はろーわーるど」だった自分が曲がりなりにもスクリプトを書けるようになったのは このスレのお陰です。 >>500 EC-CUBEってMVCフレームワークなんて則ってるの? 宣伝ブログかなんかかも知れ無いが、謎。 Lately, he's had no shame in comparing the Obama Administration and the Democratically-controlled Congress to the Third Reich. , >>1 ショッピングカートCGIをパールで作って今も使ってるおれがきますたよと。 八年前に俺が書いたレスと思われるものが・・・ナツカシス。みんあ元気かな >>505 さん 当時はお世話になりました。 今の自分があるのはあなたのおかげかもしれない・・・ なんだよこれ懐かしいんだけどw ショッピングカートとか1990年代を思い出すよ 504:名無しさん@お腹いっぱい。ichiichihannousichaundanebakawww2013/04/26(金) 10:25:44.64 ID:XTr4EGdyI 直接お店やカード会社に問い合わせすりゃいいのに、 安定の馬鹿ばっかwww 様々な不適合者共の巣窟。 クズの集団性乙www 日本から始まる世界的株式市場の大暴落 ウォールストリートの大暴落(1997年)につながったプロセスが、 いま日本におけるプロセスの中に写し出されており、 再び株式市場の暴落につながるでしょう。 終いには政府にも支えることができなくなり、どん底に落ちていきます。 日本がアメリカ国債の25%を引き出すと世界経済が破綻し、 マイト レーヤは出現するでしょう。 マイト レーヤはまずアメリカに現れ、それから日本です。 彼は日本語で話し、非常に物静かなやり方で話します。 彼の最初の控えめな態度に混乱してはなりません。 非常に間もなくマイト レーヤを、テレビで見るでしょう。 マイト レーヤは毎日テレビに現れ、質問に答えるでしょう。 彼は「匿名」で働いております。 マイト レーヤが公に現れるにつれてUFOが、とてつもない数で姿を表すでしょう。 矢追純一 「宇宙人側からの申し入れは、 核の利用と戦争をやめ宇宙人の存在を公表しなさい。 ロシアという大国の首相がね、2回も言ってるんだからね。」 抑制のない成長に基づく現在の経済の終焉を見るでしょう。 日本国民はどう対処すればいいのか。新しい政権は民意を反映し、適切な食糧、 住宅の供給、健康管理、教育が最も重要な責任となるでしょう。そして最後に防衛です。 国民の意志を裏切ることは、極端な場合、自殺や殺人にまでつながります。 民衆の指導者は職業的政治家ではない人々から見つかるのです。 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 NMZRTM7OXN プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。 MOH2J read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる