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

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>タグでできる。
1-
あと 210 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s