スクリプト集   (戻る)      作者からの連絡    (スクリプトの追加・更新記録はここ)

※どのサンプルも書き込みや操作は自由です。 をクリックしてご試用ください。

 スクリプト 
見たいものをクリックする
機 能 説 明    利用方法ページへ サンプル
(2)のCGIスクリプト
(3)のCGIスクリプト
(1)ここをクリックするとHTMLでの画面がでます
(2)こっちをクリックするとCGIでの画面がでます

(3)プログラムで処理を作るとこうなります...3つの画面をランダムに表示します...これがPerlCGIの始まりです
環境変数について
注.ブラウザのソース表示でスクリプトが見れます
サーバーから環境変数という形でいくつかのデータを受け取ることができます。しかしサーバーにより環境変数に値を入れないことがありますので、確認する場合はこんな感じのスクリプトで見ることができるでしょう。もしここで使用している環境変数が利用できない場合はアクセスログ関係は使えないかもしれません。

ファイルのリスト表示 Perlのコマンドを使ってファイルの使用状況を表示します。(ファイルテスト演算子を使った簡単なものですがファイル操作に関することなのでスクリプトは公開しません・・・私の公開スクリプトはファイル名も実名でそのまま見せています、私のファイルにいたずらされても我慢しますが絶対にサーバー内の他人のものにいたずらしないで下さい)

FAQまでいかないけどQ&A ディレクトリの見方やファイルの作り方等をQ&Aにしました。
CGI(Perl)の書き方の注意 これはソースではありません。自分用にPerl特有の書き方など間違い易いものをまとめました。ベスト1は変数の表示です。”と’と.の使い方です。2位はif文の比較式です。例えば==とeqなど。3位は繰り返し文です。いろいろなやり方があるので迷います、私はfor文を使うことが多いです。最後に漢字コードの問題です、フォームからの変換はeucでCGIでのフォームからはsjisというように異なります。わたしの処理でもコード変換や改行コードの処理でおかしく思えるところがあるかもしれませんがマネしないように。
フォームデコード フォームから入力した名前を漢字コードを変換して表示するというデコードだけのCGIです。SJIS,EUC,JISそれぞれで変換後表示しました、WINDOWS95はSJISですがサーバーはEUCが主体です。またメールはJISです、このようにこれら3つのコードの使い分けが重要です。

フォームデコードとメール(1) フォームから入力した名前等を漢字コードを変換して自分宛に送る(メール機能)、これはフォームデコードとメールの一番簡単な組み合わせの例ですが送信ボタンをクリックするとフォーム入力した内容をダイレクトに送信するので実用的ではありません、そのつもりで見て下さい。

メール(2)の確認表示処理メール送信処理 フォームから入力した名前等を一度ブラウザに確認表示し、漢字コードを変換して自分宛に送る。スクリプトは処理別に2本に分け、hiddenパラメータでデータを渡しています。

フォームデコードとメール(3) 一連のメール送信を1ソースで処理する(入力−−>表示−−>送信)。このタイプが1ソースで処理する一番簡単な形です、あとはこれを発展させれば様々な処理を付加することができます。

メールで送るメッセージファイルの更新 メールやブラウザで表示したいメッセージをファイルに登録する(簡単なデータ入力パターンです)

メッセージファイルのメール送信 メッセージファイルの内容を入力したメールアドレスに送信します(但しこのCGIでは実際の送信は行いません)

訪問カウントの更新 IMGタグからHTMLを出力する前に訪問カウンタを本日、時間帯別月別等に加算する(ページの一番最初に出力する画像に処理を入れます)。このように画像(GIF.JPEG)を出力する際にも処理をさせることができます。(ここでは区切記号をわかりやすくカンマ,を使いました)
今日の番目の訪問ありがとうございます。

訪問カウントの照会 訪問カウンタファイルから項目別に表示する(ここではカンマ,を使って区切った数値を配列に読み込み各項目名に合わせて表示させました)

トップページの本日カウンタとサンプルカウンタを分けました、サンプルカウンタは、この下の保守で自由に更新して下さい。その結果を右のサンプルで確認することができます。

表紙

サンプル

カウントファイルの保守 訪問カウンタファイルの各項目の値を更新する簡単なファイルメンテナンスのパターンです。(表示−−>処理選択−−>更新)

