Window.document

Window.documentは、そのブラウザが読み込んでいるドキュメントを指す。

ウィンドウ(Window) - とほほのWWW入門

alertで出して見ると、

HTMLDocumentって出ちゃってるけど
HTMLDocumentって出ちゃってるけど

HTMLDocumentって出ちゃってるけど。
まあ、Documentインターフェースは持ってそう・・・。

Sample/js/Window/document/src/Window at master · bg1bgst333/Sample · GitHub

input#type

type属性で入力の種類を変えられる。

<input> - フォーム部品:入力欄 - とほほのWWW入門

typeをbuttonにすれば、ボタン形式になる。
ボタンも入力と言えば入力だ。

とすると、

エディットコントロールの下にボタンが表示される。
エディットコントロールの下にボタンが表示される。

エディットコントロールの下にボタンが表示される。
押しても何も起きないけど。

Sample/html/input/type/src/input at master · bg1bgst333/Sample · GitHub

input

入力フォームにはinputタグを使う。

<input> - フォーム部品:入力欄 - とほほのWWW入門

エディットコントロール形式にするなら、typeにはtextを指定。

これだけで、

エディットコントロールが表示されて
エディットコントロールが表示されて

エディットコントロールが表示されて、

文字列を入力できる
文字列を入力できる

文字列を入力できる。
ただそれだけ。

Sample/html/input/input/src/input at master · bg1bgst333/Sample · GitHub

QUERY_STRING

一般の環境変数とは別に、CGI環境変数をgetenvで取得することが出来る。

6.1 QUERY_STRING
CGIの仕様 - とほほのWWW入門

getenvにQUERY_STRINGを指定してみる。

として、

そのまま呼び出しだと、
そのまま呼び出しだと、

そのまま呼び出しだと、

何も表示されないように見えるが
何も表示されないように見えるが

何も表示されないように見えるが、

&quot;.cgi&quot;の後に&#x27;?&#x27;とパラメータを&#x27;+&#x27;で繋いでいけば
".cgi"の後に'?'とパラメータを'+'で繋いでいけば

".cgi"の後に'?'とパラメータを'+'で繋いでいけば、

&#x27;?&#x27;以降に並ぶクエリ文字列を取得できる
'?'以降に並ぶクエリ文字列を取得できる

'?'以降に並ぶクエリ文字列を取得できる。

Sample/cgi/QUERY_STRING/QUERY_STRING/src/QUERY_STRING at master · bg1bgst333/Sample · GitHub

getenv

getenvは、指定の環境変数の値を取得する関数。

Man page of GETENV

getenv.cで、

とすると、

$ vi getenv.c
$ ls
getenv.c
$ gcc getenv.c -o getenv
$ ls
getenv  getenv.c
$ ./getenv
path = /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/bg1/.local/bin:/home/bg1/bin
$

環境変数PATHの値が出力される。

Sample/c/getenv/getenv/src/getenv at master · bg1bgst333/Sample · GitHub

Status

HTTPのステータスコードはStatusヘッダで返す。

CGIの仕様 - とほほのWWW入門
CGI プログラムの改良案/ヘッダの書き方

これだけはHTTPのヘッダではなく、CGI専用ヘッダ。
status.cで、

/* ヘッダファイルのインクルード */
#include <stdio.h> /* 標準入出力 */

/* main関数の定義 */
int main(void){

  /* CGIとして文字列の出力. */
  printf("Content-type: text/html\n"); /* "Content-type: text/html\n"を出力. */
  printf("Status: 404 Not Found\n"); /* "Status: 404 Not Found\n"を出力. */
  printf("\n"); /* printfで改行を出力. */
  printf("<html>\n"); /* printfで"<html>"を出力. */
  printf("  <head>\n"); /* printfで"  <head>"を出力. */
  printf("    <title>Status</title>\n"); /* printfで"    <title>Status</title>"を出力. */
  printf("  </head>\n"); /* printfで"  </head>"を出力. */
  printf("  <body>\n"); /* printfで"  <body>"を出力. */
  printf("    Not Found\n"); /* printfで"    Not Found\n"を出力. */
  printf("  </body>\n"); /* printfで"  </body>"を出力. */
  printf("</html>\n"); /* printfで"</html>"を出力. */

  /* プログラムの終了 */
  return 0; /* 0を返して正常終了. */

}

この場合、

このように表示され
このように表示され

このように表示され、

レスポンスも404
レスポンスも404

レスポンスも404。

こうすると、

このように表示され
このように表示され

このように表示され、

レスポンスも200
レスポンスも200

レスポンスも200。

Sample/cgi/Status/Status/src/Status at master · bg1bgst333/Sample · GitHub