4

出于某种原因,以下内容会在 IE 中导致重定向循环,但在 Chrome 或 Firefox 中不会。

<?php
if (isset($_POST['a']) OR strlen($_POST['a'])>0)
    {
    die($_POST['a']);
    }
?>
<html>
<head>
<script type="text/javascript" src="fpjs2.js"></script>
</head>
<body>
<form name="fbif" id="fbif" action="checkcookie.php" method="POST">
<input type="hidden" name="a" value="" />
</form>
<script>
var ec = new MyObject();
ec.get("fbuid", function(value) {
    document.fbif.a.value=value; 
    document.fbif.submit();
});
</script>
</body>
</html>

该脚本称为 checkcookie.php,它会检查 cookie 的存在(这不是问题,不要继续讨论或尝试建议我如何最好地执行此操作),然后将其发布回同一个脚本。顶部的 PHP 应该检测是否已发布某些内容,如果是,则仅显示发布变量并退出(不要加载脚本的其余部分)。

在 Chrome 和 Firefox 上,这可以完美运行。在 IE 上它会无休止地重定向。所以似乎 IE 没有发布变量,而只是一遍又一遍地重新加载自己。

4

1 回答 1

0

在我看来你是对的,在 IE 上它不会发布“a”变量,但它应该发布表单。所以我敢打赌,问题出在你的 javascript 和与 IE 的兼容性上。

我会尝试不发布表单,而是尝试检查它是否返回您认为它应该返回的值,mbyalert(value);或仅评论提交函数并检查输入是否获得了值。

编辑:isset($_POST['a']) OR strlen($_POST['a'])>0=>isset($_POST['a'])与 strlen($_POST['a'])>0 为真的效果完全相同,那么 isset($_POST['a']) 也为真。

于 2012-08-17T14:09:42.833 回答