訪問カウントを付ける(1) SSIを使わずHTMLのページに画像カウントを付ける。カウンタの1つずつに個々のCGIをつける(このため全てのカウンタが表示し終わるのに時間がかかります、また同時にカウントファイルをアクセスするため場合によっては表示しないこともありますのであまり実用的ではありません、ファイルを読むときロックしないように工夫をしてありますがそれが正しい方法なのかわかりません)
訪問カウントを付ける(2) SSIを使わずHTMLのページに画像カウントを付ける。1つのCGIを環境変数を利用してカウンタの各桁の画像を出力する(環境変数を使わず?で変数を渡す方が簡単ですが環境変数を試してみました、やはりこれも全桁表示するのにやや時間がかかります)
新訪問カウント(パラメータ部)
新訪問カウント(カウント部)
訪問カウンタの各項目の記録範囲を任意に設定できる(1番目のレコードにパラメータデータを2番目以降にカウント記録データを入れ各項目の設定を変更しても他に影響のないようにした)スクリプトを2つに分けパラメータ設定部とカウントデータ更新部とした。(これは1つでも可能ですが私のメモ帳がメモリ不足となり1つで作れなかったからです...それにあまり長いとわかりにくいしネ)

新訪問カウントを付ける 新訪問カウントファイルの方式に対応した更新処理(これもIMGタグから起動し処理後画像を出力する)
アクセスログの記録(1) ホームページにアクセスされた時、リンク元、ホスト名、ブラウザ名をログファイルに記録します。起動方法はSSIを使うことができないので、画像を出力するIMGタグでこの処理を呼び出し実行させました。(登録件数を限定しています)
アクセスログの記録(2) ホームページにアクセスされた時、ホスト名別にアクセス件数をファイルに記録します。起動方法はアクセスログの記録(1)と同じです。
アクセスログ表示(1) アクセスログファイルからリンク元、ホスト名、ブラウザ名を読みアクセス数の多い順に並び替え表示します。(月別、日別、時間帯別も表示)

アクセスログ表示(2) アクセスログ表示(1)にログ明細表示を追加しました(次頁、前頁、表示行数や昇降順の変更可能)

アクセスログ表示(3) アクセスログの記録(2)のファイルからホスト名毎の累計数を表示します。アクセスログ表示(2)のパターンと同じですが、表示を件数の降順とホスト名順で変えることができます。

アンケートと更新 フォームで作ったアンケートの出力結果を受け取りファイルの各項目に加算する(単独項目、ラジオボタン、SELECTでの複数回答をそれぞれ該当する配列を見つけ加算しました)

アンケートの照会 アンケートファイルから項目毎の集計値を配列に入れ、それを項目別に表示する              

アンケートの送信 HTMLで作ったアンケートへの入力データを自分宛に送信する(ここのページで使われている実際のアンケートです、スクリプトは答えてくれた人にお見せできるようになっています)

アンケートの送信(2) アンケートの送信CGIのsendmail部分をヒアドキュメントを使わず、1行ずつ個々に出力するパターンです。この方法は送信データがifやforeach等の処理に
よって出力される場合に向いています。

アンケートの送信(3)

返信書込みと表示

アンケートの入力と送信を1つのCGIで作りました。それから、ご意見欄に書き込みがあったらその内容をファイルに書き込むようにしました。そして別の返信書きこみCGIでご意見に対しての返信を書き、見ていただけるようにしました。

画像をランダムに変える
(JPGの場合)
1つの画像を表示ごとに変える(GIF形式)3つの画像をランダムに表示させようとしましたが同時に実行するとランダム値が同一となることが多かったのでちょっと工夫してみました。(最初に表示する女の子の画像も応用です)

女の子とジャンケン 女の子とジャンケンをして勝ったら、すべてをお見せします。何を見せるかはヒミツ(仕組みとしてはランダム命令を使ってあなたが選んだものに対してCGIが勝負します) ** 女の子へのファンメール受付中! **

画像を時間帯別に変える 1つの画像を画面表示ごとに時間帯に応じて変える
クッキーの練習 名前とメールアドレス等をクッキー機能を使いあなたのブラウザに記録します(これは練習です、消すことも保持期間を任意に設定することも可能です)

