☆ショッピングカートのCGIを作りたい!Perlで☆ (517レス)
☆ショッピングカートのCGIを作りたい!Perlで☆ http://medaka.5ch.io/test/read.cgi/php/1010660032/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
232: 名無しさん@お腹いっぱい。 [age] 02/01/25 02:17 ID:??? なにげに人気のあるスレだな。 何でだろう? http://medaka.5ch.io/test/read.cgi/php/1010660032/232
233: 名無しさん@お腹いっぱい。 [sage] 02/01/25 02:29 ID:??? >>232 1のマメなレスと、微妙なジサクジエンによるものであろう。 http://medaka.5ch.io/test/read.cgi/php/1010660032/233
234: sage [sage] 02/01/25 14:31 ID:??? これ自作慈円?なの? http://medaka.5ch.io/test/read.cgi/php/1010660032/234
235: 名無しさん@お腹いっぱい。 [sage] 02/01/25 15:25 ID:??? >>234 なんか>>1が叩かれても逆切れせず、氏ったかもしないで真摯にガンバッテイルから、 漏れはいくつか応援出したじょ。 #なんか自分がPerlいじりだしたころを思い出すんだよな、このスレ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/235
236: 無謀者 [sage] 02/01/25 19:29 ID:??? 先の鯖でどうしても動かないのですが、ご協力いただいた方へのお礼も含めて とりあえずソースだけでもウプして晒してみます。 コメントだらけの汚いソースですが2週間前にCGIに手をつけた素人という事で 見逃してください・・・・ ttp://cgitest.s7.xrea.com/cart.txt まだエラー処理とかは全然してません。とりあえず動いたというレベルです。 今他の鯖の垢申請中なので動けばまたウプします。 ちなみに自作自演はしてません。てかこんな自作自演できるくらいなこんな苦労しなくていいのに・・・・・(w http://medaka.5ch.io/test/read.cgi/php/1010660032/236
237: 名無しさん@お腹いっぱい。 [sage] 02/01/25 21:11 ID:??? さまになってきたジャン。 なんかスゲー懐かしい感じだyo http://medaka.5ch.io/test/read.cgi/php/1010660032/237
238: 名無しさん@お腹いっぱい。 [sage] 02/01/25 23:43 ID:??? たいしたもんです。感心しました。 http://medaka.5ch.io/test/read.cgi/php/1010660032/238
239: 無謀者 [sage] 02/01/26 00:38 ID:??? 文字コードEUCで送ったら動きました ttp://cgitest.s7.xrea.com/cgi-bin/shop4.htm ただやっぱりブラウザで頻繁に文字化けするし、sendmailで送られる データはバヶバケなんですよね はてさて、何にあわせるのが一番楽なのか・・・・ EUC統一がよさそうなんですが、そうするとブラウザが頻繁にエンコードミスるようなんですが うちのIEのせいでしょうか?それともやっぱりブラウザ出力部はS-JISにしといたほうがいいですか? http://medaka.5ch.io/test/read.cgi/php/1010660032/239
240: 名無しさん@お腹いっぱい。 [sage] 02/01/26 01:11 ID:??? >>239 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> だからじゃないの? http://medaka.5ch.io/test/read.cgi/php/1010660032/240
241: 名無しさん@お腹いっぱい。 [sage] 02/01/26 01:18 ID:??? 少し休め。 CGIが吐き出すHTML、<html>〜<head>〜</head>〜</html>が丸々抜けてんぞ。 shop4.htmはMETAの指定がShift_JISなのにファイル自体はEUC-JPだしな。 よくやったよ。フィニッシュに向けて、まずは寝れ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/241
242: 名無しさん@お腹いっぱい。 [sage] 02/01/26 01:28 ID:??? 正直、ここまでたどり着くとは思わなかった。 http://medaka.5ch.io/test/read.cgi/php/1010660032/242
243: 名無しさん@お腹いっぱい。 [] 02/01/26 10:31 ID:8XQYuO1B ☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < >>1 ねぇねぇまだなの?早く早く〜 \_/⊂ ⊂_ ) \_____________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | 長野りんご. |/ http://medaka.5ch.io/test/read.cgi/php/1010660032/243
244: [] 02/01/26 13:29 ID:cJzc6DfB おおー、よくやったなー。お見事。 ちゃんとサブルーチンに分けてあるし。 見やすいし。 別に汚いソースじゃないじゃん。いいんじゃないの? http://medaka.5ch.io/test/read.cgi/php/1010660032/244
245: 244 [] 02/01/26 13:49 ID:8S+CJ+jU >sub sub_add{ > $ctime=time();#クッキーID作成用要素(時間) > $cid=$$+$ctime;#クッキー用ID 厳密には、クッキー用のIDが足し算だとイカンと思うが・・。 プロセスIDは一回転して戻ってくるから。 Windows だと、プロセスIDはランダムに割り当てられるし。 http://medaka.5ch.io/test/read.cgi/php/1010660032/245
246: 無謀者 [sage] 02/01/26 15:20 ID:??? お褒めの言葉ありがたい限りです。ホントここに来て見てよかったですありがとうございます。 で、文字コードなんですが・・・ 一般的にはスクリプト自体は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秒以内に$$が重複する可能性は無いと思いまして・・・ アクセス数の極端に多い(同時に買物をスタートする可能性が高い)場合は問題になりそうですが・・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/246
247: 名無しさん@お腹いっぱい。 [sage] 02/01/26 15:43 ID:??? >>246 内部でEUC処理するなら、出力もEUCで良いんじゃないの。 METAタグと、出力ヘッダの両方でEUCに指定した方がいいよ。 あと、メール本文はJIS出力でいいけど subjectはそれだけじゃダメでちゅ。バケまちゅ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/247
248: 244 [] 02/01/26 15:50 ID:8S+CJ+jU プロセスIDは、65535 までいくよ。 + って、文字列くっつけるんだっけ? 忘れちゃった。 $cid = "$ctime$$"; とかにしとく方がいいかと思ったんだけど。 あとcgi なら、同時アクセスでも、別のプロセスを立ち上げるから、 同時に買い物をスタートされても平気。 http://medaka.5ch.io/test/read.cgi/php/1010660032/248
249: 名無しさん@お腹いっぱい。 [ ] 02/01/26 16:10 ID:??? お!キレイにかけてるじゃん 俺のスクリプトよりもキレイだぞ; しかしCGI.pm使ってないの見るの久しぶりなんでなんとも懐かしいにおいがする のう。。。 http://medaka.5ch.io/test/read.cgi/php/1010660032/249
250: 無謀者 [sage] 02/01/26 16:12 ID:??? あ、そうか・・・・数字の足し算だと確かに重複の可能性がありますね・・・ 修正させてもらいます。 で、やっぱりメールの本文の文字化けが解消しない・・・・ スクリプトとHTML出力はEUCで統一したんですが。 @sendml=メールの本文; &jcode'convert(*sendml, 'jis'); じゃダメなんですかね? @sendmlはファイルから読み出して格納してます。 ファイル自体は開いて見るとeucになってるみたいなんですが。 http://medaka.5ch.io/test/read.cgi/php/1010660032/250
251: 名無しさん@お腹いっぱい。 [sage] 02/01/26 16:22 ID:??? ソースよく見てないんだけど、 @sendmlってことは、配列なんでしょ。 jcodeなら各要素ごとにやらなだめでしょ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/251
252: 無謀者 [sage] 02/01/26 16:31 ID:??? なるほど・・・だとすればファイルに書き込む段階で各要素(変数) をjisでコンバートして最後に一気に読み込んで送信すれば良いんですかね? http://medaka.5ch.io/test/read.cgi/php/1010660032/252
253: 名無しさん@お腹いっぱい。 [sage] 02/01/26 16:35 ID:??? readparseが見当たらないが、ブラウザから受け取ったデータの汚染チェックはしているかな? たとえばcookieに予想していない文字列突っ込まれたときとか http://medaka.5ch.io/test/read.cgi/php/1010660032/253
254: 無謀者 [sage] 02/01/26 16:44 ID:??? メールの文字化けの件、ほぼ解決しました。ご指導いただいた方ありがとうございました。 >>253 ReadParseってフォームからのデータの取得にしか使ってないんですが、 他にも何か使い方があるんでしょうか?なんやら重要そうな内容みたいですが・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/254
255: 名無しさん@お腹いっぱい。 [sage] 02/01/26 17:06 ID:??? ソース見たんですが、ReadParseのあと フォーム要素のハッシュに対してもjcodeで一括変換しようとしてるでしょ。 テストしてうまく行ってるのかもしれないけど、 jcodeは効いてないんじゃないかな。 http://medaka.5ch.io/test/read.cgi/php/1010660032/255
256: 名無しさん@お腹いっぱい。 [sage] 02/01/26 17:07 ID:??? 例えばcookieに"../xxxx%00"とか仕込まれて、汚染チェックをしていないと cartファイルが../xxxxになってしまう。 ブラウザから渡されたデータは全て信用できないものと仮定して汚染チェックを行わなければいけない。 それをReadParseの中でやっているのなら問題はないが、汎用ルーチンのようなのでやっていない可能性大。 http://medaka.5ch.io/test/read.cgi/php/1010660032/256
257: 241 [sage] 02/01/26 22:45 ID:??? お、直ってんジャン、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統一したそうなんで } とかのほうがベターだろう。(生書きだから検証してないけど) http://medaka.5ch.io/test/read.cgi/php/1010660032/257
258: 無謀者 [sage] 02/01/26 23:14 ID:??? いろいろありがとうございます。shop.cgiに関しては少しずつ煮詰めていきたいと思います。 さて、これを始めるきっかけにもなった商品用ページ作成用CGIの作成に取り掛かろうと 思ってるのですが、その方法についてお知恵拝借いたしたく。 作りたい商品ページの形式としては今ウプしてあるようなかたちです。 画像ファイルのアップロード等勉強しなくちゃいけないことは山ほどあるのですが、手順として どういうものがあるのか。 今考えてるのは、テーブル一個分の項目(1商品分)を一行としたdatファイルに保存しておいて それにタグを挿入してHTMLファイルを作るというものです。新規商品を追加する時や削除 する時はそのdatファイルを呼び出して編集・削除・追加を行いHTMLファイルを丸々上書きという 方法です。HTMLファイルを直接いじるのはタグなどが邪魔して非常にめんどくさそうなので、 HTMLファイルをいじるのではなく、datファイルを編集してそのたびにHTMLを書き直すほうが 楽かなぁと思ったので・・・・ HTMLを作らずにdatファイルからcgiで表示も考えたのですが、鯖の負荷等考えるとHTML生成しちゃった 方が良い気もしたので。 あとページごとのデザイン等の一括変更とかの機能にはCSS使うしかないですかね・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/258
259: 名無しさん@お腹いっぱい。 [sage] 02/01/27 00:03 ID:??? 編集、削除が出来る掲示板で、管理者以外カキコ禁止にすれば、あと一ひねりだろう。 画像は専用ディレクトリを作って、ファイルリストをgetして、 BBSの書き込みフォームのページかなんかにWidth/height指定してfilenameと 画像をサムネイル表示。 書き込みフォーム自体にはプルダウンメニュー(select/option)か何かを動的に 生成して、書き込み情報に加えるとかすればOK 画像ウプは説明が長くなるから、まあ「form multipart」あたりでグーグル逝け。 デザイン一括変更は雛型式(デザインを外部ファイルで指定)のBBSを (拾ってく|作)ればいいんでないかい? http://medaka.5ch.io/test/read.cgi/php/1010660032/259
260: 無謀者 [sage] 02/01/27 01:50 ID:??? なるほど、掲示板を応用すれば良いんですね。商品ページは複数ページ作りたいんで、 ・多板作成が可能 ・板毎のデザイン変更が可能 ・書き込み内容編集が可能 ・画像アップロード可 って掲示板探してそれを参考にしてみよう。 ・・・・って思って、画像以外は2ch型改造のAhhanBBSがよさそう なんでソース見てみたら複雑すぎてわけわかめ(鬱 もうちょっと簡単そうなの探してみよう。 というわけでCGI INDEXとCGI ZOOで旅してきます。 http://medaka.5ch.io/test/read.cgi/php/1010660032/260
261: sage [sage] 02/01/28 15:00 ID:??? ttp://cgitest.s7.xrea.com/cart.txt これみれなくなってるぞ?! けした? おれもソースみてみたいからみせてくれ>>1 なんかだいぶできてきたみたいだね! http://medaka.5ch.io/test/read.cgi/php/1010660032/261
262: 無謀者 [sage] 02/01/28 17:13 ID:??? >>261 スイマセン消してました。 またアップしますのでしばらくお待ちください。 http://medaka.5ch.io/test/read.cgi/php/1010660032/262
263: sage [sage] 02/01/29 11:00 ID:??? うぃ!たのしみにまっとるよ! http://medaka.5ch.io/test/read.cgi/php/1010660032/263
264: 名無しさん@お腹いっぱい。 [age] 02/01/30 16:55 ID:??? あげ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/264
265: 無謀者 [sage] 02/01/30 20:21 ID:??? ちょっと仕事がつまり気味で、停滞中・・・・・ >>263さんスンマソンしばらくお待ちください http://medaka.5ch.io/test/read.cgi/php/1010660032/265
266: 名無しさん@お腹いっぱい。 [ ] 02/02/02 18:51 ID:??? 1よ、もうこのスレは放置かい? http://medaka.5ch.io/test/read.cgi/php/1010660032/266
267: 無謀者 [sage] 02/02/02 20:06 ID:??? スイマセン、ちょっと仕事が立て込んでて・・・・ 尻取りスレにでも使っといてください http://medaka.5ch.io/test/read.cgi/php/1010660032/267
268: うぇw [] 02/02/03 01:02 ID: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 http://medaka.5ch.io/test/read.cgi/php/1010660032/268
269: 名無しさん@お腹いっぱい。 [sage] 02/02/03 13:52 ID:??? 良くココまで来た・・・。 http://medaka.5ch.io/test/read.cgi/php/1010660032/269
270: 傍観者 [sage:復帰おまちしてますぞ] 02/02/03 16:59 ID:??? ちと進行が遅くなってるのが残念だけど、無謀者氏とレベルが 近しいので、実用的な読み物としてヲチしてます …ま、目先の仕事優先は仕方なし…かな? http://medaka.5ch.io/test/read.cgi/php/1010660032/270
271: 名無しさん@お腹いっぱい。 [sage] 02/02/03 20:00 ID:??? >>267 あんたさ、折角なんとかマトナなスレになりつつあったのに、 尻取りスレにでも、は無いだろう。 一体どういう神経してるんだよ。 それじゃ、始めるぞ。 「パール」 http://medaka.5ch.io/test/read.cgi/php/1010660032/271
272: 名無しさん@お腹いっぱい。 [ ] 02/02/03 20:58 ID:??? >271 まったくだプンプン。 早く帰ってくるのみんな待ってるのに。 「ルビー」 http://medaka.5ch.io/test/read.cgi/php/1010660032/272
273: 名無しさん@お腹いっぱい。 [sage] 02/02/03 21:01 ID:??? おいおい、本当に>>1は呆れた奴だなー 「ビール」 http://medaka.5ch.io/test/read.cgi/php/1010660032/273
274: 名無しさん@お腹いっぱい。 [sage] 02/02/03 22:54 ID:??? 「ルビー」(´Д`;) http://medaka.5ch.io/test/read.cgi/php/1010660032/274
275: 名無しさん@お腹いっぱい。 [sage ] 02/02/03 23:07 ID:??? >274 しりとり侍かよ! フォッフォ 「ビール」 http://medaka.5ch.io/test/read.cgi/php/1010660032/275
276: 名無しさん@お腹いっぱい。 [sage] 02/02/04 08:31 ID:??? 仕事が忙しいのは仕方ないとして、 ttp://cgitest.s7.xrea.com/cart.txt これの再アップだけでもして欲しい・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/276
277: 名無しさん@お腹いっぱい。 [ ] 02/02/04 16:55 ID:??? なぁ、>>1よ 俺も君と同じようにPerl馬鹿だった。 でもさっきPHPの本を軽く読んでみた。 馬鹿にならんくらい簡単だぞ、これくらいできるようになった君ならあっという間に 完成できるかもしれない。 PHP4をお勧めするよ、マジで。 こんなにセッション管理が楽だとは思わなかったよ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/277
278: 無謀者 [sage] 02/02/04 18:52 ID:??? >>276 お待たせしました。ウプ完了です。 最初のに送料計算用のスクリプトを加えようとしてるんですが、今のところ機能 してません。しばらくいじってなかったらすっかり忘れてるし(w >>271-275 ご協力ありがとうございます。てか、一瞬で終わってるな・・・・ >277 PHPは最初の方でも勧めてくれた方がいたような・・・・ とりあえず現状最もデファクトスタンダードに近いと思われるという事で Perlから始めて見ました。まぁ、こんなタラタラやってるうちにPHP全盛って事に なったりは・・・・しませんよね? というわけでまたボチボチ続きを始めますのでよろしくお願いします・・・(何をだ?) http://medaka.5ch.io/test/read.cgi/php/1010660032/278
279: 無謀者 [sage] 02/02/04 22:26 ID:??? 送料の自動計算と「〜円以上送料無料」のの機能を追加してみました。 未だに微妙に文字化けするのがチョイ鬱・・・・ 文字コードをフォームのHTMLも含めて見直してみます。 http://medaka.5ch.io/test/read.cgi/php/1010660032/279
280: 名無しさん@お腹いっぱい。 [age] 02/02/04 23:06 ID:??? ほう、ちゃんと計算できてんじゃん http://medaka.5ch.io/test/read.cgi/php/1010660032/280
281: 名無しさん@お腹いっぱい。 [sage] 02/02/04 23:44 ID:??? >>279 HTTPヘッダのところでも指定した方が良いよ http://medaka.5ch.io/test/read.cgi/php/1010660032/281
282: 名無しさん@お腹いっぱい。 [sage] 02/02/05 13:50 ID:??? >278 そうだね、現状ではサーバを製作者側で指定できない限りはPHPはまだ使えないね。 シカーシPHPも4になってほぼ機能的に出尽くした感があるし、ぼつぼつ標準設置の レン鯖増えてきたし、WebアプリののRADとして、Perlとはすみわけしながら普及 しそうな勢いがあるな。 ところで設置URIは、上記と同じ ttp://cgitest.s7.xrea.com/cgi-bin/shop4.htm でいいのかえ?最終確認画面で文字化けしちょるようだが http://medaka.5ch.io/test/read.cgi/php/1010660032/282
283: 名無しさん@お腹いっぱい。 [ ] 02/02/05 15:21 ID:??? なかなかのデザインだのう。 はよ完成して動くことを祈る。 http://medaka.5ch.io/test/read.cgi/php/1010660032/283
284: 名無しさん@お腹いっぱい。 [sage] 02/02/05 17:43 ID:??? Mac/iCab2.71で見ると、購入ボタンの次の画面でunknown Content-Type: が出よりますな。 http://medaka.5ch.io/test/read.cgi/php/1010660032/284
285: 無謀者 [age] 02/02/05 22:33 ID:??? CGI中のHTMLヘッダで文字コードを指定する場合って、たとえばeucにしたいのなら "content-type: text/html;charset=EUC-JP\n\n"; で良いんでしょうか?ここで言われたので、ぐぐるで検索掛けてみたら 上のような書き方がちらほらあったので。ただ「文字コード、charset」とかで検索すると ほとんどが<META>タグの記述方法になってるので、いまいちこれでいいのが自信が無い・・・ いまさらながら気が付いたんですが、どの本読んでもhtmlヘッダ に関しては "content-type: text/html\n\n" を書けとしか書いてないんですよね。散々文字コードの事は書いてあってjcode使って コンバートしろとかは書いてあるのに・・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/285
286: 無謀者 [sage] 02/02/05 22:34 ID:??? スイマセンsage忘れ・・ 間に合いませんでした。 http://medaka.5ch.io/test/read.cgi/php/1010660032/286
287: 名無しさん@お腹いっぱい。 [sage] 02/02/05 23:04 ID:??? >>285 あってる。 ただ、;のあとに半角スペース入れた方がいいのかな 意味あるのかは知らないけど、みんなやってるということで print "Content-type: text/html; charset=euc-jp\n\n"; でもmetaにも書いてくれると親切だ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/287
288: 無謀者 [sage] 02/02/05 23:15 ID:??? ありがとうございます。ヘッダとMETA両方にしつこいくらいに書きます(w しかし、なんで入門書にこれが書いて無いんですかね? 文字コードの自動判定なんてまともに出来ないヴァカブラウザがゴロゴロしていて 純粋なHTMLはS-JISで書くのが一般的(?)なのに・・・ いくらフォームデータエンコードしても、CGI内のHTML表示部分で ちゃんと指定しとかなきゃ行ったり来たりしてる間にブラウザも迷うっちゅねん! と思うのですが・・・・ ところで、皆さんはCGI内のHTML部にMETAとか<HTML></HTML>書くときに 何処に書いたらいいかわからなくなる事無いですか? 一箇所で完結すれば良いんですがHTML出力を前半と後半をサブルーチンで 分けたり、使いまわしたりする時に、</html>は何処に入れるんだ? とかここは<html>はいるのか?みたいに http://medaka.5ch.io/test/read.cgi/php/1010660032/288
289: 名無しさん@お腹いっぱい。 [sage] 02/02/06 00:26 ID:??? >>288 そうだよ両方書くんでちゅ。 それが当たり前でちゅ。 ていうかここで2回も書いたんでちゅ。 ヘッダ出力とフッタ(は要らんかもしれんが)を サブルーチンとかモジュール化したら? CGI.pmでもヘッダ出力できるけど、 日本語の場合、文字コードの指定が必要だから ジブソで用意しました。 http://medaka.5ch.io/test/read.cgi/php/1010660032/289
290: 名無しさん@お腹いっぱい。 [sage] 02/02/06 00:33 ID:??? >>289 うろ覚えだけど、最近の CGI.pmなら 文字コードやContent-Typeとかも 指定できた気がする http://medaka.5ch.io/test/read.cgi/php/1010660032/290
291: sage [sage] 02/02/06 10:33 ID:??? えらいぞ!短期間でよくここまで! 後は289のいうとうりモジュール化することを進めるよ! あとでつかいまわしができるよ! http://medaka.5ch.io/test/read.cgi/php/1010660032/291
292: 名無しさん@お腹いっぱい。 [sage] 02/02/06 10:48 ID:??? CGI.pmでヘッダ出力できるよ。 #!/usr/bin/perl use CGI; $query = new CGI; print $query->header(-charset=>'Shift_JIS'); おいらは最初にヘッダを出力しちゃってそれぞれの出力終了時にフッダの サブルーチンに飛ばしてる。 http://medaka.5ch.io/test/read.cgi/php/1010660032/292
293: 無謀者 [sage] 02/02/06 16:55 ID:??? >>289 >ていうかここで2回も書いたんでちゅ。 そうでしたね。いや、読んではいたんですが、どうしても>>285の方法が はっきり自信持てなかったもんで・・・・ >CGI.pm その辺の事は今後順次勉強していきたいと思います。とりあえずはできるだけ 自分で書くというのも勉強になりますので・・・ >モジュール化 プログラム経験が無いのでモジュールと言うものの概念がいまいちワカランのですが 「良く使うものをサブルーチンにして、それを別ファイルに纏めておく」と言うことで 良いんでしょうか? >>291 ほんとにここでスレ立ててよかったです。本とかWEB情報だけじゃこの短期間ではとてもじゃ 無いけどここまで出来なかったと思います。 調子に乗って「ド素人のド素人のためのCGI入門」のHPでも立ち上げようかな・・とか思ったりしてます(w ここまでやってきて思ったのは「初心者用」とか「入門」といううたい文句の本やWEBの説明も 所詮(失礼ですが)プログラマーの方が書いてるので、「ド素人が如何に無知か」という事がいまいち 理解されて無いようなので・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/293
294: 名無しさん@お腹いっぱい。 [ ] 02/02/06 17:06 ID:??? >>292 print $query->end_html これで終れる http://medaka.5ch.io/test/read.cgi/php/1010660032/294
295: 259 [sage] 02/02/06 20:31 ID:??? >「良く使うものをサブルーチンにして、それを別ファイルに纏めておく」 >と言うことで良いんでしょうか? サブルーチンをファイルにしてメインからrequireするあたりがモジュール化の第一歩。 そこから名前空間の概念覚えて、別ファイルのほうpackage宣言してみて、って 少しづつ覚えていけばいいと思うよ。(その先がまだ長いんだけれど‥‥) いきなり.pmモジュールなんていうとワケわかんなくなるからね。 で、商品ページの方はどうよ? http://medaka.5ch.io/test/read.cgi/php/1010660032/295
296: 無謀者 [sage] 02/02/06 21:21 ID:??? >>295 なるほど、そんな単純なものではなさそうですね>モジュール >商品ページ いかんせん仕事の都合で間があいちゃったんで全然出来てません。設計書を作ってる 最中だったんですが、今読み返してみるとようワカラン(w もう一度1からやり直しです。最初はフォームからHTML生成しちゃおうと思ったんですが、 在庫数をカウントしたいので、cgiからdatファイルから読み出してHTML表示させるしか無さそう・・・ HTMLにHiddenで入れようとも思ったのですが、商品が減る度にHTML書き直させなきゃならなそうだし。 ただ、全てをCGIにやらせると鯖の負荷も高くなりますよね?どうしたものか・・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/296
297: 259 [sage] 02/02/07 15:02 ID:??? >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区切りが 一番いいだろう。 http://medaka.5ch.io/test/read.cgi/php/1010660032/297
298: 無謀者 [] 02/02/08 21:13 ID:VrHm3ZfY えーとパスワード認証してる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=とか?) ような感じになるんじゃないか?というところまではたどり着いたんですが・・・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/298
299: 名無しさん@お腹いっぱい。 [sage] 02/02/09 09:04 ID:??? ハァ? メニューに飛ばす? なんか意味わかんねぇ http://medaka.5ch.io/test/read.cgi/php/1010660032/299
300: 無謀者 [sage] 02/02/09 11:30 ID:??? すいません。書き方悪かったですね・・・・流れとしては フォーム(HTML)からパスワード入力>menu画面(menu.cgi)>データ入力 >データ入力後refreshでもう一度menu画面に戻る。 てのをやりたいんですが、戻り先をmenu.cgiにするのにパスワード を渡す方法をがわからないんです。そもそもFORMのinputで渡すような項目を Formを使わずに渡す方法ってどんなのがあるんでしょう? http://medaka.5ch.io/test/read.cgi/php/1010660032/300
301: 名無しさん@お腹いっぱい。 [ ] 02/02/09 13:35 ID:??? >>300 方法としてアドレスに埋め込む(リフレッシュ先のアドレスに仕込む) hoge.com/menu.cgi?id=hoge&pass=hoge HIDDENを使う データ入力の度に <INPUT HIDDEN NAME=id VALUE=hoge><INPUT HIDDEN NAME=pass VALUE=hoge> これを必ず仕込んでおく なお、どちらの方法でもmenu画面で逐次パラメータを取得して次に渡す必要がある 的外れの返答かな? http://medaka.5ch.io/test/read.cgi/php/1010660032/301
302: 名無しさん@お腹いっぱい。 [ ] 02/02/09 13:36 ID:??? 自己訂正 当然ながらHIDDENを使うときはFORMタグを必要としますからね。 http://medaka.5ch.io/test/read.cgi/php/1010660032/302
303: 無謀者 [sage] 02/02/09 13:50 ID:??? ありがとうございます。その辺を知りたかったんです。 つまり、通常フォームから <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 としておけば大丈夫って事ですよね? とりあえずやってみます。 http://medaka.5ch.io/test/read.cgi/php/1010660032/303
304: 名無しさん@お腹いっぱい。 [sage] 02/02/09 14:13 ID:??? パラメータは&で繋ぐ http://medaka.5ch.io/test/read.cgi/php/1010660032/304
305: 名無しさん@お腹いっぱい。 [] 02/02/09 14:14 ID:2AUefyPU >>303 そのとおり。 あと老婆心ながらHTMLのタグを書くときに""(クオーテーション)はいらない。 ""がいるのはスペースが含まれる場合のみ。 ""を省略するだけで結構処理スピードがあがるよ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/305
306: 無謀者 [sage] 02/02/09 14:26 ID:??? ありがとうございました>教えてくださった皆様・ うまくいきました。 ちなみにこれと同じ方法を使ってFORM内の Submitボタンを画像とかに置き換える事は可能なんでしょうか? ボタンの変わりに画像貼ってそれのリンク先をmenu.cgi?neme=submit ってやるとsubmitボタンとして動作します? http://medaka.5ch.io/test/read.cgi/php/1010660032/306
307: 名無しさん@お腹いっぱい。 [sage] 02/02/09 14:58 ID:??? >>306 <input>タグでできる。 http://medaka.5ch.io/test/read.cgi/php/1010660032/307
308: 名無しさん@お腹いっぱい。 [sage] 02/02/09 18:56 ID:??? http://tohoho.wakusei.ne.jp/html/input.htm http://medaka.5ch.io/test/read.cgi/php/1010660032/308
309: 無謀者 [sage] 02/02/09 19:23 ID:??? 皆様いつもありがとうございます。 商品ページ作成部分が若干出来たのでウプしました。 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=”作成時につけたファイル名” できるはずです。 http://medaka.5ch.io/test/read.cgi/php/1010660032/309
310: 無謀者 [sage] 02/02/09 20:31 ID:??? あ、今現在新規商品作成時に指定したオプション項目は反映されません。 「,」で区切って入力してもらって、そこからセレクトボックス生成させる のを今作ってます。 http://medaka.5ch.io/test/read.cgi/php/1010660032/310
311: 名無しさん@お腹いっぱい。 [sage] 02/02/10 16:31 ID:??? うーん、せっかく上手くいっているところに水を差すようだが、 URIでパスワード指定やっちゃうと、認証もクソもないぜ。 URIがバレた時点でソッコーで改ざんされっぞ。 googleツールバーの高機能版では閲覧中のURI自動通知されちまうしな。 「登録しました」のページに「メニューに戻る」ボタンをつけて、 hidden渡しじゃだめなんかい? どうしてもrefreshでやりたいなら、refererとってCGIと認証ページからの アクセスのみ許可するとかやってやんねーと。 http://medaka.5ch.io/test/read.cgi/php/1010660032/311
312: 無謀者 [sage] 02/02/10 20:00 ID:??? >>311 確かにそれは思ったんですけど、一応pass入れたあとの管理者用画面だから 大丈夫かな・・・と考えてたんですが・・・・・ hiddenで入れてもソース見ればそのままpassが見えちゃうわけですし・・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/312
313: 311 [sage] 02/02/10 23:43 ID:??? >>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 以外からのアクセスは弾いちまえばいいんだよ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/313
314: 無謀者 [sage] 02/02/11 02:03 ID:??? ちょっと機能追加 登録済み商品の修正が出来るようになりました。 >商品登録テストしてくれて人 今のところ、文字置換やエラー処理全然いれて無いので、コメントのところで 改行入れるたり、新規ページ作成時に、ファイル名入れないと、データボロボロになります(汗 明日(今日か・・)必要フォーム項目未記入時のエラー処理と、改行その他、文字列の 置換処理を出来るようにします。 >>311=313 なるほど・・・・と入っても、いまいち管理用画面でのその辺のセキュリティの必要性が 理解できて無いんですが・・・・・ どっちにrefererとって弾く事だけはやっておいた方がよさそうですね。 http://medaka.5ch.io/test/read.cgi/php/1010660032/314
315: 無謀者 [sage] 02/02/11 02:16 ID:??? ところで、今回、新規データ入力時に @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; でうまくいかなかったです。書く位置がまずかったんでしょうか? http://medaka.5ch.io/test/read.cgi/php/1010660032/315
316: 297(=259) [sage] 02/02/11 03:41 ID:??? $noは数値だよね? なら、 while(<IN>){ my @cell = split/\t/; $_ = $line if $cell[0] == $no; print TMP; } で数値評価したらどうかな? なんとなくだけど、$cell[0]か$noに空白とか含まれてそうだったんで。 http://medaka.5ch.io/test/read.cgi/php/1010660032/316
317: 無謀者 [sage] 02/02/11 18:26 ID:??? >>316 うまくいきました。ありがとうございます<IN> で変数が$_に入ってるってのがすっかり頭から飛んでました・・ ところで、正規表現なんですが、たとえば$priceに半角数字以外(「,」とか)が入ってた場合に エラーを表示させるのって if ($price eq ~/\D/){ print "価格はカンマ無しの半角数字で入力してください"; } で良いんですよね? http://medaka.5ch.io/test/read.cgi/php/1010660032/317
318: 名無しさん@お腹いっぱい。 [] 02/02/11 22:44 ID:+mlK3wYT >>317 全然違う。検索は $scalor =~ /$hoge/; だぞ。 if ($price =~ /\D/) { print "価格はカンマ無しの半角数字で入力してください"; } まあがんばれ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/318
319: 無謀者 [sage] 02/02/11 23:18 ID:??? ↑の通りに書いてみたら,半角数字も弾かれちゃいました・・・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/319
320: 名無しさん@お腹いっぱい。 [sage] 02/02/11 23:24 ID:??? >319 \Dは数字以外じゃない? http://tohoho.wakusei.ne.jp/wwwperl1.htm#Expr http://medaka.5ch.io/test/read.cgi/php/1010660032/320
321: 無謀者 [sage] 02/02/11 23:28 ID:??? そうだと思うんですが・・・・ だから $price=~/\D/; だと「$priceに数字以外のものが含まれていれば」 って事になりますよね? http://medaka.5ch.io/test/read.cgi/php/1010660032/321
322: 名無しさん@お腹いっぱい。 [sage] 02/02/11 23:32 ID:??? だから半角数字だけならエラーにならないんじゃ? http://medaka.5ch.io/test/read.cgi/php/1010660032/322
323: 無謀者 [sage] 02/02/11 23:34 ID:??? のはずなんですが・・・・弾かれちゃうんですよ・・・ もう一度ソース見直してみます。 http://medaka.5ch.io/test/read.cgi/php/1010660032/323
324: 名無しさん@お腹いっぱい。 [ ] 02/02/11 23:35 ID:??? ってかさ、数字以外は取り除けばいいんでない? そっちの方がユーザーライクだと思うが。 $price =~ tr/0-9//cd; http://medaka.5ch.io/test/read.cgi/php/1010660032/324
325: 名無しさん@お腹いっぱい。 [sage] 02/02/11 23:38 ID:??? >>319 スペースも渡されてるとか http://medaka.5ch.io/test/read.cgi/php/1010660032/325
326: 無謀者 [sage] 02/02/11 23:40 ID:??? それも考えたんですが、全角数字入れられた時の対応も一緒に やっちゃおうと思ったので。 http://medaka.5ch.io/test/read.cgi/php/1010660032/326
327: 無謀者 [sage] 02/02/11 23:44 ID:??? >325 そう思って [\D\s\t]とかもやってみたんですが・・・ダメ http://medaka.5ch.io/test/read.cgi/php/1010660032/327
328: 名無しさん@お腹いっぱい。 [sage] 02/02/11 23:48 ID:??? 適当なファイルに書き出して見てみたら? CGI::Carpとかでハンドルしてるなら warnや dieで見てもいいけど。 http://medaka.5ch.io/test/read.cgi/php/1010660032/328
329: 名無しさん@お腹いっぱい。 [] 02/02/11 23:52 ID:pHWWFybw もうめんどくせえから、全部最初からやり直せ!! http://medaka.5ch.io/test/read.cgi/php/1010660032/329
330: 297 [sage] 02/02/11 23:52 ID:??? そうか、上手く逝ったか。漏れこのスレ、検証してないやつばっか(297とか^^;) 書いてるから、ちょっと心配してるんだな。 > で変数が$_に入ってるってのがすっかり頭から飛んでました・・ 慣れると便利なんだよ、デフォルト変数$_。 はまると怖いけどね。 で、正規表現検索は相手が文字列でも if ($price =~ /\D/)・・・ だよ。 http://medaka.5ch.io/test/read.cgi/php/1010660032/330
331: 無謀者 [sage] 02/02/11 23:52 ID:??? えっと、上記の処理より前に if ($price eq ""){ print"error" } ・ ・ #その他変数の未記入チェック ・ ・ ってやってから上の処理やってるんですけど、その辺は関係あります? 一応、未記入のエラーはちゃんと表示されます。 で、上記の検索を書くと、数値だろうがなんだろうが弾かれちゃう・・・ http://medaka.5ch.io/test/read.cgi/php/1010660032/331
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 186 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s