解説@niftyの画像表示@niftyの場合、下表のように通常のHPのディレクトリとCGIを実行するディレクトリが分離されています。「cgi-bin」ディレクトリに画像ファイルを置いてもブラウザで表示することができません。通常の画像ファイルは「homepage」ディレクトリに置きます。本プログラムでは下記に示す画像格納ディレクトリと画像読出ディレクトリをHP上で設定できるようにしてあります。これによって、CGIプログラムの変更が必要ありません。http://hpcgi?.nifty.com/****/■画像格納ディレクトリCGIで画像をアップロードして格納する場合に格納先を「homepage」ディレクトリに指定します。その場合の格納先は「/」で始まる絶対パスを指定します。(http://は使えません)/homepage/■画像読出ディレクトリ画像を読み出して表示する場合にhttp://のURLで指定します。ex.カウンタ画像)相対パス、絶対パス、URLの違い■相対パスファイルやディレクトリの場所を相対的な位置関係で示します。カレントディレクトリ(現在のディレクトリ)を基準にします。カレントディレクトリは「.(ドット1個)」、上位のディレクトリは「..(ドット2個)」で表します。対して下記のように表されます。../photo/pic2.jpg■絶対パスファイルやディレクトリの場所を絶対的な位置関係で示します。最上位のディレクトリ(ルートディレクトリ)を基準にし、スラッシュ「/」から始まります。Locator)インターネット上に公開された情報のある場所を示します。表示する場合、下記の2通りの記述方法があります。これをURLの絶対パスと呼んでいます。これはURLを相対パスで記述していますが上記URLに変換されます。pic1.jpg||---photopic2.jpgパーミッションパーミッションはファイルやディレクトリに対するアクセス権の設定です。パーミッションは「755」など3桁の数値で表されます。最初の値は自分(オーナー)の権限を示します。2番目は自分が属するグループの権限、3番目はその他の利用者の権限です。各桁の数値は下表に示す権限の合計です。あり、自分は「読む+書く+実行する」の権限を持ち、グループ及び他の人は「読む+実行する」の権限を持ちます。一般的にパーミッションは、CGIファイルは「755」、読み書きするファイルは「666」、ディレクトリは「777」に設定しますが、サーバによって設定が異なる場合がありますのでサーバ側の指定に従って下さい。権限なしスタイルシートの記述スタイルシートの記述方法には下記の3通りがあります。1.外部スタイルシートで記述する。スタイルシートを記述した別ファイルを用意し、各HTML文書でそのファイルを参照する方法です。2.各ページで記述する。タグを使って記述する方法です。3.各タグで記述する。HTML文書の各タグにstyle属性を記述する方法です。本CGIではプログラムに手を加えないで済むようにする為、外部スタイルシートを使っています。ファイル名は「style.css」で各プログラムファイルの「xxxdata」ディレクトリの中にあります。ファイルの内容を下記に示します。各プログラムによって内容が異なる場合があります。Scriptを使用する場合、ブラウザの設定が通常は有効になっていますが無効になっていると正常に動作しません。5の場合について示します。[ツ—ル]メニューから[インターネットオプション]を選択します。[セキュリティ]タブをクリックします。[レベルのカスタマイズ]をクリックします。[スクリプト]の[アクティブスクリプト]で[有効にする]を選択します。[OK]をクリックします。コメント扱いになります。document.referrerによりアクセス元URLを取得します。height=1>');//--></script>但し、HPのトップページがフレーム形式の場合は下記のように記述します。top.document.referrerと記述します。6桁の16進数(0123456789ABCDEF)で表されます。最初の2桁が「赤」、次の2桁が「緑」、最後の2桁が「青」を表します。数値が大きい程、その色が強くなります。この3色を組合わせて色が作られます。#0000FF下記にカラーサンプルを表示します。西暦年が4で割り切れる年はうるう年です。西暦年が100で割り切れる年は平年、400で割り切れる年はうるう年です。■曜日の求め方ツェラー(Zeller)の公式を使います。西暦Y年M月D日の曜日Wは下記の式から算出します。7但し、1月と2月は前年の13月、14月として計算します。法律で定められています。「国民の祝日」が日曜日の場合はその翌日を休日とする。(振替休日)前日及び翌日が「国民の祝日」である日は休日とする。日曜日及び振替休日を除く。西暦Y年の春分日、秋分日は下記の計算式を用いています。int(23.2488+0.242194*(Y-1980)-int((Y-1980)/4))ファイルロック複数の人が同時に同一のファイルに対して読み書きを行なうと正常に書き込まれない場合があります。そこで、ファイルロックによりCGIがファイルにアクセスしている間は他のCGIがそのファイルにアクセスできないようにします。ファイルロックには以下の方法があります。flockファイルロック関数flockを使用します。symlinkシンボリックリンク関数symlinkを使用します。この関数はファイルに対して別の名前で関連付けるシンボリックリンク機能を持っています。ロック用のシンボリックリンクを作成しシンボリックリンクの有無によりロック状態を判断します。mkdirディレクトリ作成関数mkdirを使用してロック用のディレクトリを作成しディレクトリの有無によりロック状態を判断します。本CGIプログラムではmkdirを使っています。文字コード日本語の代表的な文字コードを以下に示します。JISコード日本語をマシン外部とやりとりするために作られた。沢山の種類があります。ISO-2022-JPは日本語メールを送信する場合の主流の形式です。Shift-JISコードこれはJISコードをシフトさせたものでWindowsやMacintoshなどのパソコンで広く用いられている。マイクロソフト社とアスキー社が共同開発した。Code)EUCは主にUNIXマシンで用いられ、いろいろな言語用があります。AT&T社によって定められた。ユニコード(Unicode)このコードは全世界の主要な言語の文字を包含している。マイクロソフト社、IBM社、アップル社などが設立したユニコード・コンソーシアムによって制定された。