
No.1ベストアンサー
- 回答日時:
cshでのCGIが利用出来るとして回答します。
以下のCGIスクリプトを/ユーザーパス/cgi-bin/に置いて、実行属性を付けてブラウザで表示してみて下さい。
#!/bin/csh
umask 000
set expire1=`date +"%a %b %e %H:%M:%S %Z"`
set expire2=`date +"%Y"`
@ expire2++
echo "Content-Type: text/html;"
echo "Set-Cookie: visit=on; expires=$expire1 $expire2; path=/ユーザーパス/cgi-bin/"
echo ""
echo "<HTML><HRAD></HEAD><BODY><PRE>"
echo "-- START --"
if ($?HTTP_COOKIE) then
echo "2回目以降の訪問"
else
echo "初めての訪問"
endif
echo "-- END --"
echo "</PRE></BODY></HTML>"
以下、各行の説明。
#!/bin/csh
cshスクリプトを示すオマジナイ。必須
umask 000
無くとも良い。
set expire1=`date +"%a %b %e %H:%M:%S %Z"`
set expire2=`date +"%Y"`
@ expire2++
クッキーの有効期限の生成。
有効期限は「曜日 月 日 時:分:秒 タイムゾーン 年」の形式で指定する必要がある。
有効期限を1年にする為、年の部分だけ分離して抽出し、年に1を足している。
例では曜日を再計算していないので、1年後の今日の曜日が嘘になったり、今日がうるう年(2月29日)だった時に存在しない日付になって有効期限が機能しなくなるので、正しく計算すべき。
実装する場合は、正しく計算するように修正する事。うるう年の判定が大変なので「来年の今月の1日」にしてしまうのが楽。
たいていのブラウザは、曜日が嘘でも、曜日を無視して正しく動作する。
echo "Content-Type: text/html;"
CGIが吐き出す内容がHTMLテキストである事を示すオマジナイ。
echo "Set-Cookie: visit=on; expires=$expire1 $expire2; path=/ユーザーパス/cgi-bin/"
ブラウザにクッキーの保存を促す指令。「ユーザーパス」の部分は実際にCGIを設置する(ブラウザから見た)パスにする。
「visit=on」は、このクッキーで保存される変数名と、その内容。「変数名=内容」の形式。
「expires=$expire1 $expire2;」は「expires=曜日 月 日 時:分:秒 タイムゾーン 年」に展開されてブラウザに送られるクッキーの有効期限。
「path=/ユーザーパス/cgi-bin/」はクッキーの有効範囲。このパスで指定されたパスと、そのパス以下のすべてのファイルにクッキーが返される。
echo ""
ヘッダと本体の区切り。必須。
echo "<HTML><HRAD></HEAD><BODY><PRE>"
echo "-- START --"
自明なので略。
if ($?HTTP_COOKIE) then
2回目の訪問であれば、環境変数 HTTP_COOKIE に何かが入っているので、環境変数の存在を調べている。
本来であれば、環境変数の内容に「visit=on」と言う文字列があるかも調べるべき。
なぜなら、該当ページが初訪問なのに、他ページを閲覧した事により他ページのクッキーが存在すると「2度目の訪問」と判定されてしまうから。
実装する場合は、環境変数の存在を調べ、環境変数があった場合、その内容に「visit=on」と言う内容が含まれているかもチェックする。
echo "2回目以降の訪問"
else
echo "初めての訪問"
endif
echo "-- END --"
echo "</PRE></BODY></HTML>"
自明なので略。
このサンプルが参考になるかどうか判りませんが、頑張ってみて下さい。
大変丁寧なご回答をいただき感謝します。
じつは私はCGIもさっぱり苦手でカウンターを設置するのも悪戦苦闘した覚えがあります。
別方面でJS&cookieを利用する方法を模索していたところ、上手くいきましたので今回はそちらで行こうと思います。
chie65536さんの博識には敬服します。私がCGIを覚えた暁には利用させていただくこともあろうかと思います。ありがとうございました。
No.2
- 回答日時:
FLASHのアクションスクリプトに記述する方法はどうでしょうか?
ランダム関数か何かを使って毎回ムービーの初めに判定を行って変化させるのはどうでしょうか?
下にも書きましたがJS&cookieで上手くいきました。
回答ありがとうございました。
参考までに私の採った方法を‥‥
●<head>部に以下のscript記述
<script Language="JavaScript"><!--
function swapSWF(swfName)
{
swfTag = '<EMBED src="'+swfName+'" WIDTH="300" HEIGHT="300"></EMBED>';
document.getElementById("myMovie").innerHTML = swfTag;
}
// --></script>
●<body>部に以下を記述
<div id="myMovie">
<EMBED src="'01.swf'" WIDTH="300" HEIGHT="300"></EMBED>
</div>
<script language="JavaScript"><!--
function setCount(n)
{
document.cookie = "count="+n;
}
function getCount()
{
theName = "count=";
theCookie = document.cookie+";"
start = theCookie.indexOf(theName);
if (start != -1)
{
end = theCookie.indexOf(";",start);
count = eval(unescape(theCookie.substring(start+theName.length,end)));
swapSWF('02.swf');
setCount(count+1);
}else{
swapSWF('01.swf');
setCount(2);
}
}
getCount();
// --></script>
これで最初のアクセスと2回目のアクセスで01.swfと02.swfを切り替えます。
参考サイト:JavaScript例文辞典
http://www.openspc2.org/reibun/javascript/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- マルウェア・コンピュータウイルス FlashPlayerの削除とマルウェア感染について 5 2023/02/23 20:52
- デスクトップパソコン ホームページビルダー15 1 2023/05/30 12:30
- IT・エンジニアリング ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:29
- Visual Basic(VBA) ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:27
- 介護福祉士・ケアマネージャー・社会福祉士 ケアマネの居宅訪問及び担当者会議について 3 2023/01/13 23:41
- 教えて!goo 【朗報】ブロック機能Updateに伴い利用者をブロックすると対象者の質問も非表示になります。類似質問 12 2022/06/22 22:43
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- 医療・介護・福祉 家族の介護で訪問のサービスを利用する事がありますが、家に訪問する担当者から時々例えば「週一回の訪問を 4 2023/06/20 17:12
- Visual Basic(VBA) ActiveReportのサブレポート機能を利用したときに1ページ目の1サブレポート目が表示されない 1 2023/08/19 06:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
findstrのerrorlevel
-
switch()文で値の大小比較
-
shシェルスクリプト 空白行の...
-
変数の受け渡しによる画像の表示
-
PHPの文字列で変数の代わりに関...
-
PHP 四則演算について
-
PHPでカレンダーを作成する際の...
-
【PHP】define() て便利なよう...
-
<a href>タグ内のURL抽出
-
【C#】FindWindowExの使い方を...
-
cakephpで$paginatorにつけたい...
-
「取得先」という表現について
-
curlで取得出来るデータの制限...
-
セッションを維持したまま、サ...
-
セッションの破棄
-
開始と終了を指定して、その間...
-
[Excel]WEBページに、Excelの文...
-
×で表示されない
-
【C#】DataGridViewの最大列数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
findstrのerrorlevel
-
小数点以下0の非表示
-
syntax error, unexpected 'ech...
-
pdftkを使った処理をバッチファ...
-
phpでcookieがうまく保存されない
-
コマンドプロンプト フォルダ内...
-
XMLのタグの有無をPHPで判定し...
-
ゼロとNULLを区別して number_f...
-
バッチファイルで、全てのウィ...
-
Windowsのsetコマンドでの小数...
-
DBのハッシュ化したパスワード...
-
オブジェクトの中身の判定(PHP)
-
bashの関数の引数にスペースが...
-
訪問回数で表示するFLASHを変える
-
batファイルでPC名称の変更
-
print と echo の違い
おすすめ情報