CGI Construction on Macintosh.

Macintosh でCGI を構築する

by Tsutomu Munakata

0. Back to Top Index Page
1. Apple Script を用いる方法
2. HyperCard を用いる方法
3. Perl を用いる方法
4. 任意のプログラムを用いる方法

1) Apple Script を用いる方法 (標準的方法)

To Top of this page

2) Hyper Card を用いる方法

To Top of this page

これでCGI としての機能が実現できる。

直接 Hypercard プログラムを起動する場合

 さて、次にHTTP Software から直接 Hypercard プログラムを起動することが

Hypercard Stuck "aevTest" 内に書かれたスクリプト
データ交換用に三つのfield, "event", "input","output"を用いているが、
on appleEvent class, eventID, sender ---put class && eventID && sender into field "event" ---- Data のモニター if class & eventID is "WWWスsrch" ---- ス はOMEGA の文字化け then request ae data if the result is empty then put it into field "input" ---- Client からのデータはここに来る xtry     ------任意のCGI プログラム put field "output" into outBuff ----- HTTP に送るデータ reply outBuff else reply "Error!!!!" end if else pass appleEvent end if end appleEvent

(注  HyperCard のスタックはApplication としてSave しておくものとする)

3) Perl を用いる方法

To Top of this page

  • 以下にMacPerl で書いた CGI Script とそれを呼び出すHTMLのリストを示します。

     TestPerlCGI.html は $ENV variable を表示させるCGI Script "cgitest" を
    get method で呼び出しています。
    ---- List of TestPerlCGI.html ----
    < HTML>
    < TITLE>CGI by MacPerl< /TITLE>
    < BODY bgcolor="#d3ffff" link="#9805FF" vlink="#006B38"text="#0C197A">
    < H1 align=center>CGI< /H1>< p>
    < H3>MacPerl の Testです< br>
    < /h3>
    < Form Action="/PerlScripts/cgitest" Method=get>
    名前    :< input type="text" NAME="name" SISE=40 MAXLENGTH=40>
    < br>
    学科    :< input type="text" NAME="class" SISE=40 MAXLENGTH=40>
    < br>
    学年、クラス:< input type="text" NAME="number" SISE=40 MAXLENGTH=40>
    < br>
    < input type="submit" VALUE="Go">
    < input type="reset" VALUE="Reset">
    < /Form>
    < /Boby>
    < /HTML>
    ---- End of TestPerlCGI.html ----

  • 以下にMacPerl で書いた cgitest のリストを示します。

    ---- List of cgitest ----
    print("content-type: text/html \n\n");
    print("< HTML>< HEAD>< TITLE>CGI ENV< /TITLE>< /HEAD> \n\n");
    print("< BODY>< h3>List of \$ENV Variables < /h3>");
    print("< LI>REMOTE_HOST        : $ENV{'REMOTE_HOST'} < br>\n");
    print("< LI>REMOTE_IP          : $ENV{'REMOTE_IP'} < br>\n");
    print("< LI>REMOTE_USER        : $ENV{'REMOTE_USER'} < br>\n");
    print("< LI>REMOTE_IDENT       : $ENV{'REMOTE_IDENT'} < br>\n");
    print("< LI>HTTP_USER_AGENT    : $ENV{'HTTP_USER_AGENT'} < br>\n");
    print("< LI>HTTP_REFERER       : $ENV{'HTTP_REFERER'} < br>\n");
    print("< LI>HTTP_ACCEPT        : $ENV{'HTTP_ACCEPT'} < br>\n");
    print("< LI>SERVER_SOFTWARE    : $ENV{'SERVER_SOFTWARE'} < br>\n");
    print("< LI>SERVER_NAME        : $ENV{'SERVER_NAME'} < br>\n");
    print("< LI>SERVER_PROTOCOL    : $ENV{'SERVER_PROTOCOL'} < br>\n");
    print("< LI>SERVER_PORT        : $ENV{'SERVER_PORT'} < br>\n");
    print("< LI>REMOTE_HOST        : $ENV{'REMOTE_HOST'} < br>\n");
    print("< LI>REQUEST_METHOD     : $ENV{'REQUEST_METHOD'} < br>\n");
    print("< LI>PATH_INFO          : $ENV{'PATH_INFO'} < br>\n");
    print("< LI>PATH_TRANSLATED    : $ENV{'PATH_TRANSLATED'} < br>\n");
    print("< LI>SCRIPT_NAME        : $ENV{'SCRIPT_NAME'} < br>\n");
    print("< LI>QUERY_STRING       : $ENV{'QUERY_STRING'} < br>\n");
    print("< LI>CONTENT_TYPE       : $ENV{'CONTENT_TYPE'} < br>\n");
    print("< LI>CONTENT_LENGTH     : $ENV{'CONTENT_LENGTH'} < br>\n");
    print("< LI>DOCUMENT_URI       : $ENV{'DOCUMENT_URI'} < br>\n");
    print("< /BODY>< /HTML>");
    ---- End of cgitest ----

    4) 任意のプログラムを用いる方法

    To Top of this page

    tell application "Macintosh HD:MacHTTP Software:Scripts:XXXX"
    	set fh to open for access file "Macintosh HD:bufffile" with write permission
    		set eof fh to 1
    		write http_search_args to fh
    	on error errMsg
    		close access fh
    		error errMsg
    	end try
    	close access fh
    	Do Script "ex0"
    	set fho to open for access file "Macintosh HD:bufffileo"
    		set argsb to read fho until eof
    	on error errMsg
    		close access fho
    		error errMsg
    	end try
    	close access fho
    end tell
    set crlf to (ASCII character 13) & (ASCII character 10)
    set http_10_header to "HTTP/1.0 200 OK" & crlf & "Server: MacHTTP" & ツ
    crlf & "MIME-Version: 1.0" & crlf & "Content-type: text/html"& crlf & crlf
    return http_10_header & argsb


    To Top of this page
    Back to Top Index Page

    Copy Right & Write
    Tsutomu Munakata