ホームページの作り方(中級編)

1,フレーム
2,フォームを作成する
3,S S I
4,Javascript
5,VBScript

1,フレーム

MSIE3.0
NN3.0

よく、ホームページを左右や上下で分割しているページを見かけます。
これは「フレーム」という機能を使っています。

フレームは簡単にできます。

<FRAMESET COLS="50%,50%">
	<FRAME SRC="test.html">
	<FRAME SRC="test2.html">
</FRAMESET>

<FRAMESET>でどのように分割するかを定義します。
「COLS=”50%,50%”」は縦方向に分割するという意味で
それぞれのWindowは50:50に分割されます。
左側には”test.html”ファイル
右には”test2.html”ファイルが表示されます。
横方向に分割したいときは「ROWS=・・・」にようにします。

なお、フレームを利用するときは<BODY>タグは用いることができません。
これは<FRAME>タグが<BODY>タグの代わりとしてはたらくためです。

●フレーム未対応のブラウザのために

フレームに未対応のブラウザでフレームを使ったページを見るとなにも表示されません。
これだけではなにがおきたのかクライアントにはわからないので
それようのタグがあります。

<FRAMESET COLS="50%,50%">
<NOFRAMES>
あなたのブラウザはフレーム機能に対応していません。<P>
フレームに対応したブラウザでご覧ください。
</NOFRAMES>
	<FRAME SRC="test.html">
	<FRAME SRC="test2.html">
</FRAMESET>

こうすることでフレームに対応したブラウザはNOFRAMESのタグの内容を無視します。
フレームに未対応のブラウザはNOFRAMESのタグの内容を表示します。

●注意

このフレーム機能はMSIE3.0以上、NN2.0?以上でないと実現できません。
対応していないブラウザで見るとフレームにならないどころか
ホームページの内容が全く表示されません。

また、画面を分割してしまうのでそれぞれのWindowは小さくなってしまい
見にくくなってしまいます。

そのためフレームを使うのは極力さける必要があります。


2,Form

MSIE3.0 MailToコマンドは、IE4.0以上が対応。 CGIなら全て可
NN3.0

<FORM METHOD="POST" ACTION="mailto:ael@super.win.or.jp">
氏名
<INPUT TYPE="text" NAME="name" size="20">

性別
<INPUT TYPE="radio" NAME="sex" VALUE="male">男性
<INPUT TYPE="radio" NAME="sex" VALUE="female">女性

年齢
<SELECT NAME="age">
<OPTION>15歳未満
<OPTION>15歳以上65歳未満
<OPTION>65歳以上
</SELECT>

趣味
<INPUT TYPE="checkbox" NAME="astronomy">天体
<INPUT TYPE="checkbox" NAME="physics">物理
<INPUT TYPE="checkbox" NAME="other">その他

ひとこと
<TEXTAREA NAME="message" ROWS="4" COLS="40">
ひとこと
</TEXTAREA>

<INPUT TYPE="submit" VALUE="送信">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

そうすると

氏名

性別
男性 女性

年齢

趣味
天体 物理 その他

ひとこと

このようになります。

FORM METHODのACTION="mailto:"で自分のメールアドレスを書きます。

INPUT TYPE="text"で文字が入力できます。
INPUT TYPE="radio"でラジオボタン(1つしか選択できない)になります。
<SELECT NAME="age">・・</SELECT>の間に<OPTION>で
項目を指定します。
INPUT TYPE="checkbox"でチェックボックスになります。
TEXTAREAで長い文章を入力できます。
ROWSで縦の行,COLSで横を指定します。
最後にINPUT TYPE="submit"で送信,INPUT TYPE="reset"で
すべてをクリアします。

これで、「送信ボタン」を押すとデータが送信されるのですが
MSIEはメールSoftが起動するだけです。(アドレスのみ記入されています。)
そのため、MailToを用いる方法はNetscapeユーザーしか利用できません。
後述のCGI機能を利用すればMSIEでも利用できます。

上上へ


3,SSI

MSIE3.0
NN3.0

SSIとは、Server Side Includeの略です。
ホームページの特定の部分の表示を動的に変えることができます。
この機能はブラウザによるものではなく、サーバーが行うものです。
従って、ブラウザは何であっても動きます。
(ブラウザ側には結果が文字として返ってくるだけです。)

ただし、SSIを使うためには、プロバイダーが
一般ユーザーにSSIの使用を許可している必要があります。

このSSIの使用は70%以上のプロバイダーで使用できないようになっています。
これは、セキュリティーホールができ、ハッカーがシステム内部に侵入する可能性があるからです。

SSIの可否についてはご自身のプロバイダーに尋ねてください。
なお、当サイトがあるAIRNETはCGI,SSIの使用を認めています。

●準備

SSIは単に埋め込めば実行できるというものでもありません。
サーバーにSSIを使用したいということを伝える必要があります。
方法は2通りあります。

1 拡張子をshtmlにする
2 .htaccessファイルを置く

1は最も簡単な方法で、今まで拡張子は「html」,「htm」だったのですが
これをSSIを用いるところだけ「shtml」にします。
通常はこの方法を採ってください。(サーバーの負担が最小限で済みます。)

しかし、トップページ「index.html」にSSIを埋め込むときは拡張子を
変更できないので2の方法を採ります。
2は「.htaccess」というファイルをhtmlファイルと同じディレクトリーに置くだけです。
「.htaccess」ファイルの中身は次の通りです。

Addtype text/x-server-parsed-html .shtml
Addtype text/x-server-parsed-html .html

これは、拡張子が「shtml」と「html」の両ファイルともSSIを使うということを
サーバーに伝えるものです。
これをメモ帳で打ち込んでファイルを作ってもいいのですが改行コードの問題に注意してください。

