Captcha仅在页面刷新时加载

时间:2012-08-27 18:53:37

标签: php

我遇到了一个非常令人沮丧的问题,我似乎无法找到根本原因。我正在尝试在这里找到一个简单的验证码:https://github.com/claviska/simple-php-captcha

代码从github不变,并按照说明添加到我的网站。使用IE 8时,图像显示为损坏的图像,但如果我刷新页面(F5),则会神奇地显示图像。 Firefox和Chrome甚至Safari都没有显示图像的问题。我不知道为什么它在进入网页时显示为断开。我花了几天时间研究,很遗憾。

非常感谢任何帮助。

编辑: 我一直在密切关注php日志,并注意到函数似乎被调用了两次。在进入页面时,一切都很好并且生成了图像。但是,在进入页面和最终加载之间,再次调用该函数,浏览器正在尝试显示脚本创建的第一个图像,该图像已在此时被销毁。这只发生在IE中,这就是为什么我很困惑。

用于测试的代码:

<?php
session_start();
$_SESSION = array();
include("captcha.php");
$_SESSION['captcha'] = captcha();
?>

<html>
<body>
<table>
     <tr>
        <td width="45%"><?php echo ('<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA" />'); ?></p></td>
        <td width="4%">:</td>
        <td><input name="captcha" type="text" id="captcha" required><b><font color="red"> *</font></b></td>
     </tr>
</table>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

这是一种疯狂的预感,它可能无效。尝试将代码更改为:

session_start();
include("captcha.php");
$captcha = captcha();
$_SESSION['captcha'] = $captcha['code'];
session_write_close();

然后在HTML中,将网址称为$captcha['image_src']。试图确保这不是会话锁定问题。