Postcha变量值为验证码

时间:2013-09-10 09:02:46

标签: php javascript

我想要$ code变量的值来到我的另一页--- captcha.php。

captcha_image.php 


$captcha = new CaptchaCode();  //class defined in captcha_code.php
$code = str_encrypt($captcha->generateCode(6));  //function defined in captcha_code.php
$captcha1 = new CaptchaImages();
$captcha1-> GenerateImage($width,$height,str_decrypt($code));


captcha.php

<img style="cursor: pointer;width: 50px;height: 50px;" src="refresh.png" onclick="refresh_captcha();"/>
<input type="hidden" name="security_check" value="<?php echo $code; ?>">  // want value of $code here

<script type="text/javascript">
function refresh_captcha()
{
    var img = document.getElementById('captcha_img');
    img.src = 'captcha_images.php';
    jQuery("#captcha_img").attr("src",img.src);
}
</script>

我不能在我的代码中包含captcha_images.php文件,甚至不希望它使用会话来完成,尝试这种方式。如果有人有解决方案,请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

更好的解决方案是将代码保存到SESSION。

例如:

captcha_image.php:

session_start();
$captcha = new CaptchaCode();
$code = $captcha->generateCode(6);
$captcha1 = new CaptchaImages();
$captcha1-> GenerateImage($width,$height,$code);
$_SESSION["captchacode"] = $code;

在提交表格后检查正确性:

session_start();
...
if($_SESSION["captchacode"]!=$_POST["security_check"]){
    echo "Wrong captcha!";
}else{
    // captcha is correct, process the form
}

答案 1 :(得分:0)

如果您无法使用Cookie和会话,则无法从captcha_image.php获取仅返回图像的信息。您必须在else请求中生成信息,例如:

<img id="captcha_img" src="captcha_images.php?encoded_code=<?php echo $code ?>" onclick="refresh_captcha();"/>
<input type="hidden" id="captcha_hidden" name="security_check" value="<?php echo $code ?>">
<script type="text/javascript">
function refresh_captcha()
{
    // generate_captcha.php returns only encoded captcha
    $.get('generate_captcha.php', function(encoded_code) {
        $('#captcha_hidden').val(encoded_code);
        $('#captcha_img').attr("src","captcha_images.php?encoded_code="+encoded_code);
    });
}
</script>

此处generate_captcha.php返回已编码的验证码,captcha_images.php不生成代码,仅解码来自参数encoded_code的代码,此代码也会插入隐藏。