次に、今のファイルのパーミッションを「744」にします。
パーミッションについては上級編(29KB)のアクセスカウンターの
ところで、「ファイルモード」として軽く解説しています。

●環境変数を取り込む

<!--#echo var="DATE_LOCAL"-->

これは、現在のに本時間を表示します。実行すると

このように表示されます。この表示形式を変えたいときは 今の構文の前に

<!--#config timefmt="%Y年%m月%d日 %I:%M:%S %p %Z"-->

といったものを追加します。すると、

1997年09月17日 02:08:35 AM JST

このように表示されます。(現在の時間ではありません)

記号の意味は

   
%Y
%m
%d
%H 時間(24時)
%M
%S
%p AM か PM
   

他の環境変数の例を紹介します。( )内はその例です。

SERVER_NAME アクセスしてきた
相手サーバー
super.win.or.jp
HTTP_USER_AGENT 相手ブラウザ名 Mozilla/1.22 (compatible; MSIE 2.0c; Windows 95)
HTTP_REFERER どこからリンクしてきたか http://www.win.or.jp/~ael/info.html

●ファイル関係

<!--#fsize file="index.html"-->

これを実行するとindex.htmlのファイルの容量がわかります。
ただし、これは同ディレクトリのものしか使えないので 他ディレクトリを表示するときは

<!--#fsize virtual="/path/to/index.html"-->

このように実行します。

また、ファイルの最終更新日を知りたいときは

<!--#flastmod file="index.html"-->
<!--#flastmod virtual="/path/to/index.html"-->

同ディレクトリのものは上をそれ以外は下のでindex.htmlの最終更新日がわかります。
このファイルの下の方に最終更新日が載っています。

●ファイルを実行させて値を取り込む

<!--#exec cmd="file名"-->
<!--#exec cgi="file名"-->

いまのどちらかでfile名というファイルを実行して値を得ることができます。
具体的な例はアクセスカウンターのところを見てください。

●ファイルを連結する

<!--#include file="file名"-->
<!--#include virtual="/path/to/file名"-->

このどちらかを使います。すると、そのファイルがドキュメントとして挿入されます。
これは、逐次更新される部分を別ファイルとすれば、そのファイルだけを更新すれば
逐次、新しい情報が表示されます。

●SSI一覧

・SERVER_SOFTWARE   こちらのサーバーのソフトのバージョン
・SERVER_NAME     こちらのサーバーのURL
・REMOTE_HOST     相手サーバーのURL(文字で)
・REMOTE_ADDR     相手サーバーのURL(数字で)
・HTTP_USER_AGENT   相手クライアントのブラウザ
・HTTP_REFERER    相手クライアントがどこからこのページに来たか
・DOCUMENT_NAME    このページの名前
・DOCUMENT_URI    このページの名前
・DATE_LOCAL     時間
・DATE_GMT      世界時間
・LAST_MODIFIED    ファイルの最終更新日

上上へ


4,JavaScript

MSIE3.0 ただし、不完全です。
NN3.0

JavaScriptとは、HTMLの文集中にただ単に書き込むだけのものです。
世間でいわれているいわゆるJavaとは違います。これに対応するブラウザも限られ
Microsift Exploreでは3.0以上,Netscapeでは2.0以上で対応しています。
JavaScriptに対応していないブラウザのことを考えて書く必要があります。
また、JavaScriptに対応していてもIEとNNで少し差があったりするので
完全には互換性がありません。

次の、文字を表示する例を見てください

<SCRIPT LANGUAGE="JavaScript">
document.writeln("HELLO WORLD");
document.write("ようこそJavaScript");
</SCRIPT>

このように<SCRIPT LANGUAGE="JavaScript">でJavaScriptを宣言します。
document.writeln("言葉");で文字を表示します。変数を宣言すればそれを
表示することができます。次に変数の例を見てください

<SCRIPT LANGUAGE="JavaScript">
var today = new Date();
var hour = today.getHours();
var min = today.getMinutes();
var sec = today.getSeconds();
var year = today.getYear();
document.write("現在"+year+"年"+hour+"時"+min+"分"+sec+"秒"+"<p>");
if (hour<12) {
document.write("午前");
}else{
document.write("午後");
} </SCRIPT>

これで、Dateという定数からvarで定義した変数に代入し、それを表示しています。
if文は、図のように定義します。

さて、このページをJavaScriptに対応していないブラウザで見ると
わけの分からない記号が表示されます。そこで、次の文を加えてください

<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("あなたのブラウザはJavaScriptに対応しています。");
// -->
</SCRIPT>

そうすると

このようになります。何も表示されなかったブラウザはJavaScriptに
対応していません。構文で <!-- から // --> に実行したい文を書きます。
この間は、JavaScriptに未対応だと注釈と判断され何も表示されませんので、
迷惑をかけることがありません。

●Link

ここでは、非常に簡単なものだけ説明しました。
より詳しい説明は以下のページを参考にしてください。

独学JavaScript
JavaScript Guide
JavaScript チュートリアル
JavaScriptコーナー

上上へ


5,VBScript

MSIE3.0
NN3.0 Plug-inで対応

VBScriptとは、VisualBasicをベースとしているプログラムです。
これは、IEでのみ有効です。そのため、NNでは実行できません。

<SCRIPT LANGUAGE="VBScript">
</SCRIPT>

この間にプログラムを書きます。

実際にプログラムを書くときは、Microsoftの"ActiveX Contol Pad"を
使うと楽にできます。

VBScriptの詳しい文法は、

マイクロソフトのリファレンスマニュアル

を参考にしてください。

上上へ


戻るNoteに戻る