ページモニタコンテナ実装記録
8036 ワード
タイトルを见て私も马鹿になって、感じはつまり私自身がすべて文识の义を见ることができないので、仕方がなくて、先に私に多くの笔墨を说明させます.
シーン:当社は别の会社のホームページゲームに加盟して、彼らは入り口を提供して、私达はユーザー名のパスワードのポイントを伝えて、入り口の検证を通じて(通って)后で、ゲームのページに回転します.ユーザーにとって、ゲームはうちの会社が提供したようで、違和感はありません.しかし、私たちの仕事にとって、問題があります.ユーザーが自分からゲームを終了しないでそこに掛けたり、自社のゲーム入口からログインしなくなったりした場合、しばらくの間、ユーザーのポイント残高は別の会社のプラットフォームに残っています.こちらでは毎日お会計をしなければなりません.そうすれば、勘定が合わなくなります.
難点:ドメイン間の問題を解決する必要があります.
ソリューション:自社側にコンテナページを提供し、兄弟会社からのコンテンツはこのコンテナ内に配置されます.コンテナ内のページが1時間(もちろん構成可能)で何の動きもない場合(マウスイベントが監視されていない場合)は、自分のプラットフォームに移動してページを閉じるか、ページが閉じられたときにポイントに移動する要求を発行します.
具体的な実装:
方案1:自分でサーバーの上の仲介を書いて、当社のページは本サーバーの上で兄弟の会社の内容を取得して、仲介は類似のホームページのつかみ方を通じてホームページの内容を取得して、このようにドメインをまたぐ問題を解決します.しかし、ゲームのページは複雑すぎて、多くのリソースはホームページのloadが終わってからloadしなければなりません.そして、経路の問題もあります.頭が痛いと思います.もういいです.
シナリオ2:iframeに完全に捨てる.問題は、IE 6/IE 7でサポートされているP 3 P(Platform for Privacy Preferences Project(P 3 P)specification)プロトコルが第三者のプライバシーのないセキュリティ宣言をデフォルトで阻止するクッキーであり、FirefoxではP 3 Pのセキュリティ特性がまだサポートされていないため、firefoxでは当然この問題は存在しない.解決策はhttp://www.cnblogs.com/SeaSun/archive/2013/02/05/2892817.htmlを参照し、埋め込むコンテンツ(iframeが指すサイト)にP 3 Pのホストヘッダ宣言を出力し、具体的に実現する
a, Container.phpは、主にiframeを容器として含む.ここにはiframeが内容に合わせて自動的に大文字を調整する問題があり、いろいろなキックアスの案を参考にした後、兄の台の特別なお得な簡単さがあり、具体的には以下のページを参考にして、jsコードに関係なく、phpコードを削除した後、彼の簡単な実用的な解決方法です.jquery.iframetracker.jsはページを監視するライブラリに使用され、googleすることができます.getCredit.phpは積分取り戻しを処理するためのページである.
シーン:当社は别の会社のホームページゲームに加盟して、彼らは入り口を提供して、私达はユーザー名のパスワードのポイントを伝えて、入り口の検证を通じて(通って)后で、ゲームのページに回転します.ユーザーにとって、ゲームはうちの会社が提供したようで、違和感はありません.しかし、私たちの仕事にとって、問題があります.ユーザーが自分からゲームを終了しないでそこに掛けたり、自社のゲーム入口からログインしなくなったりした場合、しばらくの間、ユーザーのポイント残高は別の会社のプラットフォームに残っています.こちらでは毎日お会計をしなければなりません.そうすれば、勘定が合わなくなります.
難点:ドメイン間の問題を解決する必要があります.
ソリューション:自社側にコンテナページを提供し、兄弟会社からのコンテンツはこのコンテナ内に配置されます.コンテナ内のページが1時間(もちろん構成可能)で何の動きもない場合(マウスイベントが監視されていない場合)は、自分のプラットフォームに移動してページを閉じるか、ページが閉じられたときにポイントに移動する要求を発行します.
具体的な実装:
方案1:自分でサーバーの上の仲介を書いて、当社のページは本サーバーの上で兄弟の会社の内容を取得して、仲介は類似のホームページのつかみ方を通じてホームページの内容を取得して、このようにドメインをまたぐ問題を解決します.しかし、ゲームのページは複雑すぎて、多くのリソースはホームページのloadが終わってからloadしなければなりません.そして、経路の問題もあります.頭が痛いと思います.もういいです.
シナリオ2:iframeに完全に捨てる.問題は、IE 6/IE 7でサポートされているP 3 P(Platform for Privacy Preferences Project(P 3 P)specification)プロトコルが第三者のプライバシーのないセキュリティ宣言をデフォルトで阻止するクッキーであり、FirefoxではP 3 Pのセキュリティ特性がまだサポートされていないため、firefoxでは当然この問題は存在しない.解決策はhttp://www.cnblogs.com/SeaSun/archive/2013/02/05/2892817.htmlを参照し、埋め込むコンテンツ(iframeが指すサイト)にP 3 Pのホストヘッダ宣言を出力し、具体的に実現する
if (Request.Browser.Browser.ToUpper().Contains("IE"))
Response.Headers.Add("P3P", "CP=CAO PSA OUR");
:
a, Container.phpは、主にiframeを容器として含む.ここにはiframeが内容に合わせて自動的に大文字を調整する問題があり、いろいろなキックアスの案を参考にした後、兄の台の特別なお得な簡単さがあり、具体的には以下のページを参考にして、jsコードに関係なく、phpコードを削除した後、彼の簡単な実用的な解決方法です.jquery.iframetracker.jsはページを監視するライブラリに使用され、googleすることができます.getCredit.phpは積分取り戻しを処理するためのページである.
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 14-7-1
* Time: 3:31
*/
require_once ("./global.php");
$gameUrl=$_SESSION["gameUrl"];
$ar = array('gameUrl' => $gameUrl);
$html = <<<HTML
<head>
<title></title>
<style>
<!-- iframe -->
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
overflow: hidden;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.iframetracker.js"></script>
<script type="text/javascript" language="javascript">
var activeTime = new Date();
var interHMTime = 60*60*1000;//3600000
function onContentLoad(parameters) {
setCwinHeight();
onContentClick();
}
///// iframe
function setCwinHeight() {
var iframeid = document.getElementById("iframepage"); //iframe id
if (document.getElementById) {
if (iframeid&&!window.opera) {
if (iframeid.contentDocument && iframeid.contentDocument.body.offsetHeight) {
iframeid.height = iframeid.contentDocument.body.offsetHeight;
} else if (iframeid.Document && iframeid.Document.body.scrollHeight) {
iframeid.height = iframeid.Document.body.scrollHeight;
}
}
}
}
function onContentClick() {
//window.frames['iframepage'].document.body.onclick = function () {
// activeTime = new Date();
//alert(activeTime.getMinutes());
//};
$("#iframepage").iframeTracker({
blurCallback: function(){
activeTime = new Date();
},
_overId: null
});
}
window.onbeforeunload = function (e) {
window.open("getCredit.php", '_blank');
window.open("getCredit.php", '_self');
};
function monitor() {
var curDate = new Date();
var differHMs = curDate.getTime() - activeTime.getTime(); //
if (differHMs > interHMTime) {
window.location.href = "getCredit.php";
}
}
setInterval(monitor,3600000);
</script>
</head>
<body>
<div id="container">
<iframe src="{$ar['gameUrl']}" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" width="100%" height="100%" id="iframepage" name="iframepage" onload="onContentLoad()"></iframe>
</div>
</body>
HTML;
echo $html;
?>