【问题标题】:Captcha Code not working in IE 8验证码在 IE 8 中不起作用
【发布时间】:2011-10-08 01:55:13
【问题描述】:

我有一个订单页面,人们可以在其中向我的公司提交订单。在他们提交订单之前,他们需要输入验证码。此订单页面位于我公司网站的框架页面中。当输入正确的代码时,订单应该被处理,但事实并非如此。如果输入错误代码,页面顶部会显示一条错误消息,指示代码错误:

<?php
if (!empty($_SESSION['wrong_security_code_message'])) {
echo '<p style="color:red;">'. $_SESSION['wrong_security_code_message'] . '</p>';
unset($_SESSION['wrong_security_code_message']);
}
?>

即使我输入了正确的代码,它也会显示错误消息。我不知道问题出在哪里。

【问题讨论】:

    标签: php captcha


    【解决方案1】:

    我想这是因为你忘记了session_start。使用会话时,您应该始终以 session_start 开头:

    session_start() 创建会话或恢复当前会话 通过 GET 或 POST 请求传递的会话标识符,或通过 饼干。

    <?php
    
    session_start();
    
    if (!empty($_SESSION['wrong_security_code_message'])) {
    echo '<p style="color:red;">'. $_SESSION['wrong_security_code_message'] . '</p>';
    unset($_SESSION['wrong_security_code_message']);
    }
    
    ?>
    

    更新

    我怀疑 P3P 可能是问题 => Cookie blocked/not saved in IFRAME in Internet Explorer

    【讨论】:

    • 即使使用 session_start():它也不起作用。当订单页面不在框架页面内时,它工作得很好。当页面位于框架内时,它不起作用。会不会跟这有关系。我必须在目录中有文件才能使验证码工作。我会假设这些文件必须放在我的公司网站上,我在我的框架页面中引用订单页面?
    • 如果你用isset()替换empty()怎么样?您能否使用curl -v 给我们提供详细的 curl 输出
    • 你在做跨域iframe吗?因为同源策略无法读取 cookie。
    • 也许吧。这个订单页面所在的目录在服务器上。在我拥有公司网站的另一台服务器上,我在框架页面中有订单页面。这是导致问题的原因吗?
    • @John,你不能隔离代码并共享一个完整的示例以在本地测试/共享吗?我认为同源政策太怪了..但我还不确定......
    猜你喜欢
    • 2012-09-30
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多