★ 

インデックス

 ★
★ 

プログラムの説明

 ★

CGIスクリプトの配布とプログラミングの説明

 RSS XML
ネトマガ
  • 玄関口
  • 占い診断
  • 萌え辞典
  • オタク遊戯
  • ネット小説
  • 情報基地
  • CGIDL
  • CGI解説
--サイト運営者より告知--
2022年2月16日【水】14時07分49秒
syuka.com】では
サイト管理にcookieを使用しています。
2020年5月14日【木】16時26分26秒
【告知】サイト運営継続の為、xcoinによる投げ銭をお願いします。
2017年6月6日【火】20時29分41秒
【(*´ω`*)】CGIの更新は現在無期限休止中です‥‥
2014年11月6日【木】13時47分00秒
【(*´ω`*)】確率収束診断スクリプト作りました!
2013年12月24日【火】17時47分50秒
【(*´∇`*)】最近ちょっとプログララマーに戻ってます♪
2013年11月4日【月】19時41分23秒
【(´・ω・`)】現在新しいCGIの作成は行っていません。
2013年1月7日【月】16時12分36秒
【(*´ω`*)】サイトをリニューアルしました。他も徐々に変更中です‥‥
--サイト運営者お勧めリンク--
【Amazon】日本人が知らない近現代史の虚妄 江崎道朗
【Amazon】ウルトラマンの伝言 日本人の守るべき神話 倉山満
【Amazon】嘘だらけの池田勇人 倉山満
【Amazon】無駄(規制)をやめたらいいことだらけ 令和の大減税と規制緩和 渡瀬裕哉
【Amazon】日本分断計画 中国共産党の仕掛ける保守分裂と選挙介入 上念司
【Amazon】緒方竹虎と日本のインテリジェンス 江崎道朗
【Amazon】救国のアーカイブ 公文書管理が日本を救う 倉山満
【Amazon】誰もが知りたいQアノンの正体 みんな大好き陰謀論 内藤陽介
【Amazon】米国共産党調書 外務省アメリカ局第一課作成 江崎道朗
【Amazon】教科書では絶対教えない 偉人たちの日本史 倉山満
【Amazon】世界はいつでも不安定 - 国際ニュースの正しい読み方 - 内藤陽介
【Amazon】史上最強の平民宰相 原敬という怪物の正体 倉山満
【Amazon】新装版 お役所仕事の大東亜戦争 (いまだに自立できない日本の病巣) 倉山満
【Amazon】ウッドロー・ウィルソン 全世界を不幸にした大悪魔 倉山満
【Amazon】税金下げろ、規制をなくせ 日本経済復活の処方箋 渡瀬裕哉
【Amazon】米中ソに翻弄されたアジア史 宮脇淳子 江崎道朗 福島香織
【Amazon】日本人に忘れられた ガダルカナル島の近現代史 内藤陽介
【Amazon】2020年大統領選挙後の世界と日本 “トランプ or バイデン" アメリカの選択 渡瀬裕哉
【Amazon】保守とネトウヨの近現代史 倉山満
【Amazon】中学歴史 令和元年度文部科学省検定不合格教科書 竹田恒泰
【Amazon】天皇の国史 竹田恒泰
【Amazon】ミトロヒン文書 KGB(ソ連)・工作の近現代史 山内 智恵子 江崎道朗
【Amazon】若者に伝えたい英雄たちの世界史 倉山満
【Amazon】経済で読み解く日本史6平成編 上念司
【Amazon】みんな大好き陰謀論 内藤陽介
【Amazon】インテリジェンスと保守自由主義 新型コロナに見る日本の動向 江崎道朗
【Amazon】検証 検察庁の近現代史 倉山満
【Amazon】桂太郎-日本政治史上、最高の総理大臣 倉山満
【Amazon】危うい国・日本 百田尚樹 江崎道朗
【Amazon】「新型コロナ恐慌」後の世界 渡邊哲也
【Amazon】日本外務省はソ連の対米工作を知っていた 江崎道朗
【Amazon】トップの教養 ビジネスエリートが使いこなす「武器としての知力」倉山満
【Amazon】天皇がいるから日本は一番幸せな国なのです・倉山満
【Amazon】日韓基本条約 (シリーズ韓国現代史1953-1965) ・内藤陽介
【Amazon】メディアが絶対に知らない2020年の米国と日本 (PHP新書)・渡瀬裕哉
【Amazon】なぜ、成熟した民主主義は分断を生み出すのか ~アメリカから世界に拡散する格差と分断の構図・渡瀬裕哉
【Amazon】天皇家 百五十年の戦い・江崎道朗
【Amazon】ウエストファリア体制・倉山満
【Amazon】アウシュヴィッツの手紙 改訂増補版・内藤陽介
ねずさんの日本の心で読み解く「百人一首」:千年の時を超えて明かされる真実
たった1つの図でわかる!図解経済学入門
大間違いのアメリカ合衆国
政治経済雑記はこちら♪
【Kindle】電子書籍販売★秋華★

CGIスクリプト基本 [ファイル読み書き]

それではいよいよ、HTMLだけではできない事をしていきたいと思います。
とりあえず、まずはカウンタからです。
カウンタと言えば、「あなたは××人目の訪問者です。」なんて数字を表示する奴です。
方法としてはいくつかやり方があります。
HTMLで、img src= で画像の代わりにCGIファイルを指定し、CGIによって画像を出力する方法。
iframe src= で、フレーム内に画像、又はテキストで出力する方法。
他にもHTMLファイルそのものを書き変える方法などがあるが、今上げた3つは、どれも誰かが作ったスクリプトを利用すれば簡単にできるし、入門書籍にも簡単なソースは、書かれている。
だからココでは、自分でCGIを書くメリットがあるやり方を書きたいと思います。
先ほどまでに書いた、CGIでHTML出力する方法を利用し、トップページを表示し、そこにカウンタの数字を表示する方法です。
まずはトップページを表示するソースを見てみましょう。

#! /usr/local/bin/perl
print "Content-type: text/html; charset=UTF-8\n\n";
print <<END_OF_HTML;
<html>
<head>
<title>ぼくのホムペトップページ</title>
</head>
<body bgcolor="#FFDDFF">
<font color="#007777">いらっしゃいませw</font><br>
ぼくのホームページトップだよ♪
</body>
</html>
END_OF_HTML
exit;

コレがたとえば、ホームページのトップとして、いらっしゃいませw と表示した下に、あなたは、××人目の訪問者です! と言う一文をいれる事にします。
以後 body タグより前と後は省略させていただきます。
理屈としては・・・

<font color="#007777">いらっしゃいませw</font><br>
ぼくのホームページトップだよ♪

この間に入れるわけですので・・・

<font color="#007777">いらっしゃいませw</font><br>
END_OF_HTML
ここでカウンタ処理を行って、表示する命令を入れれば良い。
print <<END_OF_HTML;
ぼくのホームページトップだよ♪

一度HTML表示を終了させて、カウンタを表示する為の処理を行い、カウンタの数字を表示し、その後再び、残りのHTMLを表示する事で可能です。
しかしこれだと、HTMLの記述を後で見た時に美しくなく、なんとなくわかりにくいです。
そこでもっと簡単な方法が有ります。
変数というものを利用し、表示する方法です。
変数とは、数字や文字列を入れておく、箱のようなものだと考えてください。
Perlブログラムでは、$hensu のように、最初に $ を書いて、その後に最初に半角英、その後に数字などを使って適当に自由に作成できるものです。
たとえば $count に、今までの訪問者の人数を入れておけば、以下のように記述すれば、表示する事が可能です。

<font color="#007777">いらっしゃいませw</font><br>
あなたは、$count人目の訪問者です。<br>
ぼくのホームページトップだよ♪

これだけで表示されてしまうのですから、とても簡単です。
問題は、変数 $countに、訪問者数を入れるのに、どうしたら良いかという事です。
最終的な記述としては、たとえば訪問者数が1234人であれば、以下のように書けば、$count に 1234 を入れる事が出来ます。

$count = "1234";

これで、変数 $count は、1234とイコールです。
最終的にする事としては、訪問者数を上記のように $count に入れる事ですが、それまでには色々しなければならない事があります。
簡単に言うと、今までの訪問者数の書かれたデータファイルから、データを取り出して人数を得る。
その数字に1を足して、再びデータファイルに戻す。(書きこむ)
最後にその数字を、$count に入れる、という感じです。
しかし、最後に $count に入れる作業は、実は必要ありません。
理由は、取り出すところから $count に取り出して、それに1を足して、$count の数字をデータファイルに書き込めば問題無いからです。
では、まずはデータファイルを作成し、そこに今までの訪問者数 0 を書いて保存してから、ソースを書いて説明していきます。
データファイル名はファイル名として使えるものならなんでも良いですが、ややこしいのは避けた方が良いでしょう。
だいたい皆が利用するのが、拡張子 .log か .txt あたりでしょうか。
ただ私は、データだから .dat を今まで使ってきたので、それでさせていただきます。
今後、カウントを保存するデータファイル名は、count.dat とします。
それでは、以下ソースの記述です。

open(LOGC,"count.dat") || die "Can't Open User Access Log: $!\n";
$count=<LOGC>;
close(LOGC);
$count++;
open(LOGC,">count.dat") || die "Can't Open User Access Log: $!\n";
print LOGC "$count";
close(LOGC);

この7行を表示前に行って、HTML表示の際 $count を数字の文字列として表示すれば、そこに数字が表示されるわけです。
それでは1行ずつ説明します。
まずは・・・

open(LOGC,"count.dat") || die "Can't Open User Access Log: $!\n";

これは、開く、LOGC と言う名称で、データ引き出しとして、count.dat から。|| もしファイルが開けなかったら、Can't Open User Access Log: $!\n と表示します。
こんな感じです。
次の行が・・・

$count=<LOGC>;

これは、$countに、LOGC と言う名称で引きだしたデータを入れる。

close(LOGC);

LOGC と言う名称で開いたファイルを閉じる。
ココで大切なのは、開いたファイルは、必ず閉じなければならないって事です。

$count++;

$count に入れたデータ(ココでは 0 という数字ですね)に、1 を足す。
ちなみに・・・

$count = $count + 1;

上記でもかまいません。
読み方としては、$count に、$count に 1 足した数字を入れる、って感じです。
普通算数では、書き方は逆ですが、プログラムではこう書くのが基本です。

open(LOGC,">count.dat") || die "Can't Open User Access Log: $!\n";

開く、LOGCと言う名称で、上書きする為に、count.datファイルを。|| もしファイルが開けなかったら、Can't Open User Access Log: $!\n と表示します。
読みだしと違うのは、> がついているかいないかですね。

print LOGC "$count";

出力する、LOGC と言う名称で、$count を、って事で、$count の中の文字列を、count.datに上書きします。

close(LOGC);

LOGC と言う名称で開いたファイルを閉じる。
と、なります。
これだけで、ホームページにカウントを表示する事が可能です。
完成系を以下に書きます。

#! /usr/local/bin/perl
print "Content-type: text/html; charset=UTF-8\n\n";
open(LOGC,"count.dat") || die "Can't Open User Access Log: $!\n";
$count=<LOGC>;
close(LOGC);
$count++;
open(LOGC,">count.dat") || die "Can't Open User Access Log: $!\n";
print LOGC "$count";
close(LOGC);
print <<END_OF_HTML;
<html>
<head>
<title>ぼくのホムペトップページ</title>
</head>
<body bgcolor="#FFDDFF">
<font color="#007777">いらっしゃいませw</font><br>
あなたは$count人目の訪問者です!<br>
ぼくのホームページトップだよ♪
</body>
</html>
END_OF_HTML
exit;

ちなみに LOGC と言う名称は、変更可能です。
一般的には、IN と OUT が使われている事が多いように感じます。
die 関数は、データファイルが無かったりして、ファイルオープンに失敗した場合、直ちにスクリプトを終了して、メッセージを表示するものですので、そのまま利用して構いません。
データファイルの読み書きは、これが基本ですので、今後も必ず使う記述です。
ちなみにこの程度のデータであれば、CGIファイル自体に保存、書き変えができた記憶がなんとなくありますが、私自身忘れていますので、ココでは書けません。(汗)
さてココまでは、CGIファイルにアクセスがあり、CGIファイルが起動して、データの読み書きはあったにせよ、HTMLを表示するだけのものでした。
次は、HTMLの送信フォーム(掲示板等の書き込みや、サーチエンジンの検索など)から送られてきたデータを受け取り、それを処理する為に必要な事を説明したいと思います。
【<┃】 【┃┃】 【┃>】
ドクダミ

仮想通貨お賽銭アドレス
サイト運営を応援し賽銭(投げ銭)を投げて下さる方は、投げ銭に関する注意事項を読んだ上、下記仮想通貨を投げ銭する事ができます。

◆xcoin◇エクスコイン◇イーサリアム◆

xcoin
Ver.5.00 CGIフリー配布サイト