【问题标题】:Facebook iFrame APP not working in IE, works on every other browserFacebook iFrame APP 无法在 IE 中运行,可在所有其他浏览器上运行
【发布时间】:2012-04-08 17:27:23
【问题描述】:

所以当我在 Internet Explorer 的 iFrame 中加载此页面时,我得到一个空白页面,其他所有浏览器都可以正常工作..

我也尝试过按照其他人的建议使用 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>

【问题讨论】:

  • 尝试将 HTML 标记的前两行更改为 &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; 不确定这是否有帮助,但 AFAIK Internet Explorer 对文档类型很敏感。
  • @Pateman 刚试了下还是不行,IE上的空白画布:(
  • 这个脚本中没有任何回应,所以你怎么可能期望显示一些东西呢?您是否检查过重定向是否有效?
  • @Pateman 它应该设置会话并将我发送到它不做的 home.php .. 它不应该像白页那样是空白画布,css 应该做它应该做什么并为页面提供背景颜色
  • 解决了吗?我也有类似的问题。

标签: facebook internet-explorer iframe


【解决方案1】:

您可能缺少 p3p 标头,导致您的浏览器在您的网站上不接受来自 Facebook 的 cookie。

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

http://www.admon.org/how-to-implement-p3p-http-headers-for-cross-site-cookies/了解更多信息。

【讨论】:

  • 第二个链接对我有帮助:header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"')
【解决方案2】:

尝试删除引用您的外部 css 文件的行并查看您的页面是否加载?

我刚刚解决了一个类似的问题。我设置了正确的 p3p 标头,并将问题缩小到 css。

有问题的 css 样式是 html,body 元素上的 position:relative; - 删除这个解决了 Facebook 将我的 iframe 显示为空白页面的问题。

如果删除所有 CSS 会在您的页面上显示某些内容,那么您可能需要逐步添加 CSS 以找出罪魁祸首,因为其他类型的 css 样式可能会破坏页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多