探検


☆ショッピングカートのCGIを作りたい!Perlで☆

1無謀者
垢版 |
02/01/10 19:53ID:XY4Txmil
知り合いにWEBショップ作ってくれと頼まれたのは良いけど、
フリーのショッピングカートCGIは設置は簡単でも、商品の登録
とかが手作業だったりで使い勝手が悪いです。
で、短絡的に「自分で作ってみようか」と思っているのですが・・・・
Perlも、いやプログラミングさえ未経験。「必ずわかるCGI」と
その他の入門書で何とか「掲示板」の仕組みがようやく理解できました。
やっぱ、無謀ですかねぇ・・・・・・
02/01/21 12:21ID:???
やっぱりこうやって見てるとDB使った方が楽だよね(わら
190名無しさん@お腹いっぱい。
垢版 |
02/01/21 12:30ID:TFQKF+6T
>189
禿同。
セッションIDだけhiddenで渡しておいて、あとは全部DB任せ。
この方が絶対楽だね。ソートするにせよ、合計金額を出すにせよ
全部DB任せ。こんなに楽な方法ばかり普段使っていると
>1が凄いことをしているように見えてくる・・・
191189
垢版 |
02/01/21 12:42ID:???
>>190
だよね(わら
久しぶりにファイル操作スクリプトみたんで懐かしいよ。

>>1さん
エラー処理はきちんとしましょうね。
クッキー渡すときも、ファイルを開くときもね。
あとデータ受け取ったときもサイズとか中身のチェックいれとかないと
だめだかんね〜♪
全ての人間がフォームに従って入力してくれるとは限りませんから。
192無謀者
垢版 |
02/01/21 12:54ID:???
>>188
ありがとうございます。試してみます。ってやってみたけどいまいち
うまくいかん・・スクリプトの意味もう一回良く見ながら考えてみます。
>>189-190
DBでMySQLとかでしょうか?
私が借りてる鯖(共用)は使えるようになってるみたいなんですが、
一般的にはどうなんでしょ?置く鯖が決まってればそれにあわせた
仕様で書けば良いんでしょうが、出来るだけ汎用性のあるものを
書きたいので・・・・もしDBが鯖依存でなくてPerlが使えれば
必ず使える、とかUNIX系の鯖ならほぼ大丈夫ってものなら
勉強してみようと思うのですが・・・
193無謀者
垢版 |
02/01/21 13:00ID:???
↑
×DBでMySQLとかでしょうか?
○DBってMySQLとかでしょうか?
02/01/21 13:02ID:???
>192
いいところ突きまくり・・・
195190
垢版 |
02/01/21 13:14ID:???
>192
最近は安い共用鯖でもMySQLとかPostgreSQLを使えるところが
増えてきているから、汎用的だって判断しても良いんじゃない?

漏れはDB使えない(使わない)って仕事を受ける時は、それだけで
料金5割増にしてる(w しかも最近はPHPとかJavaを使うことが
多いんで、「Perlで書いてね」なんて言われたら、さらに5割増(w
最低限DBが使える鯖に移転することを強く薦めている。

フリーでばらまくならPerlでファイル操作で構成しておく方が
汎用的と言えるだろうが、作るのが面倒だよなぁ。
漏れの場合は、過去に使ったクラスを使いまわして自分の中で
汎用的にするだけだな。もちろん、客には「1から作りました」
と言って、「あっという間に作ってくれましたね」と言われて
喜ぶのが好きだけど(w
196無謀者
垢版 |
02/01/21 15:03ID:???
えっと・・>>188を試しているんですが、これの意味って
$i = 0;#行数カウント用の初期設定
foreach (@line) {
($id,$hoge,$mona,$giko) = split(/\,/,$_);
if (削除キー eq $id) { splice(@line,$i,1); last; }#もし削除キー=$idだったら、@lineの$i個目(つまりファイルの$i行目)を空にする)
$i++;
}
って事で良いんですよね?
197名無しさん@お腹いっぱい。
垢版 |
02/01/21 15:35ID:yxhIL91Y
>196
うん、その通り。
198名無しさん@お腹いっぱい。
垢版 |
02/01/21 15:35ID:yxhIL91Y
>196
あ、ちがうよ。
空にするんじゃなくて、その行削除ね。
199無謀者
垢版 |
02/01/21 16:25ID:???
いろいろ試してみて近いところまで来てると思うのですが・・・
open(DEL,"$cart");
@dl=<DEL>;
close(DEL);
$i=0;
foreach $line(@dl){
@cell = split(/\t/, $line);
if ($cell[0] eq "$del") {
$line="";
}

@del=join("\n",$line);
close(DEL);
#ここまで@delには削除済みのリストが入ってるのを確認
#その後
open(FH2,">>$cart");
print FH2 @del;
close(FH2);
}
で書き込もうと思ってるんですが、>>でやると元のリスト+(元のリストー削除した要素)
が追加されちゃうし、>でやるとなぜか、もとのリストが全て消えて、削除すべき要素だけがファイルに書き込まれてしまいます。
@delで欲しいリストは完成してるので、あとはファイルに書き戻すだけだと思うのですが・・・
02/01/21 16:30ID:???
>199
なんでそんな苦労をしているんだろう・・・・
201 ◆6KgJyjvE
垢版 |
02/01/21 16:49ID:rYGhtF3P
open(IN,"$cart");
open(TMP,">${cart}.tmp");
while(<IN>){
my @cell = split/\t/;
if($cell[0] ne "$del"){
print TMP;
}
}
close IN;
close TMP;
rename(${cart}.tmp,$cart);

でどうよ。
02/01/21 17:18ID:???
んじゃもっと短くして・・・

open(IN,"$cart");
open(TMP,">${cart}.tmp");
print TMP grep { ! /^$del\t/ } <IN>
close IN;
close TMP;
rename(${cart}.tmp,$cart);

grep使うのは別におすすめしないけど、
判定のためだけにsplitする必要はないかと。
というか、素直にApache::Session使えばいいのにと思ったり。
203無謀者
垢版 |
02/01/21 21:33ID:???
>>201
最初、うまく行かなかったんですが、renameのところを変えたら
うまくいきました↓
open(IN,"$cart");
open(TMP,">$cart.tmp");
while(<IN>){
my @cell = split/\t/;
if($cell[0] ne "$del"){
print TMP;
}
}
close IN;
close TMP;
rename("$cart\.tmp","$cart");
ありがとうございました。

>>202
$id(=削除キー)が単純に振られた連番(数字)なので、配列で
確実に指定してやったほうがいいかな・・・と。grepも使いかた調べたんですが、
個数とかの数字を拾っちゃいそうな気がして・・・
☆進捗状況
おかげさまで、
・買物カゴに入れる
・カゴの中身を削除する
の部分は動作するようになりました。皆様の助けが無ければとても10日でここまでは
出来なかったと思います。ありがとうございます。
次の予定は、個人情報の入力画面です。
・・・と、思い出したので質問です。非常に基本的なことだとは思うのですが、
cookieって有効期限内でも、新たに渡せば上書きされるんですかね?
買物カゴで渡したcookieを個人情報画面で、書き換えたいんですが・・
てかそういう場合って新たにクッキー渡すんですか?
204
垢版 |
02/01/22 00:28ID:zQlW9qzl
もう解決ずみみたいだけど。

>で書き込もうと思ってるんですが、>>でやると元のリスト+
>(元のリストー削除した要素)が追加されちゃうし、
> でやるとなぜか、もとのリストが全て消えて、
> 削除すべき要素だけがファイルに書き込まれてしまいます。

>> で開くのは、追加書き込み。ファイルは安全。
> で開くと、ファイルサイズがゼロになる。ファイルのデータは失われる。

ファイルロックを併用で、ファイルから読んだあと同一ファイルに
書き戻したい場合は、読み+書き(+<)で開くのが一般的かな。

該当ファイルが存在しない場合は、ファイルを作ってはくれないが。
205名無しさん@お腹いっぱい。
垢版 |
02/01/22 01:23ID:4ftMAJcg
>>203
クッキーの上書きだァ?
それ位調べろってんだよヴォケ!
02/01/22 11:42ID:???
>>205
数少ない自分が知ってるネタが出て来てよかったね ボクちゃん
早く病院に戻りなさい
02/01/22 16:17ID:???
とりあえず今までのスクリプトどこかにUPしてみ
添削してくれるぞ、きっと
208無謀者
垢版 |
02/01/22 16:33ID:???
>>207
今、個人情報の入力&その処理、の部分を書いてるので、それが終わったら
どっかにアップしてみます。垢とってこなきゃ・・・
もう、自分で処理内容を忘れないためのコメントが各所、各行に入りまくりの
ソースなんで恥ずかしいんですが、なにぶん2週間前までは「配列って何?」
っていう人間が書いているものなのでその辺はご容赦ください。
今日の夜くらいにアップできればと・・・
02/01/22 16:40ID:???
>>208
ソースパクって明後日ぐらいからシェアウェアとして
配布させてもらいます。w
プログラム名は、SuperCart2002です。
早めにうpして下さいね。
02/01/22 16:50ID:???
ココまで伸びてきていてなんだが‥‥

>>65
>えっと最終的にイメージにあるのは、来訪者(客)が各売場(ページ)で
>任意に商品をカートに入れていって、最終的に注文ボタンを押すと
>その内容が管理者(店主)と客注文明細のメールが行く、というものです。

以前作ったことがあるぞ、それ。個人商店向けで、ほとんど同じ仕様。
メール送信だけPerlでSendmail叩いて、あとJavaScript。

あ、商品ページは商品と単価はtextであげといてCGIから書かせたけどね。

#これなら途中で放棄してジャンプされてもカンケーなしだね。

ID/Pass発行して再ログインとか考えないなら、これで十分かもよ。
211無謀者
垢版 |
02/01/22 17:05ID:???
>>209
つうか、ここの住人の方ならパクらないでも数時間で書き上げる内容じゃないかと・・・(w

>>210
javaScriptも触ったこと無いんで、スクリプトを書くという意味では、結局はどっちではじめても同じだったのかも
知れません。ただ、とっかかりが「既存のショッピングカートに商品ページ作成機能があればなぁ」
だったので、何も考えずにPerlでCGIを始めてしまいました。
しかし・・・普段HP作る時はDWとかばっかりだったんで、CGIの中のHTML書くのにタグが
わからず苦労してたりします(苦笑
02/01/22 17:07ID:???
クッキーは正常終了する場合消しとけよ、意味は自分で考えろ。
途中終了の場合は仕方ないがそれでも退室ボタンなどで消せるようにしとけ
213210
垢版 |
02/01/22 17:27ID:???
>タグがわからず苦労してたりします

ドリウィで満足行くまでデザインして、パクれ。

02/01/22 17:29ID:???
商品ページ作成機能ってなに?
イメージが湧かない
215無謀者
垢版 |
02/01/22 20:25ID:???
>>212
はい、最終的にマイナス時間で渡して消すつもりです。
>>213
いやそのつもりではいるんですが、現段階DW立ち上げてると重くて効率
悪いので、手で打ってます。ある程度目処がついたらデザイン面は見直そうと思います。
>>214
究極で言うと、楽天みたいにWEB上で全てのページが作れてしまう機能とでも言いましょうか・・・・


http://www.xrea.com/に垢取ってアップしたけど動かん・・
ローカルはもちろん自分の借りてる鯖でも動いたんですが・・・・・
216214
垢版 |
02/01/23 01:12ID:???
>>215
ああ、そういう機能ね。わかりました。
うちのは、エクセルからコピペして終わりだから
そんなこと考えたことなかったです。
217名無しさん@お腹いっぱい。
垢版 |
02/01/23 01:15ID:Jv+hzd4q
>>211
初心者ですが、質問です。
JavaScript のカート、フリーのやつ
見たことあります。
フレームのindex.html の部分に、
プログラムが書いてありました。
あれって、フレームなしじゃ、
できないもんなんですか?
218210
垢版 |
02/01/23 03:21ID:???
>>217
>フレームなし
JSの諸事情で、商品が複数ページに渡る場合、正直フレームにしないと
辛いな。

カート(このスレでの実装の場合、単なる送信フォームだが)と、
商品ページあわせて一枚なら、問題ないね。(ECサイトまで行かない
小さいショップのサイトの通販ページなんかで、この一枚タイプは
結構見かけるよ)

複数ページでフレーム避けたいなら、途中退場処理のコストを払っても
やはりカートをサーバーサイドに置いたほうが楽だと思われ。

ただ、JavaScript使用を前提とする場合、フレームを嫌う理由はあまり
ないね。この辺はクライアントの意向によるな。
02/01/24 10:19ID:???
  あげ。
02/01/24 11:10ID:???
そろそろあきらめたかな?
02/01/24 11:26ID:???
そろそろあきられたかな?
222無謀者
垢版 |
02/01/24 13:34ID:???
あきらめてないです。なんとか・・・
一応sendmailでメールを送信するところまでは漕ぎ着けました。
まだ、文字化けしたり、mailに必要な内容が反映されなかったり
とかありますが・・・・・それが解決したら次はページ作成用の
スクリプトに着手です。
223sage
垢版 |
02/01/24 14:18ID:???
いつのも間にかどんどんすすんでるね!
がんばれよ>>1
02/01/24 14:25ID:???
がんばれよ。

日本語は本文はベタにISO-2022-JPだが、
subjectのエンコードはけっこうめんどくさいんだ。
02/01/24 21:22ID:???
>>224
原理主義者で無ければ全部MIME::Base64しちまえば良いだろう。
これで困るMUAある?
226無謀者
垢版 |
02/01/24 22:06ID:???
日本語コードって難しいですね・・・・
本とか読むと”EUCで書く”って書いてあり、フォームから取得したデータを
&jcode::convert(*form, 'euc');でデコード、でsendmailに送る時は
&jcode'convert(*name, 'jis');って書いてあるんですが、それでやると
表示が文字化けしたり、送られたメールが文字化けしたり・・・・
でいろいろ試した結果、スクリプトをsjisで保存、フォームでコードは
&jcode::convert(*form, 'sjis');メールはjisでデコードしたら今のところ
うまく行ってます。ちなみにw2k+IE6での検証です。あとはWinのNNと
MACでIE&NNを試してみないと・・・・
02/01/24 23:49ID:???
うんこすけーぷ4.xのヤロウ、たまにエンコード間違えやがるから、
確実にjis/sjis/eucを判定できる文字を各フォームに突っ込んどいて、
jcode.plかなんかで判定、convertんとき元コード指定せんと、テストで
上手く行ってても稼動させてしばらく経ったらクレームがなんて事が。

# 昔はまったな、これで。

charsetもHTTPヘッダ、METAで両方吐き出しとけ。念には念だ。
02/01/25 01:13ID:???
>>215
アップされるのを待ってるんだが。
02/01/25 01:25ID:???
>>226
gooとかhotmailとかの有名どころも
アカウント取って検証した方がいいよ。
以前 goo ではまったことがある。
02/01/25 01:25ID:???
スイマセン。どうしてもxrea.comで動かないんです・・・・・
他のところで垢とって試してみます。
02/01/25 02:13ID:???
困ったらとにかくへろぅわぅうど!
#!/usr/bin/perl #サーバにあわせりゅ
print "Content-type:text/plain \n\nHelloWorld.";
exit;
をウプだ。
これが動かないなら設置/設定方法が悪いかCGIが使えないかどっちかだな。

flockやsymlink、スクリプト本体より上のディレクトリにアクセスしてる
場合なんかもサーバによっては引っかかるぞ。
02/01/25 02:17ID:???
なにげに人気のあるスレだな。
何でだろう?
02/01/25 02:29ID:???
>>232
1のマメなレスと、微妙なジサクジエンによるものであろう。
234sage
垢版 |
02/01/25 14:31ID:???
これ自作慈円?なの?
02/01/25 15:25ID:???
>>234
なんか>>1が叩かれても逆切れせず、氏ったかもしないで真摯にガンバッテイルから、
漏れはいくつか応援出したじょ。

#なんか自分がPerlいじりだしたころを思い出すんだよな、このスレ。
236無謀者
垢版 |
02/01/25 19:29ID:???
先の鯖でどうしても動かないのですが、ご協力いただいた方へのお礼も含めて
とりあえずソースだけでもウプして晒してみます。
コメントだらけの汚いソースですが2週間前にCGIに手をつけた素人という事で
見逃してください・・・・
ttp://cgitest.s7.xrea.com/cart.txt
まだエラー処理とかは全然してません。とりあえず動いたというレベルです。
今他の鯖の垢申請中なので動けばまたウプします。

ちなみに自作自演はしてません。てかこんな自作自演できるくらいなこんな苦労しなくていいのに・・・・・(w
02/01/25 21:11ID:???
さまになってきたジャン。
なんかスゲー懐かしい感じだyo
02/01/25 23:43ID:???
たいしたもんです。感心しました。
239無謀者
垢版 |
02/01/26 00:38ID:???
文字コードEUCで送ったら動きました
ttp://cgitest.s7.xrea.com/cgi-bin/shop4.htm
ただやっぱりブラウザで頻繁に文字化けするし、sendmailで送られる
データはバヶバケなんですよね
はてさて、何にあわせるのが一番楽なのか・・・・
EUC統一がよさそうなんですが、そうするとブラウザが頻繁にエンコードミスるようなんですが
うちのIEのせいでしょうか?それともやっぱりブラウザ出力部はS-JISにしといたほうがいいですか?
02/01/26 01:11ID:???
>>239
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
だからじゃないの?
02/01/26 01:18ID:???
少し休め。
CGIが吐き出すHTML、<html>〜<head>〜</head>〜</html>が丸々抜けてんぞ。
shop4.htmはMETAの指定がShift_JISなのにファイル自体はEUC-JPだしな。

よくやったよ。フィニッシュに向けて、まずは寝れ。
02/01/26 01:28ID:???
正直、ここまでたどり着くとは思わなかった。
243名無しさん@お腹いっぱい。
垢版 |
02/01/26 10:31ID:8XQYuO1B
              ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < >>1 ねぇねぇまだなの?早く早く〜
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  長野りんご.   |/
244 
垢版 |
02/01/26 13:29ID:cJzc6DfB
おおー、よくやったなー。お見事。

ちゃんとサブルーチンに分けてあるし。
見やすいし。
別に汚いソースじゃないじゃん。いいんじゃないの?
245244
垢版 |
02/01/26 13:49ID:8S+CJ+jU
>sub sub_add{
> $ctime=time();#クッキーID作成用要素(時間)
> $cid=$$+$ctime;#クッキー用ID

厳密には、クッキー用のIDが足し算だとイカンと思うが・・。

プロセスIDは一回転して戻ってくるから。
Windows だと、プロセスIDはランダムに割り当てられるし。
246無謀者
垢版 |
02/01/26 15:20ID:???
お褒めの言葉ありがたい限りです。ホントここに来て見てよかったですありがとうございます。
で、文字コードなんですが・・・
一般的にはスクリプト自体はEUCで書けとものの本には書いてありますよね?
ただ、HTML表示はS-JISが一般的(だと思うのですが)
たとえばスクリプトをeucで書いて(保存して)フォームからのデータは
jcode.pl使ってEUCにコンバートで、スクリプト内のHTML表示部だけMETAタグでs-jis
指定してやればブラウザはちゃんと解釈してくれるんでしょうか?
CGIというよりWEB作成の基礎の気もするんですが、今まではDW使ってて
文字コードって意識した事無かったもので・・・・・
前に書いた通り全てS-JISで統一すれば楽なんですけど、スクリプトがeucじゃないと
動かない鯖にいきなりあたっちゃったもんで・・・・・
あと、この鯖、(てかeucでスクリプト書くと)sendmailで送られたメールが
どうしようもなく文字化けするんですよね・・・・ちゃんとコンバートはかけてる
はずなんですが。

>>245
$$で得られるIDが3桁みたいだったので重複する可能性も考えtime()とあわせてみたんですが
ダメですかね?1秒以内に$$が重複する可能性は無いと思いまして・・・
アクセス数の極端に多い(同時に買物をスタートする可能性が高い)場合は問題になりそうですが・・・・
02/01/26 15:43ID:???
>>246
内部でEUC処理するなら、出力もEUCで良いんじゃないの。
METAタグと、出力ヘッダの両方でEUCに指定した方がいいよ。
あと、メール本文はJIS出力でいいけど
subjectはそれだけじゃダメでちゅ。バケまちゅ。
248244
垢版 |
02/01/26 15:50ID:8S+CJ+jU
プロセスIDは、65535 までいくよ。
+ って、文字列くっつけるんだっけ? 忘れちゃった。
$cid = "$ctime$$"; とかにしとく方がいいかと思ったんだけど。

あとcgi なら、同時アクセスでも、別のプロセスを立ち上げるから、
同時に買い物をスタートされても平気。
02/01/26 16:10ID:???
お!キレイにかけてるじゃん
俺のスクリプトよりもキレイだぞ;

しかしCGI.pm使ってないの見るの久しぶりなんでなんとも懐かしいにおいがする
のう。。。
250無謀者
垢版 |
02/01/26 16:12ID:???
あ、そうか・・・・数字の足し算だと確かに重複の可能性がありますね・・・
修正させてもらいます。

で、やっぱりメールの本文の文字化けが解消しない・・・・
スクリプトとHTML出力はEUCで統一したんですが。
@sendml=メールの本文;
&jcode'convert(*sendml, 'jis');
じゃダメなんですかね?
@sendmlはファイルから読み出して格納してます。
ファイル自体は開いて見るとeucになってるみたいなんですが。
02/01/26 16:22ID:???
ソースよく見てないんだけど、
@sendmlってことは、配列なんでしょ。
jcodeなら各要素ごとにやらなだめでしょ。
252無謀者
垢版 |
02/01/26 16:31ID:???
なるほど・・・だとすればファイルに書き込む段階で各要素(変数)
をjisでコンバートして最後に一気に読み込んで送信すれば良いんですかね?
02/01/26 16:35ID:???
readparseが見当たらないが、ブラウザから受け取ったデータの汚染チェックはしているかな?
たとえばcookieに予想していない文字列突っ込まれたときとか
254無謀者
垢版 |
02/01/26 16:44ID:???
メールの文字化けの件、ほぼ解決しました。ご指導いただいた方ありがとうございました。

>>253
ReadParseってフォームからのデータの取得にしか使ってないんですが、
他にも何か使い方があるんでしょうか?なんやら重要そうな内容みたいですが・・・
02/01/26 17:06ID:???
ソース見たんですが、ReadParseのあと
フォーム要素のハッシュに対してもjcodeで一括変換しようとしてるでしょ。
テストしてうまく行ってるのかもしれないけど、
jcodeは効いてないんじゃないかな。
02/01/26 17:07ID:???
例えばcookieに"../xxxx%00"とか仕込まれて、汚染チェックをしていないと
cartファイルが../xxxxになってしまう。

ブラウザから渡されたデータは全て信用できないものと仮定して汚染チェックを行わなければいけない。
それをReadParseの中でやっているのなら問題はないが、汎用ルーチンのようなのでやっていない可能性大。
257241
垢版 |
02/01/26 22:45ID:???
お、直ってんジャン、CGIの吐くタグ。
まだ余計な<center>が<body>の前にひとつついてくるが。
EUC統一ついでにHTMLファイルもEUCに統一しちゃうと、フォームから入力される
文字コードはEUCと決め打ちできるから、入力段(&ReadParseのあと)でのコード
変換は要らなくなるぞ。

いま化けるのは>>255さんの言うとおり、商品ページがSJISで、jcode.plが
SJIS->EUCを変換し切れてないからだろう。
(ひょっとするとメールの件もここの変換ミスが一枚絡んでいるかもね)

&ReadParse( *form);
foreach $key(keys %form){
  jcode::convert(\$form{$key}, 'euc'); #現在内部処理をEUC統一したそうなんで
}

とかのほうがベターだろう。(生書きだから検証してないけど)
258無謀者
垢版 |
02/01/26 23:14ID:???
いろいろありがとうございます。shop.cgiに関しては少しずつ煮詰めていきたいと思います。
さて、これを始めるきっかけにもなった商品用ページ作成用CGIの作成に取り掛かろうと
思ってるのですが、その方法についてお知恵拝借いたしたく。
作りたい商品ページの形式としては今ウプしてあるようなかたちです。
画像ファイルのアップロード等勉強しなくちゃいけないことは山ほどあるのですが、手順として
どういうものがあるのか。
今考えてるのは、テーブル一個分の項目(1商品分)を一行としたdatファイルに保存しておいて
それにタグを挿入してHTMLファイルを作るというものです。新規商品を追加する時や削除
する時はそのdatファイルを呼び出して編集・削除・追加を行いHTMLファイルを丸々上書きという
方法です。HTMLファイルを直接いじるのはタグなどが邪魔して非常にめんどくさそうなので、
HTMLファイルをいじるのではなく、datファイルを編集してそのたびにHTMLを書き直すほうが
楽かなぁと思ったので・・・・
HTMLを作らずにdatファイルからcgiで表示も考えたのですが、鯖の負荷等考えるとHTML生成しちゃった
方が良い気もしたので。
あとページごとのデザイン等の一括変更とかの機能にはCSS使うしかないですかね・・
02/01/27 00:03ID:???
編集、削除が出来る掲示板で、管理者以外カキコ禁止にすれば、あと一ひねりだろう。

画像は専用ディレクトリを作って、ファイルリストをgetして、
BBSの書き込みフォームのページかなんかにWidth/height指定してfilenameと
画像をサムネイル表示。
書き込みフォーム自体にはプルダウンメニュー(select/option)か何かを動的に
生成して、書き込み情報に加えるとかすればOK

画像ウプは説明が長くなるから、まあ「form multipart」あたりでグーグル逝け。

デザイン一括変更は雛型式(デザインを外部ファイルで指定)のBBSを
(拾ってく|作)ればいいんでないかい?
260無謀者
垢版 |
02/01/27 01:50ID:???
なるほど、掲示板を応用すれば良いんですね。商品ページは複数ページ作りたいんで、
・多板作成が可能
・板毎のデザイン変更が可能
・書き込み内容編集が可能
・画像アップロード可
って掲示板探してそれを参考にしてみよう。
・・・・って思って、画像以外は2ch型改造のAhhanBBSがよさそう
なんでソース見てみたら複雑すぎてわけわかめ(鬱
もうちょっと簡単そうなの探してみよう。
というわけでCGI INDEXとCGI ZOOで旅してきます。
261sage
垢版 |
02/01/28 15:00ID:???
ttp://cgitest.s7.xrea.com/cart.txt
これみれなくなってるぞ?!
けした?
おれもソースみてみたいからみせてくれ>>1
なんかだいぶできてきたみたいだね!
262無謀者
垢版 |
02/01/28 17:13ID:???
>>261
スイマセン消してました。
またアップしますのでしばらくお待ちください。
263sage
垢版 |
02/01/29 11:00ID:???
うぃ!たのしみにまっとるよ!
02/01/30 16:55ID:???
あげ。
265無謀者
垢版 |
02/01/30 20:21ID:???
ちょっと仕事がつまり気味で、停滞中・・・・・
>>263さんスンマソンしばらくお待ちください
02/02/02 18:51ID:???
1よ、もうこのスレは放置かい?
267無謀者
垢版 |
02/02/02 20:06ID:???
スイマセン、ちょっと仕事が立て込んでて・・・・
尻取りスレにでも使っといてください
268うぇw
垢版 |
02/02/03 01:02ID:RmsIRY/L
援助交際な出会い
http://www.kgy999.net/e.html
女子小学6年生レイプ画像
http://www.kgy999.net/imc/434233455231.jpg
女子小学6年生レイプ動画
http://www.kgy999.net/imc/94324.mpeg
ertret

r r
et rt
02/02/03 13:52ID:???
良くココまで来た・・・。
270傍観者
垢版 |
02/02/03 16:59ID:???
ちと進行が遅くなってるのが残念だけど、無謀者氏とレベルが
近しいので、実用的な読み物としてヲチしてます
…ま、目先の仕事優先は仕方なし…かな?
02/02/03 20:00ID:???
>>267
あんたさ、折角なんとかマトナなスレになりつつあったのに、
尻取りスレにでも、は無いだろう。
一体どういう神経してるんだよ。

それじゃ、始めるぞ。


「パール」
02/02/03 20:58ID:???
>271
まったくだプンプン。
早く帰ってくるのみんな待ってるのに。

「ルビー」
02/02/03 21:01ID:???
おいおい、本当に>>1は呆れた奴だなー

「ビール」
02/02/03 22:54ID:???
「ルビー」(´Д`;)
02/02/03 23:07ID:???
>274
しりとり侍かよ!

フォッフォ
「ビール」
02/02/04 08:31ID:???
仕事が忙しいのは仕方ないとして、

ttp://cgitest.s7.xrea.com/cart.txt

これの再アップだけでもして欲しい・・・
02/02/04 16:55ID:???
なぁ、>>1よ
俺も君と同じようにPerl馬鹿だった。
でもさっきPHPの本を軽く読んでみた。
馬鹿にならんくらい簡単だぞ、これくらいできるようになった君ならあっという間に
完成できるかもしれない。
PHP4をお勧めするよ、マジで。
こんなにセッション管理が楽だとは思わなかったよ。
278無謀者
垢版 |
02/02/04 18:52ID:???
>>276
お待たせしました。ウプ完了です。
最初のに送料計算用のスクリプトを加えようとしてるんですが、今のところ機能
してません。しばらくいじってなかったらすっかり忘れてるし(w

>>271-275
ご協力ありがとうございます。てか、一瞬で終わってるな・・・・
>277
PHPは最初の方でも勧めてくれた方がいたような・・・・
とりあえず現状最もデファクトスタンダードに近いと思われるという事で
Perlから始めて見ました。まぁ、こんなタラタラやってるうちにPHP全盛って事に
なったりは・・・・しませんよね?

というわけでまたボチボチ続きを始めますのでよろしくお願いします・・・(何をだ?)
279無謀者
垢版 |
02/02/04 22:26ID:???
送料の自動計算と「〜円以上送料無料」のの機能を追加してみました。
未だに微妙に文字化けするのがチョイ鬱・・・・
文字コードをフォームのHTMLも含めて見直してみます。
02/02/04 23:06ID:???
ほう、ちゃんと計算できてんじゃん
02/02/04 23:44ID:???
>>279
HTTPヘッダのところでも指定した方が良いよ
02/02/05 13:50ID:???
>278
そうだね、現状ではサーバを製作者側で指定できない限りはPHPはまだ使えないね。
シカーシPHPも4になってほぼ機能的に出尽くした感があるし、ぼつぼつ標準設置の
レン鯖増えてきたし、WebアプリののRADとして、Perlとはすみわけしながら普及
しそうな勢いがあるな。

ところで設置URIは、上記と同じ
ttp://cgitest.s7.xrea.com/cgi-bin/shop4.htm
でいいのかえ?最終確認画面で文字化けしちょるようだが
02/02/05 15:21ID:???
なかなかのデザインだのう。
はよ完成して動くことを祈る。
02/02/05 17:43ID:???
Mac/iCab2.71で見ると、購入ボタンの次の画面でunknown Content-Type: が出よりますな。
285無謀者
垢版 |
02/02/05 22:33ID:???
CGI中のHTMLヘッダで文字コードを指定する場合って、たとえばeucにしたいのなら
"content-type: text/html;charset=EUC-JP\n\n";

で良いんでしょうか?ここで言われたので、ぐぐるで検索掛けてみたら
上のような書き方がちらほらあったので。ただ「文字コード、charset」とかで検索すると
ほとんどが<META>タグの記述方法になってるので、いまいちこれでいいのが自信が無い・・・

いまさらながら気が付いたんですが、どの本読んでもhtmlヘッダ
に関しては
"content-type: text/html\n\n"
を書けとしか書いてないんですよね。散々文字コードの事は書いてあってjcode使って
コンバートしろとかは書いてあるのに・・・・
286無謀者
垢版 |
02/02/05 22:34ID:???
スイマセンsage忘れ・・
間に合いませんでした。
02/02/05 23:04ID:???
>>285
あってる。
ただ、;のあとに半角スペース入れた方がいいのかな
意味あるのかは知らないけど、みんなやってるということで
print "Content-type: text/html; charset=euc-jp\n\n";

でもmetaにも書いてくれると親切だ。
288無謀者
垢版 |
02/02/05 23:15ID:???
ありがとうございます。ヘッダとMETA両方にしつこいくらいに書きます(w
しかし、なんで入門書にこれが書いて無いんですかね?
文字コードの自動判定なんてまともに出来ないヴァカブラウザがゴロゴロしていて
純粋なHTMLはS-JISで書くのが一般的(?)なのに・・・
いくらフォームデータエンコードしても、CGI内のHTML表示部分で
ちゃんと指定しとかなきゃ行ったり来たりしてる間にブラウザも迷うっちゅねん!
と思うのですが・・・・

ところで、皆さんはCGI内のHTML部にMETAとか<HTML></HTML>書くときに
何処に書いたらいいかわからなくなる事無いですか?
一箇所で完結すれば良いんですがHTML出力を前半と後半をサブルーチンで
分けたり、使いまわしたりする時に、</html>は何処に入れるんだ?
とかここは<html>はいるのか?みたいに
レスを投稿する


ニューススポーツなんでも実況