Php 验证码可以在本地工作,但不能在服务器上工作!

Php 验证码可以在本地工作,但不能在服务器上工作!,php,session,post,captcha,unset,Php,Session,Post,Captcha,Unset,我有一个很烦人的问题。我有一个captcha系统,可以在我的本地网络设置中使用xammp,但是它不能在我的远程linux机器上使用。我知道captcha.php文件会以某种方式重新加载,但我尝试删除我的google分析javascript,但仍然无法工作 这是我的html: <div class="box"> <h2>Captcha</h2> <div class="bloc

我有一个很烦人的问题。我有一个captcha系统,可以在我的本地网络设置中使用xammp,但是它不能在我的远程linux机器上使用。我知道captcha.php文件会以某种方式重新加载,但我尝试删除我的google分析javascript,但仍然无法工作

这是我的html:

<div class="box">
                    <h2>Captcha</h2>
                    <div class="block">
                        <p>Are you human? Type in the text bellow to prove it.</p>  
                        <table><form action="homepage.php" method="post">

                        <tr>
                            <td><img src="captcha.php?width=120&height=40&characters=5" /></td>
                            <td>
                                <label for="security_code">Security Code:</label><input id="security_code" name="security_code" type="text" />
                            </td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td>

                            <td><input type="submit" name="human" value="Submit" /></td>
                        </tr>
                        </form></table>

                    </div>
                </div
编辑:

好的,我在html中添加了以下内容:

<input type="submit" name="test" value="test" />

在本地单击test时,我会在图像中显示由captcha.php生成的代码。但是,在服务器上,它显示一个随机数。。这怎么可能?如果我发现更多信息,我将更新我的帖子。检查您的主机上是否安装了GD

<?php
phpinfo();
?>
一个phpinfo会告诉你的


检查标题为“GD”的部分,如果没有,则无法创建图像。

我修复了它:从未理解该错误,但意识到captcha.php文件已加载并以某种方式更改了会话变量。所以我把这个添加到验证码中

    if( isset($_SESSION['security_code']) ){
        return $_SESSION['security_code']; 
    }
我移除了所有的

unset($_SESSION['security_code'])

现在,如果设置了会话代码,则图像代码和会话代码保持不变。这可能是一个安全风险,因为用户可以强制验证码,但我不认为用户会走那么远来破坏安全性

嘿,我也有同样的问题,但我已经解决了我的问题。我的代码不同,但有相同的问题。我已将我的验证码生成代码放在验证码文件夹中,此时验证码代码不匹配。但是,当我从该文件夹中删除所有代码并将所有代码放在根文件夹中时,效果会很好。这可能会帮助您…

这个问题真的很糟糕,幸运的是解决方法很简单。转到:

/wp-config.php
并找到第39行左右,注释掉此函数调用:

// Turn register_globals off.
//wp_unregister_GLOBALS();
Worpress将不再杀死你的$会话变量。顺便说一句,如果您在服务器上关闭了register\u globals,Worpress也会让您的$\u会话生效。。奇怪:


WP支持论坛的积分

仅通过查看代码就很难调试。这需要一些现场调试:是否传输表单变量,是否设置会话变量等。也请更清楚地定义哪些不起作用。是的,我假设图像生成,因此请详细说明:生成图像是的。发送表单变量。我认为这可能与会话变量有关。我正试图找到一种方法来验证这一点。这是猜测得出的答案。只有在收到特定错误消息后,才能检查是否安装了GD。向他们展示如何获得这样的信息会更有帮助
unset($_SESSION['security_code'])
/wp-config.php
// Turn register_globals off.
//wp_unregister_GLOBALS();