• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:携帯への参照制限)

携帯への参照制限

このQ&Aのポイント
  • ダウンロードサイトで広告をクリック後に目的のページに進める仕組みを構築したい
  • 携帯の制約により、POPUPやフレーム機能は使用できず、特定の順番でページにアクセスする必要がある
  • 良い方法がないか相談したい

質問者が選んだベストアンサー

  • ベストアンサー
  • aki-kun
  • ベストアンサー率50% (38/75)
回答No.3

下のプログラムはPerlですかね。私もプログラムに関してはそれ程詳しいわけではないのですが、 index.htmlからリンク(1)にアクセスする過程においてHAYATE-chiさんの管理下のCGIを通過すれば、リンク(1)をクリックしたかどうかがHAYATE-chiさんの方で把握できます。 そういった意味で、index.htmlに直接リンク(1)のURLを貼り付けないで、まずHAYATE-chiさんのCGIにアクセスさせ、そこでLocationなどを使ってリンク(1)へアクセスさせないとリンク(1)をアクセスしたかどうかの確認ができないという意味です。 順番のイメージとしては、 index.html→HAYATE-chiさんのCGI→リンク(1) その後index.htmlに戻ってから リンク(2) というカンジですよね。 上記イメージを詳説すると、index.htmlでまずクリックさせるのは、リンク(1)ではなくてHAYATE-chiさんのCGIです。 そのCGIでは、アクセスがあった事・アクセス時刻や端末情報など(※)を記録した上で print "Location: $link1\n\n"; # リンク(1)へ します。 次に、リンク(2)のCGIの方では、 先程のHAYATE-chiさんのCGIで記録したモノを参照して リンク(1)へアクセスされた記録があればリンク(2)を返し、 リンク(1)へアクセスされた記録がなければエラーページ等を表示するカンジですかね。 ただ、主な閲覧者が携帯という事になりますと、個々の閲覧者を特定するのは難しいと思います。 上記の >アクセス時刻や端末情報など(※) の部分ですが、携帯はアクセスの度にIPが変わったと思います。また、お察しの通りクッキーにも対応していません。 その代わり携帯は固体識別情報などを送出させて識別させるか、 またはindex.htmlのファイルに付けるリンクのURL HAYATE-chiさんのCGIとリンク(2)にそれらを識別するセッションIDなどを埋め込む必要があります。 (index.htmlに埋め込むURLの例) HAYATE-chiSAN.cgi?sessionid=hi6wH8 link2.cgi?sessionid=hi6wH8 など。 hi6wH8 部分はindex.htmlアクセスの度にランダムに生成してリンク(1)とリンク(2)に同じものを埋め込む必要があると思いますので、index.html自体もCGIなどにする必要がありますね。 固体識別番号は私は詳しく知らないのですが ボーダフォンはuser agentに埋め込まれていますが AUとドコモはサーバ側(CGI・html側)で要求し、閲覧者が送出するひつようがあったと思いますが、この辺は間違ってたらスイマセン。 そういった事が難しい場合は、 >アクセス時刻や端末情報など(※) の部分で、簡易なものとして 端末のユーザーエージェントで区別したり リンク(1)アクセス後一定時間内のみリンク(2)へのアクセスを認める といったカンジになると思います。

HAYATE-chi
質問者

お礼

aki-kunさんご回答ありがとうございました。 大体のイメージをつかむことができ、これからどのようにしていけばよいのか、把握することができました。 大変分かりやすいご回答をありがとうございました。 これから、自分なりに頑張ってみようと思います。 また、分からないことがありましたら、新規に質問をさせいていただくかもしれませんので、その時はまたよろしくお願い致します。

その他の回答 (2)

  • aki-kun
  • ベストアンサー率50% (38/75)
回答No.2

それでしたら、 index.htmlからCGIにリンクし、 Location(URLを返すものです)でリンク(1)を返せば通常はいけるはずですよ。 その、CGIが実行された事を質問者さんが設置したCGI(リンク(2))で確認して結果を返すようにすればよいと思いますがいかがでしょう? リンク(2)のCGIに、初めに書いた機能を内蔵してもいいですね。 もう少し詳しく補足してもらえないとこの程度のアドバイスしかできないと思いますがいかがでしょうか。

HAYATE-chi
質問者

補足

aki-kunさんご回答ありがとうございます。 「Locationって(URLを返すものです)でリンク(1)を返せば…」とは、どのような意味ですか?Locationって、行き際のURLを指定するものですよね?index.htmlからCGIへアクセスして、リンク(1)かリンク(2)か振り分けるという意味でしょうか? #! /usr/local/bin/perl $COOKIENAME = "count"; # クッキー名 $COOKIELIFE = 30; # クッキー保存日数 $count = 0; # クッキーデータ取り込み foreach $pair (split(/;\s*/, $ENV{'HTTP_COOKIE'})) { my ($name, $cookie) = split(/=/, $pair); if($name eq $COOKIENAME) { $count = $cookie; last; } } # クッキーデータ作成 $count++; # 訪問回数+1 @mon = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @wdy = qw(Sun Mon Tue Wed Thu Fri Sat); $life = $COOKIELIFE * 24 * 60 * 60; ($sec, $min, $hour, $day, $mon, $year, $wday) = gmtime(time + $life); $expires = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $wdy[$wday], $day, $mon[$mon], $year + 1900, $hour, $min, $sec); #リンクの指定 $link1 = 'index1.html'; $link2 = 'index2.html'; # HTML出力 print "Content-type: text/html\n"; print "Set-Cookie: $COOKIENAME=$count; expires=$expires;\n"; # クッキー保存 if ($count<=1) { print "Location: $link1\n\n"; # リンク(1)へ } else { print "Location: $link2\n\n"; # リンク(2)へ } -------------------------- ↑こんなイメージでしょうか?見よう見真似で、私なりに努力したものの、何分スクリプト構築の知識がないため、かなりツギハギになっていますが…。また、残念ながら携帯はCookie非対応のようですし…; 補足としては、 変更可能なものは、inde.htmlとリンク(2)のみ。リンク(1)はURL,スクリプトの変更不可。サーバーはCGI・php使用可。携帯で動作可能なこと。 …あまり補足になっていませんが; 何分、私の知識が不十分なため、どのような補足が必要なのかも分かりません;申し訳ありませんが、もう少し噛み砕いてご説明を頂いてもよろしいでしょうか?

  • aki-kun
  • ベストアンサー率50% (38/75)
回答No.1

可能な事ではありますが、HAYATE-chiさんの状況によっては無理な事もありますので とりあえず補足要求ってカンジかな。 はじめからリンク(1)にリンク(2)をつければいいんでしょうけど、それができないからご質問されているんですよね。 最低限必要だと思った事は、 実現しようとしているサーバでCGI等が許可されていること。 HAYATE-chiさんがその知識をある程度お持ちである事。 その場合はすぐできると思いますがどうでしょうか。 その、「あるページ」というのは広告とかランキングサイト等ですか?それとも自己の管理下のHTMもしくはCGIでしょうか。できれば同じサーバ内だと一番簡単そうですね。 広告の場合は、その形式にもよると思います。

HAYATE-chi
質問者

補足

ご記入ありがとうございます。 以下補足です。 サーバはCGI使用可です。 リンク(1)、リンク(2)、index.htmlについてですが、リンク(1)は他のサイトで変更不可能なモノ(CGIもしくはphp)。リンク(2)は当方が設置しているCGIです。変更可能なものはindex.htmlとリンク(2)のみです。

関連するQ&A