Php 验证码可以在本地工作,但不能在服务器上工作!
我有一个很烦人的问题。我有一个captcha系统,可以在我的本地网络设置中使用xammp,但是它不能在我的远程linux机器上使用。我知道captcha.php文件会以某种方式重新加载,但我尝试删除我的google分析javascript,但仍然无法工作 这是我的html: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
<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> </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();