☆ショッピングカートのCGIを作りたい!Perlで☆ (517レス)
1-

218: 210 02/01/23 03:21 ID:??? AAS
>>217
>フレームなし
JSの諸事情で、商品が複数ページに渡る場合、正直フレームにしないと
辛いな。

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

複数ページでフレーム避けたいなら、途中退場処理のコストを払っても
やはりカートをサーバーサイドに置いたほうが楽だと思われ。
省2
219: 名無しさん@お腹いっぱい。 [age] 02/01/24 10:19 ID:??? AAS
  あげ。
220: 名無しさん@お腹いっぱい。 [ ] 02/01/24 11:10 ID:??? AAS
そろそろあきらめたかな?
221: 名無しさん@お腹いっぱい。 02/01/24 11:26 ID:??? AAS
そろそろあきられたかな?
222: 無謀者 02/01/24 13:34 ID:??? AAS
あきらめてないです。なんとか・・・
一応sendmailでメールを送信するところまでは漕ぎ着けました。
まだ、文字化けしたり、mailに必要な内容が反映されなかったり
とかありますが・・・・・それが解決したら次はページ作成用の
スクリプトに着手です。
223: sage 02/01/24 14:18 ID:??? AAS
いつのも間にかどんどんすすんでるね!
がんばれよ>>1
224
(1): 名無しさん@お腹いっぱい。 02/01/24 14:25 ID:??? AAS
がんばれよ。

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

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

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

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

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

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

よくやったよ。フィニッシュに向けて、まずは寝れ。
242: 名無しさん@お腹いっぱい。 02/01/26 01:28 ID:??? AAS
正直、ここまでたどり着くとは思わなかった。
243: 名無しさん@お腹いっぱい。 02/01/26 10:31 ID:8XQYuO1B(1) AAS
AA省
244
(2):   02/01/26 13:29 ID:cJzc6DfB(1) AAS
おおー、よくやったなー。お見事。

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

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

プロセスIDは一回転して戻ってくるから。
Windows だと、プロセスIDはランダムに割り当てられるし。
246
(1): 無謀者 02/01/26 15:20 ID:??? AAS
お褒めの言葉ありがたい限りです。ホントここに来て見てよかったですありがとうございます。
で、文字コードなんですが・・・
一般的にはスクリプト自体はEUCで書けとものの本には書いてありますよね?
ただ、HTML表示はS-JISが一般的(だと思うのですが)
たとえばスクリプトをeucで書いて(保存して)フォームからのデータは
jcode.pl使ってEUCにコンバートで、スクリプト内のHTML表示部だけMETAタグでs-jis
指定してやればブラウザはちゃんと解釈してくれるんでしょうか?
CGIというよりWEB作成の基礎の気もするんですが、今まではDW使ってて
文字コードって意識した事無かったもので・・・・・
前に書いた通り全てS-JISで統一すれば楽なんですけど、スクリプトがeucじゃないと
省8
247: 名無しさん@お腹いっぱい。 02/01/26 15:43 ID:??? AAS
>>246
内部でEUC処理するなら、出力もEUCで良いんじゃないの。
METAタグと、出力ヘッダの両方でEUCに指定した方がいいよ。
あと、メール本文はJIS出力でいいけど
subjectはそれだけじゃダメでちゅ。バケまちゅ。
248: 244 02/01/26 15:50 ID:8S+CJ+jU(2/2) AAS
プロセスIDは、65535 までいくよ。
+ って、文字列くっつけるんだっけ? 忘れちゃった。
$cid = "$ctime$$"; とかにしとく方がいいかと思ったんだけど。

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

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

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

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

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

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

