★ 

インデックス

 ★
★ 

プログラムの説明

 ★

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ではできない事をしました。
次は更に、CGIならではの事をします。
それが、外部からのデータの受け取りです。
たとえば掲示板は、誰かが書き込みを行い、そのデータを受け取り、処理して、表示します。
検索エンジンも、検索キーワードを送信されたのを受け取り、データベースと照合して、必要なデータだけを表示するというものです。
データの受け取りが可能になれば、送信はHTMLのフォームからできますので、掲示板も検索エンジンも、作る事が可能になります。
それではまず、その送信側のフォームの記述をみてみましょう。

<form method="post" action="index.cgi">
<input type=text name="cname" size="40"><br>
<textarea name="chat" rows="14" cols="50"></textarea><br>
<input type="submit" value="送信">
</form>

上記はHTMLの送信フォームの記述です。
知ってる人は分かると思いますが、1行目が、フォームの始まりと、データの受け渡し方法、そして対象を設定しています。
2行目が、名前を書く場所を設定、3行目が記事を書く場所を設定、4行目が送信ボタン、5行目がフォームの終わりを宣言しています。
此処で気になるのが、1行目の、method="post" という記述で、データの受け渡し方法です。
私は最初、これの意味がわからなくて書籍で調べたのですが、それでもはっきりと意味がわかりませんでした。
それで実際に色々試しているうちに、その答えがわかりました。
まず説明すると、post の部分は、get に置き変える事もできます。
データの送信方法は2種類あるって事です。
それの違いが、しばらくわかりませんでしたが、簡単に言うと、送信データの痕跡が残るのが、get で、痕跡を残さないのが、post であると言えます。
サーチエンジンで基本的に使われているのが、get で、掲示板で使われているのが、post です。
簡単に言うと、処理が終了した時点で、URLの最後に、データを残すのが、get で、URLアドレスだけなのが、post です。
サーチエンジンで検索した後、URLの後に、色々な変な文字が並んでいるのを見た事があると思います。
あれを残さないようにするには、post にする事で、残さないようにできます。
しかしサーチエンジンのページは、もしも post で検索していたら、どのページが表示されていても、URLは同じ事になります。
実はその後の文字列が、URLそのものの役割を果たしているとも言えます。
あくまで送信されたデータなのですが、そのデータを受け取った場合に表示するページは同じわけですから。
もっと分かりやすく言うと、診断ページ等を利用した事がないでしょうか?
10の質問に、はい か いいえ で答えることで、あなたの性格を診断するとか、そんな感じのページです。
ランダム要素がなければ、全て はい で答えたならば、得られる結果は同じですし、全て いいえ でも、別の決まった結果がえられるでしょう。
その結果ページへのリンクを友達に見せたいと思った時、もしこのページのスクリプトが、post 送信だったら、結果ページへのリンクは、普通得られません。
その時のアドレスをコピーしたならば、おそらくそれは、トップページへのリンクアドレスとなるでしょう。
でも get なら、そのアドレスが、送信データ付のアドレスではありますが、得る事ができて便利なのです。
なら何故、全て get で送信しないのか。
それには、そのスクリプトによって、色々理由はあります。
たとえば、URLの後につけるデータを、パスワードとして使っていたりする場合もあったり、掲示板でそのアドレスにアクセスすれば、書き込みを繰り返す事になったりします。
実際使っていけば、もっと色々な状況で、色々なメリットデメリットが見つかると思うので、後はこれから徐々に試してください。
とにかく、ログインや、書き込みを行う処理がある場合は、post、データ引き出すだけの処理は、get の方が親切かも、くらいに思えば良いと思います。
それでは、先ほど書いたフォームで送られてきたデータを受け取るソースを以下に書きます。

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

ぶっちゃけコレは、もう決まった記述ですので、深く考える必要はないです。
と言うか、私も最初こそ理解しましたが、今は何も考えず使っており、説明できません。(笑)
あえて少し説明するなら、1行目は・・・
もし、method が post でデータを送られてきたなら、変数 $buffer に、そのデータを入れる。
そして2行目が・・・
そうでない場合は、$buffer に、そのデータを入れる。(記述の違いは見ればわかると思いますが、別の方法で行われています。)
これで、post で送られてきたデータも、get で送られてきたデータも、$buffer の中に入れる事ができます。
どちらかだけを受信したい場合は、post の場合は・・・

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

get の場合は・・・

$buffer = $ENV{'QUERY_STRING'};

だけを記述しておけば大丈夫です。
とにかくこれで、フォームからのデータを受け取る事ができました。
それでは次回は、送信されてきたデータの中身を知り、処理する事ができればと思います。
【<┃】 【┃┃】 【┃>】
ドクダミ

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

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

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