フレームの練習 1つのスクリプトによってフレーム画面を表示します。このスクリプト自体はお見せしてもつまらないものですが、ブラウザの画面機能を積極的に利用すればスケジュールや掲示板等の表示もおもしろいものができそうです。

ソートの練習(1) ソートキーを3つ使ったデータの並び替えです、今まで1つの項目に対して並び替えをしてきましたが、項目を複数に設定してソートする方法がわかりません。
そこで連想配列を応用してソートの練習を作りました。
どなたかいい方法を知っていましたら教えてください。

ソートの練習(2) ソートの練習(1)のパターンに集計機能を付けてみました(ソートサマリ)。
これも実用的ではありませんが連想配列の応用として見てください。

カレンダー カレンダーを表示します。月移動や指定月表示、祝日名表示のオンオフができます。(ここで使われている指定月の計算方法はオリジナルで素人のやり方ですので、皆さんはどこかにある万年カレンダー計算を見つけて利用してください)

カレンダー(月曜始まり) 月曜日から始まるカレンダーです。曜日の配列は通常、日曜日が0になっています、ここでは月曜日を0とし、日曜日を6に変更して処理しています。
それ以外は、上のカレンダーと同じです。

スケジュール登録(1) スケジュールのみの登録処理です。日別に登録します。(カード形式入力)翌日前日ボタンや指定日での移動ができます。
※日本語変換をすべてカットしたものに置き換えました。(99.8.15)

スケジュール登録(2) 月間のスケジュールをリスト形式に入力画面を出し、確認表示をしてから更新します。
※日本語変換をすべてカットしたものに置き換えました。(99.8.15)

スケジュール登録(3) 月間のスケジュールをリスト形式に表示してから内容を訂正できます。
※日本語変換をすべてカットしたものに置き換えました。(99.8.15)

スケジュール登録(4) カレンダーからスケジュールを日々単位のカード形式や月間単位のリスト形式で内容を確認・訂正できます。
※日本語変換をすべてカットしたものに置き換えました。(99.8.15)

スケジュール登録(5) スケジュール登録(4)のカレンダーを月曜始まりに変えたものです。
スケジュールデータは曜日ではなく、日付でセットされるので曜日が月曜始まりになっても処理の変更はありません。このCGIの変更点は、曜日の表示と文字化け防止にMETAタグを入れたことです。

スケジュール登録(5)

右上:カレンダー
右下:日別スケジュール
左側:月間スケジュール

フレームで画面を3分割してスケジュールの(1)(2)(3)を各画面で操作できるようにしました。右上のカレンダーの画面を中心にして日付をクリックすると下にその日の予定が表示される仕組みになっています。
今のところ1つのクリック操作で1画面しか対応できません、例えば次月をクリックすると3画面が連動して次月を表示するということができません。
良い方法をご存じの方は教えて下さい。尚各スクリプトはパスワードや確認画面を省略した簡易版に修正しただけです。
フレームはHTMLで定義してあります、『名前を付けて保存』でコピー可です。
※日本語変換をすべてカットしたものに置き換えました。(99.8.21)

注文書入力(1) 1つのスクリプトで注文書のフォーム入力、注文内容の確認表示、管理者への注文データ送信を処理します。また同時にご注文者への確認書も送信されます。このスクリプトは本数や送料のチェック等ありません、このまま注文CGIとして使用しないで下さい。プログラムの参考に利用すること(地酒販売の例ですが、ここでの清酒名、画像のコピーは禁止します)
※メール機能は、一部止めてあります。

注文書入力(2)

注文書用商品マスタの作成

注文書入力(1)の商品はスクリプト内で設定したものでしたが、商品データをファイルから読み出して表示させています。
※メール機能は、一部止めてあります。

注文書用商品マスタの作成です、注文書入力の処理をレコード番号(行番号)で処理するため、データの訂正で登録順序つまり表示順序を変更できるようにしました。それ以外は商品マスタの作成(3)と同じです。またここで設定された取扱期間以外は注文書入力画面に表示されないようになっています。

かごを使った注文入力(1) インターネットショッピングで、商品をかごに入れるパターンがありますが、その簡易版です。商品選択画面は、1画面しかありません。
hiddenパラメータを利用したCGIの練習として見てください。
※メール機能は、一部止めてあります。