&ReadParse( *form);
foreach $key(keys %form){
省3
258: 無謀者 02/01/26 23:14 ID:??? AAS
いろいろありがとうございます。shop.cgiに関しては少しずつ煮詰めていきたいと思います。
さて、これを始めるきっかけにもなった商品用ページ作成用CGIの作成に取り掛かろうと
思ってるのですが、その方法についてお知恵拝借いたしたく。
作りたい商品ページの形式としては今ウプしてあるようなかたちです。
画像ファイルのアップロード等勉強しなくちゃいけないことは山ほどあるのですが、手順として
どういうものがあるのか。
今考えてるのは、テーブル一個分の項目(1商品分)を一行としたdatファイルに保存しておいて
それにタグを挿入してHTMLファイルを作るというものです。新規商品を追加する時や削除
する時はそのdatファイルを呼び出して編集・削除・追加を行いHTMLファイルを丸々上書きという
方法です。HTMLファイルを直接いじるのはタグなどが邪魔して非常にめんどくさそうなので、
省5
259
(2): 名無しさん@お腹いっぱい。 02/01/27 00:03 ID:??? AAS
編集、削除が出来る掲示板で、管理者以外カキコ禁止にすれば、あと一ひねりだろう。

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

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

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

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

それじゃ、始めるぞ。

「パール」
272
(1): 名無しさん@お腹いっぱい。 [ ] 02/02/03 20:58 ID:??? AAS
>271
まったくだプンプン。
早く帰ってくるのみんな待ってるのに。

「ルビー」
273
(1): 名無しさん@お腹いっぱい。 02/02/03 21:01 ID:??? AAS
おいおい、本当に>>1は呆れた奴だなー

「ビール」
274
(2): 名無しさん@お腹いっぱい。 02/02/03 22:54 ID:??? AAS
「ルビー」(´Д`;)
275
(1): 名無しさん@お腹いっぱい。 [sage ] 02/02/03 23:07 ID:??? AAS
>274
しりとり侍かよ!

フォッフォ
「ビール」
276
(1): 名無しさん@お腹いっぱい。 02/02/04 08:31 ID:??? AAS
仕事が忙しいのは仕方ないとして、

外部リンク[txt]:cgitest.s7.xrea.com

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

>>271-275
ご協力ありがとうございます。てか、一瞬で終わってるな・・・・
>277
PHPは最初の方でも勧めてくれた方がいたような・・・・
とりあえず現状最もデファクトスタンダードに近いと思われるという事で
Perlから始めて見ました。まぁ、こんなタラタラやってるうちにPHP全盛って事に
省2
279
(1): 無謀者 02/02/04 22:26 ID:??? AAS
送料の自動計算と「〜円以上送料無料」のの機能を追加してみました。
未だに微妙に文字化けするのがチョイ鬱・・・・
文字コードをフォームのHTMLも含めて見直してみます。
280: 名無しさん@お腹いっぱい。 [age] 02/02/04 23:06 ID:??? AAS
ほう、ちゃんと計算できてんじゃん
281: 名無しさん@お腹いっぱい。 02/02/04 23:44 ID:??? AAS
>>279
HTTPヘッダのところでも指定した方が良いよ
282: 名無しさん@お腹いっぱい。 02/02/05 13:50 ID:??? AAS
>278
そうだね、現状ではサーバを製作者側で指定できない限りはPHPはまだ使えないね。
シカーシPHPも4になってほぼ機能的に出尽くした感があるし、ぼつぼつ標準設置の
レン鯖増えてきたし、WebアプリののRADとして、Perlとはすみわけしながら普及
しそうな勢いがあるな。

ところで設置URIは、上記と同じ
外部リンク[htm]:cgitest.s7.xrea.com
でいいのかえ?最終確認画面で文字化けしちょるようだが
283: 名無しさん@お腹いっぱい。 [ ] 02/02/05 15:21 ID:??? AAS
なかなかのデザインだのう。
はよ完成して動くことを祈る。
284: 名無しさん@お腹いっぱい。 02/02/05 17:43 ID:??? AAS
Mac/iCab2.71で見ると、購入ボタンの次の画面でunknown Content-Type: が出よりますな。
285
(2): 無謀者 [age] 02/02/05 22:33 ID:??? AAS
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:34 ID:??? AAS
スイマセンsage忘れ・・
間に合いませんでした。
287: 名無しさん@お腹いっぱい。 02/02/05 23:04 ID:??? AAS
>>285
あってる。
ただ、;のあとに半角スペース入れた方がいいのかな
意味あるのかは知らないけど、みんなやってるということで
print "Content-type: text/html; charset=euc-jp\n\n";

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

ところで、皆さんはCGI内のHTML部にMETAとか<HTML></HTML>書くときに
何処に書いたらいいかわからなくなる事無いですか?
一箇所で完結すれば良いんですがHTML出力を前半と後半をサブルーチンで
省2
289
(2): 名無しさん@お腹いっぱい。 02/02/06 00:26 ID:??? AAS
>>288
そうだよ両方書くんでちゅ。
それが当たり前でちゅ。
ていうかここで2回も書いたんでちゅ。

ヘッダ出力とフッタ(は要らんかもしれんが)を
サブルーチンとかモジュール化したら?
CGI.pmでもヘッダ出力できるけど、
日本語の場合、文字コードの指定が必要だから
ジブソで用意しました。
290: 名無しさん@お腹いっぱい。 02/02/06 00:33 ID:??? AAS
>>289
うろ覚えだけど、最近の CGI.pmなら
文字コードやContent-Typeとかも
指定できた気がする
291
(1): sage 02/02/06 10:33 ID:??? AAS
えらいぞ!短期間でよくここまで!
後は289のいうとうりモジュール化することを進めるよ!
あとでつかいまわしができるよ!
292
(1): 名無しさん@お腹いっぱい。 02/02/06 10:48 ID:??? AAS
CGI.pmでヘッダ出力できるよ。

#!/usr/bin/perl

use CGI;

$query = new CGI;
print $query->header(-charset=>'Shift_JIS');

おいらは最初にヘッダを出力しちゃってそれぞれの出力終了時にフッダの
サブルーチンに飛ばしてる。
293: 無謀者 02/02/06 16:55 ID:??? AAS
>>289
>ていうかここで2回も書いたんでちゅ。
そうでしたね。いや、読んではいたんですが、どうしても>>285の方法が
はっきり自信持てなかったもんで・・・・
>CGI.pm
その辺の事は今後順次勉強していきたいと思います。とりあえずはできるだけ
自分で書くというのも勉強になりますので・・・
>モジュール化
プログラム経験が無いのでモジュールと言うものの概念がいまいちワカランのですが
「良く使うものをサブルーチンにして、それを別ファイルに纏めておく」と言うことで
省8
294: 名無しさん@お腹いっぱい。 [ ] 02/02/06 17:06 ID:??? AAS
>>292
print $query->end_html
これで終れる
295
(1): 259 02/02/06 20:31 ID:??? AAS
>「良く使うものをサブルーチンにして、それを別ファイルに纏めておく」
>と言うことで良いんでしょうか?

サブルーチンをファイルにしてメインからrequireするあたりがモジュール化の第一歩。
そこから名前空間の概念覚えて、別ファイルのほうpackage宣言してみて、って
少しづつ覚えていけばいいと思うよ。(その先がまだ長いんだけれど‥‥)
いきなり.pmモジュールなんていうとワケわかんなくなるからね。

で、商品ページの方はどうよ?
296
(1): 無謀者 02/02/06 21:21 ID:??? AAS
>>295
なるほど、そんな単純なものではなさそうですね>モジュール

>商品ページ
いかんせん仕事の都合で間があいちゃったんで全然出来てません。設計書を作ってる
最中だったんですが、今読み返してみるとようワカラン(w
もう一度1からやり直しです。最初はフォームからHTML生成しちゃおうと思ったんですが、
在庫数をカウントしたいので、cgiからdatファイルから読み出してHTML表示させるしか無さそう・・・
HTMLにHiddenで入れようとも思ったのですが、商品が減る度にHTML書き直させなきゃならなそうだし。
ただ、全てをCGIにやらせると鯖の負荷も高くなりますよね?どうしたものか・・・・
297
(5): 259 02/02/07 15:02 ID:??? AAS
>296

open (READ,$filename);
 @data = <READ>;
close (READ);
#@dataに対して必要な処理
open (WRITE,">$filename");
 print WRITE @data;
close (WRITE);

式でやると、.datの件数が増えると負荷もかかるしメモリも喰う。
これは鯖屋さんに嫌われる。(警告が来たり、いきなり垢止められたりする)
省22
298: 無謀者 02/02/08 21:13 ID:VrHm3ZfY(1) AAS
えーとパスワード認証してる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){
#−−−メニュ画面ーーーーー#
省4
299: 名無しさん@お腹いっぱい。 02/02/09 09:04 ID:??? AAS
ハァ?
メニューに飛ばす?
なんか意味わかんねぇ
300
(1): 無謀者 02/02/09 11:30 ID:??? AAS
すいません。書き方悪かったですね・・・・流れとしては
フォーム(HTML)からパスワード入力>menu画面(menu.cgi)>データ入力
>データ入力後refreshでもう一度menu画面に戻る。
てのをやりたいんですが、戻り先をmenu.cgiにするのにパスワード
を渡す方法をがわからないんです。そもそもFORMのinputで渡すような項目を
Formを使わずに渡す方法ってどんなのがあるんでしょう?
301
(1): 名無しさん@お腹いっぱい。 [ ] 02/02/09 13:35 ID:??? AAS
>>300

方法としてアドレスに埋め込む(リフレッシュ先のアドレスに仕込む)
hoge.com/menu.cgi?id=hoge&pass=hoge

HIDDENを使う
データ入力の度に
<INPUT HIDDEN NAME=id VALUE=hoge><INPUT HIDDEN NAME=pass VALUE=hoge>
これを必ず仕込んでおく

なお、どちらの方法でもmenu画面で逐次パラメータを取得して次に渡す必要がある

的外れの返答かな?
302: 名無しさん@お腹いっぱい。 [ ] 02/02/09 13:36 ID:??? AAS
自己訂正

当然ながらHIDDENを使うときはFORMタグを必要としますからね。
303
(1): 無謀者 02/02/09 13:50 ID:??? AAS
ありがとうございます。その辺を知りたかったんです。
つまり、通常フォームから
<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内から上記のように
省4
304: 名無しさん@お腹いっぱい。 02/02/09 14:13 ID:??? AAS
パラメータは&で繋ぐ
305: 名無しさん@お腹いっぱい。 02/02/09 14:14 ID:2AUefyPU(1) AAS
>>303
そのとおり。
あと老婆心ながらHTMLのタグを書くときに""(クオーテーション)はいらない。
""がいるのはスペースが含まれる場合のみ。
""を省略するだけで結構処理スピードがあがるよ。
306
(1): 無謀者 02/02/09 14:26 ID:??? AAS
ありがとうございました>教えてくださった皆様・
うまくいきました。
ちなみにこれと同じ方法を使ってFORM内の
Submitボタンを画像とかに置き換える事は可能なんでしょうか?
ボタンの変わりに画像貼ってそれのリンク先をmenu.cgi?neme=submit
ってやるとsubmitボタンとして動作します?
307: 名無しさん@お腹いっぱい。 02/02/09 14:58 ID:??? AAS
>>306
<input>タグでできる。
308: 名無しさん@お腹いっぱい。 02/02/09 18:56 ID:??? AAS
外部リンク[htm]:tohoho.wakusei.ne.jp
309: 無謀者 02/02/09 19:23 ID:??? AAS
皆様いつもありがとうございます。
商品ページ作成部分が若干出来たのでウプしました。
外部リンク[htm]:cgitest.s7.xrea.com
から入れます。パスワードは「123」です。
今のところ、商品カテゴリーの作成と商品の追加しか動きません。
カテゴリーを追加した後に商品を追加する事になります。既存のカテゴリーは
「商品群1」と「商品群2」です。
商品群1の内容は
外部リンク[cgi]:cgitest.s7.xrea.com

省7
310: 無謀者 02/02/09 20:31 ID:??? AAS
あ、今現在新規商品作成時に指定したオプション項目は反映されません。
「,」で区切って入力してもらって、そこからセレクトボックス生成させる
のを今作ってます。
311
(4): 名無しさん@お腹いっぱい。 02/02/10 16:31 ID:??? AAS
うーん、せっかく上手くいっているところに水を差すようだが、
URIでパスワード指定やっちゃうと、認証もクソもないぜ。
URIがバレた時点でソッコーで改ざんされっぞ。
googleツールバーの高機能版では閲覧中のURI自動通知されちまうしな。

「登録しました」のページに「メニューに戻る」ボタンをつけて、
hidden渡しじゃだめなんかい?
どうしてもrefreshでやりたいなら、refererとってCGIと認証ページからの
アクセスのみ許可するとかやってやんねーと。
312
(1): 無謀者 02/02/10 20:00 ID:??? AAS
>>311
確かにそれは思ったんですけど、一応pass入れたあとの管理者用画面だから
大丈夫かな・・・と考えてたんですが・・・・・
hiddenで入れてもソース見ればそのままpassが見えちゃうわけですし・・・・
313: 311 02/02/10 23:43 ID:??? AAS
>>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拒否
省16
314
(1): 無謀者 02/02/11 02:03 ID:??? AAS
ちょっと機能追加
登録済み商品の修正が出来るようになりました。
>商品登録テストしてくれて人
今のところ、文字置換やエラー処理全然いれて無いので、コメントのところで
改行入れるたり、新規ページ作成時に、ファイル名入れないと、データボロボロになります(汗
明日(今日か・・)必要フォーム項目未記入時のエラー処理と、改行その他、文字列の
置換処理を出来るようにします。

>>311=313
なるほど・・・・と入っても、いまいち管理用画面でのその辺のセキュリティの必要性が
理解できて無いんですが・・・・・
省1
315: 無謀者 02/02/11 02:16 ID:??? AAS
ところで、今回、新規データ入力時に
@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);
省23
316
(1): 297(=259) 02/02/11 03:41 ID:??? AAS
$noは数値だよね?
なら、

while(<IN>){
my @cell = split/\t/;
$_ = $line if $cell[0] == $no;
print TMP;
}

で数値評価したらどうかな?
なんとなくだけど、$cell[0]か$noに空白とか含まれてそうだったんで。
317
(1): 無謀者 02/02/11 18:26 ID:??? AAS
>>316
うまくいきました。ありがとうございます<IN>
で変数が$_に入ってるってのがすっかり頭から飛んでました・・

ところで、正規表現なんですが、たとえば$priceに半角数字以外(「,」とか)が入ってた場合に
エラーを表示させるのって
if ($price eq ~/\D/){
print "価格はカンマ無しの半角数字で入力してください";
}
で良いんですよね?
1-
あと 200 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s