확실하지합니다.
내가 변경 스크립트는 여기에서있다 : 는 http://snippets.bluejon.co.uk/check4-js-and-cookies/check4-js-enabled-v2-phpcode.php
기본적 아이디어는, 결과는 당신을 JavaScript가 활성화되어 있으면 ... 그러나, 아이디어는 수 알려줍니다 현재 URL을 참조하는 양식을 제출 자바 스크립트를 사용하는 것입니다 iframe에 자바 스크립트가 true를 반환하는 경우에만 양식을 제출하도록 쉽게 변경할 수 있습니다. 그런 다음 $ _POST 데이터를 양식에 전달하여 $ _POST 데이터가 넘겨 지도록 할 수 있습니다 ($ _POST 데이터가 응용 프로그램의 표시 레이어 내에서 참조되는 경우에만 필요함). 여기에 기본적인 아이디어 :
<?php
/* Include head of your application goes here, this should do whatever
session handling code you have and all processing done to the $_POST variables */
// ~~~~~~Full Url Function - Works With Mod_Rewrite~~~~~~~~~ //
// important thing is function will grab all $_GET vars
function fullurlnav()
{
$fullurlsortnav = 'http';
$script_name = '';
if(isset($_SERVER['REQUEST_URI']))
{
$script_name = $_SERVER['REQUEST_URI'];
}
else
{
$script_name = $_SERVER['PHP_SELF'];
if($_SERVER['QUERY_STRING']>' ')
{
$script_name .= '?'.$_SERVER['QUERY_STRING'];
}
}
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on')
{
$fullurlsortnav .= 's';
}
$fullurlsortnav .= '://';
if($_SERVER['SERVER_PORT']!='80')
{
$fullurlsortnav .=
$_SERVER['HTTP_HOST'].':'.$_SERVER['SERVER_PORT'].$script_name;
}
else
{
$fullurlsortnav .= $_SERVER['HTTP_HOST'].$script_name;
}
return $fullurlsortnav;
}
// ~~~~~~~~~~~End Full URL Function~~~~~~~~~ //
?>
<html>
<body>
<?php
// Only run this check if user has been identified as a facebook user in their session
// or if they've been identified via the $_POST['signed_request'], which facebook sends
// upon first request via iframe.
// Doing this removes the check when it's unneeded.
if (!isset($_POST['inIframe']) && (isset($_SESSION['inIframe']) || isset($_POST['signed_request'])))
{
?>
<form name="postJs" action="<?php echo fullurlnav(); ?>" method="post">
<input type="hidden" name="inIframe" value="1">
<?php
// Carry over $_POST
foreach($_POST as $key => $value)
{
echo '<input type="hidden" value="'.$value.'" name="'.$key.'" />';
}
?>
</form>
<script type="text/javascript">
<!--
// If in an iframe
if (top !== self)
{
document.postJs.submit();
}
//-->
</script>
<?php
}
elseif(isset($_POST['inIframe']) && (isset($_SESSION['inIframe']) || isset($_POST['signed_request'])))
{
$_SESSION['inIframe']=1;
}
else
{
$_SESSION['inIframe']=0;
}
if ($_SESSION['inIframe']== 1){
echo 'IS in an Iframe';
}else{
echo 'IS NOT in an Iframe';
}
// echo out rest of your template code
?>
</body>
</html>
그것은 당신의 페이지 표시 코드 출력 주위에 조금 까다로운 스케이트를 얻을하고 동작을하지만 그건 내가 지금까지 가지고있는 기본적인 생각입니다. 기술적으로 폼 생성 블록을 아래의 elseif 문과 분리하여 디스플레이 출력 전에 코드 위에있는 것을 사용하면 처리하기가 더 쉽습니다. 위의 코드는 테스트되지 않았으므로 같은 문제가있는 다른 사람들을위한 기본적인 아이디어를 제공하기 위해 제공되었습니다.
예, 작동 할 수도 있습니다. 초기 페이지로드는 모바일 사이트 디자인을 통해로드하라는 페이스 북 $ _POST var을 수신 할 수 있습니다. 그런 다음 ajax 스크립트는 각 페이지 요청을 실행하여 여전히 페이스 북에서 보내는 플래그를 보낼 수 있습니다. 그러나 여전히 식별을 위해 한 페이지 지연이 발생할 수 있으므로 서버 측과 같은 실제 페이지로드 전에 플래그를 보내도록하는 것이 바람직하지만 가능하지는 않습니다. 그러나 그것은 지금까지 보아온 최고의 아이디어입니다. 다른 아이디어에도 여전히 열려 있지만, 방법을 사용하여 조사 할 것입니다. –