かごを使った注文入力(2) かごを使った注文入力(1)に対して、機能強化をしました。
(1)商品データは、配列にして変更しやすいようにした。
(2)注文画面を複数にした。(画面数も簡単に変更できます)
(3)同じ商品をかごに入れたら、注意画面を表示するようにした。
※メール機能は、一部止めてあります。

 

商品マスタの作成(1) 連想配列の練習です、商品コードをキーとしたファイルを作り追加、訂正、削除、照会を行います。(このスクリプトはあえてシンプルに作りましたのでチェックが甘くなっています)

商品マスタの作成(2)
商品マスタの作成(2-2)
表形式の簡単な商品マスタメンテナンスです。(これはカレンダーのリスト形式のものを応用しました。このスクリプトもシンプルに作りましたのでチェックが甘くなっています)
(2-2)はSELECT文を項目に入れたものです。
最初は、SELECT文を入れたフォームを作ったのですがリロードを4回ほど繰り返すとフォーム画面が乱れ動作が止まりました。文字コードの混在が原因かと思いいろいろ試して見ましたがだめなのでSELECTをとってしまいました。

商品マスタの作成(3) CGIおもちゃ箱の掲示板のパターンを利用し、商品マスタの追加、訂正、削除、照会を行います。但し このプログラムでは連想配列のキーをレコード番号(ファイルから読み出した順序番号)で処理しています、これは商品マスタの作成という性格上、多数から同時にアクセスされることはないと考えるからです。

掲示板 CGIおもちゃ箱の掲示板です、このページへ来られた方はお気軽にお書き下さい。プログラムの仕組みとしましては特別なものはありませんが、ここのスクリプト集の集合体のような感じです。

掲示板2

左側:宛先表示
右側:指定データ表示

フレームを利用した掲示板です、左の画面からアンカータグで右に表示させたい項目を渡しています。この渡すデータが漢字の場合うまくいかなかったので処理を工夫してあります・・・どなたか漢字コードを渡すうまい方法を教えてください。

アドレス帳の作成 電子メールのアドレス帳の登録訂正削除機能です。ここの掲示板とソートを組み合わせました。このアドレス帳を使ったものとして、メールの一括送信が考えられます。

ツリー式掲示板 ツリータイプの掲示板です 考え中
人気投票

投票データの保守

クッキーを利用した連続投票防止機能付きを作っていましたがなかなかバグがとれないので、クッキーなしの連続投票もできてしまういい加減な投票です。
グラフもテーブルの背景色を利用していますのでブラウザによりおかしくなるかもしれません。

投票データを管理するための、訂正削除処理

アルバム CGIおもちゃ箱の掲示板に画像を入れられるようにしたもの。写真に対するコメントをいろいろ入れて楽しみます。

作成放棄

矢尾百貨店売場案内 テキスト形式(メモ帳で作成)で、矢尾百貨店の店内案内を作り、フロアーから売場へとリンクで案内表示をできるようにしました。(練習用ですから売場はほんのちょっとです、本当はもっといっぱいありますから誤解しないでください)

表形式の表示 エクセルで作ったデータをタブによる区切り記号により、簡単に読みとることができます。このデータを表形式で表示しました。

検索の練習(1) 表形式のデータに対して、検索条件をつけました。これによりエクセルで作ったデータをWEBで表示、検索ができますがデータ数が多くなるとレスポンスが悪くなると思います。

検索の練習(2) 住所録の検索です、読みがなと検索文字により、該当するものだけを表示します。(この検索の基本的な形を基礎編に置いてあります)

出欠表(1) メンバー名を配列に入れ表形式に表示させ、出欠を入力してもらうものです。
実用的ではありませんが1年振りに作ったのでこのレベルから再開です。

出欠表(2) メンバー名を配列に入れず、フォームから入力するパターンです。

出欠表(3) ケータイ用にHTMLからCGIを呼び出す簡単なものです、いたずら防止にHTMLからパスワードを入れ正しい人に出欠画面を見せます。  
出欠表(4) 管理者用にメンバーを登録できるようにし、出欠が書きこまれたらメールで管理者に出欠状況を送信します。  
出欠表(5) 出欠だけでなく、次回のために何日が都合がよいか、書きこんだり、伝言板を入れたりしています。(完成はかなり先になるでしょう・・・)  

更新日 02.9.4