2012-04-08 1 views
0

그래서 인터넷 익스플로러에 iframe 내에이 페이지를로드 할 때 빈 페이지를 받고 메신저 다른 모든 브라우저에서 작동, 다른 모든 브라우저 페이스 북 iframe이 APP하지 IE에서 작업

가 나는 또한 P3P를 사용하여 시도 .. 잘 작동 헤더는 다른 사람들이 제안했지만 아무 소용이 없습니다.

<?php 
require ("connect.php"); 
require ("config.php"); 
require ("fb_config.php"); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
    <title>Login handler</title> 
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
    <link rel="stylesheet" href="css/login.css" type="text/css"> 
    </head> 
    <body> 

    <?//=$user?> 
    <?php 


if($user == 0) { 
echo "You are not logged into facebook. Nice try."; 
}else{ 


$query = "SELECT id,fb_id,login_ip,login_count,activated,sitestate FROM login WHERE fb_id='".mysql_real_escape_string($user)."'"; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_array($result); 

     if (mysql_num_rows($result) == 0) { 
    $sql = "INSERT INTO login SET id = '', fb_id ='" .mysql_real_escape_string($user). "', name = '" .rand(10000000000000000,99999999999999999999). "', signup =NOW() , password = '" .mysql_real_escape_string($pass). "', state = '0', mail = '" .mysql_real_escape_string($_POST['mail']). "',location='".mysql_real_escape_string($randomlocation)."',location_start='".mysql_real_escape_string($randomlocation)."', signup_ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',ref='".mysql_real_escape_string($_POST['ref'])."', activation_id = '" .mysql_real_escape_string($activation_link). "',activated='2', killprotection = '$twodayprot',gender='" .mysql_real_escape_string($_POST["gender"]). "'"; 
    $res = mysql_query($sql); 
    } 


     //if($row['fb_id'] != $user){ 
     //echo "Your facebook ID: $user is NOT in the MW DB."; 
     //exit(); 
     //}else{ 


     if(empty($row['login_ip'])){ 
     $row['login_ip'] = $_SERVER['REMOTE_ADDR']; 
     }else{ 

     $ip_information = explode("-", $row['login_ip']); 

     if (in_array($_SERVER['REMOTE_ADDR'], $ip_information)) { 
     $row['login_ip'] = $row['login_ip']; 
     }else{ 
     $row['login_ip'] = $row['login_ip']."-".$_SERVER['REMOTE_ADDR']; 
     } 
     } 

$update_login = mysql_query("UPDATE login SET login_count=login_count+'1' WHERE name='".mysql_real_escape_string($_POST['username'])."'") 
or die(mysql_error()); 

$_SESSION['user_id'] = $row['id']; 

$result = mysql_query("UPDATE login SET userip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',login_ip='".mysql_real_escape_string($row['login_ip'])."',login_count='0' WHERE id='".mysql_real_escape_string($_SESSION['user_id'])."'") 
or die(mysql_error()); 


if ($row['sitestate'] == 0){ 
header("location: home.php"); 
} elseif ($row['sitestate'] == 2) { 
header("location: killed.php?id={$row['id']}&encrypted={$row['password']}"); 
} else { 
header("location: banned.php?id={$row['id']}&encrypted={$row['password']}"); 
} 

}// id check. 


?> 
    </body> 
</html> 
+0

HTML 마크 업의 처음 두 줄을 ' AFAIK Internet Explorer가 doctype에 민감한 지 여부는 확실하지 않습니다. – Pateman

+0

@Pateman 그냥 시도해도 IE에서 빈 캔버스가 표시됩니다. ( – Roca

+0

이 스크립트에는 아무 것도 표시되지 않으므로 표시 할 방법이 있습니까? 리디렉션이 작동하는지 확인 했습니까? – Pateman

답변

1

p3p 헤더가 누락되어 브라우저가 사이트의 Facebook 쿠키를 허용하지 않을 수 있습니다.

http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx

또는 자세한 내용은 http://www.admon.org/how-to-implement-p3p-http-headers-for-cross-site-cookies/ 참조하십시오.

+0

두 번째 링크는 저에게 도움이되었습니다. header ('P3P : CP = "CURa ADMa DEVA PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR" ') – Matt

0

외부 CSS 파일을 참조하는 행을 삭제하고 페이지가로드되는지 확인해주세요.

나는 비슷한 문제를 해결했다. 올바른 p3p 헤더를 설정했는데 문제가 css로 좁혀졌습니다.

문제가되는 CSS 스타일은 html body 요소에 position:relative;입니다.이 문제를 해결하면 Facebook의 iframe을 빈 페이지로 표시하는 문제가 해결되었습니다.

모든 CSS를 제거하면 페이지에 무언가가 표시됩니다. CSS를 추가하면 단계별로 CSS를 추가하여 다른 종류의 CSS sytle이 페이지를 손상시킬 수 있으므로 범인을 찾으십시오.