性格いい人が優勝

TOPページにFLASHコンテンツを設置しているのですが、初回訪問時と2回目以降の訪問で表示するFLASHを違ったものにしたいと思っています。
JAVAScriptとcookieを利用すれば出来そうな気はするのですが、どちらも利用したことがなくちんぷんかんぷんで困っています。
利用できそうなサンプルなどありましたら教えて下さい。

A 回答 (2件)

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>"
自明なので略。

このサンプルが参考になるかどうか判りませんが、頑張ってみて下さい。
    • good
    • 0
この回答へのお礼

大変丁寧なご回答をいただき感謝します。
じつは私はCGIもさっぱり苦手でカウンターを設置するのも悪戦苦闘した覚えがあります。
別方面でJS&cookieを利用する方法を模索していたところ、上手くいきましたので今回はそちらで行こうと思います。
chie65536さんの博識には敬服します。私がCGIを覚えた暁には利用させていただくこともあろうかと思います。ありがとうございました。

お礼日時:2004/04/16 15:41

FLASHのアクションスクリプトに記述する方法はどうでしょうか?


ランダム関数か何かを使って毎回ムービーの初めに判定を行って変化させるのはどうでしょうか?
    • good
    • 0
この回答へのお礼

下にも書きましたが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/

お礼日時:2004/04/16 15:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!