我创建了基于教程的验证码。本教程使用主页面中的会话变量和单独的php文件(用于创建验证码图像)来创建验证码。本教程使用rand()创建使用substr()修剪它的代码。这是本教程的link。创建按钮,刷新验证码
检查验证码,教程使用的请求,我不明白,因为我是新的编码在PHP,JavaScript和jQuery的。所以,我做了什么是我创建了一个函数,追加数组的元素,然后把它放在一个会话变量。然后在单独的php文件中,我删除了rand()和substr(),并使用会话变量作为代码。我还将用于验证的图像的data-attr-captcha
中的数组中的代码值保存起来。
现在,我想创建一个“刷新captcha按钮”,但我无法弄清楚该怎么做。我是否需要在PHP或JavaScript上做到这一点?我想自己做,而不是依靠reCaptcha。
其如此令人沮丧,我不能在单独的PHP文件
这里添加任何东西我的相关PHP代码:
$_SESSION["security_code"] = createCaptchaImg();
function createCaptchaImg(){
$strArr = array("1","2","3","4","5","6",
"7","8","9","0","a","b",
"c","d","e","f","g","h",
"i","j","k","l","m","n",
"o","p","q","r","s","t",
"u","v","w","x","y","z");
$captchaLen = 5;
for($x = 0; $x < $captchaLen; $x++){
$y = $strArr[rand(0, sizeOf($strArr))];
$captchaTxt .= $y;
}
return $captchaTxt;
}
单独的PHP文件:
<?php
//Start the session so we can store what the security code actually is
session_start();
//Send a generated image to the browser
create_image();
exit();
function create_image(){
$security_code = $_SESSION["security_code"];
//Set the image width and height
$width = 100;
$height = 20;
//Create the image resource
$image = ImageCreate($width, $height);
//We are making three colors, white, black and gray
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
$grey = ImageColorAllocate($image, 204, 204, 204);
//Make the background black
ImageFill($image, 0, 0, $black);
//Add randomly generated string in white to the image
ImageString($image, 60 , 30, 3, $security_code, $white);
//Throw in some lines to make it a little bit harder for any bots to break
//ImageRectangle($image, 0, 0, $width-1, $height-1,$grey);
imageline($image, 0, $height/2, $width, $height/2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey);
//Tell the browser what kind of file is come in
header("Content-Type: image/jpeg");
//Output the newly created image in jpeg format
ImageJpeg($image);
//Free up resources
ImageDestroy($image);
}
function createCaptchaImg(){
$strArr = array("1","2","3","4","5","6",
"7","8","9","0","a","b",
"c","d","e","f","g","h",
"i","j","k","l","m","n",
"o","p","q","r","s","t",
"u","v","w","x","y","z");
$captchaLen = 5;
for($x = 0; $x < $captchaLen; $x++){
$y = $strArr[rand(0, sizeOf($strArr))];
$captchaTxt .= $y;
}
return $captchaTxt;
}
?>
图像和刷新按钮:
<div class="form-group">
<label for="regCaptchaImg" class="col-lg-2 col-lg-offset-3 col-md-2 col-md-offset-3 col-sm-2 col-sm-offset-3 fsForm text-right" id="regContCaptchaVal">Captcha Image</label>
<div id="regContCaptchaImg" class="col-lg-3 col-md-3 col-sm-3 fcBlack">
<img class="ll-error-form" data-attr-captcha="<?php echo $_SESSION["security_code"];?>" id="regCaptchaImg2" name="regCaptchaImg2" src="cms/createCaptchaImg.php">
<input type="button" src="cms/refresh.png" id="captchaRefresh" style="" onclick="" class="col-lg-3 col-md-3 col-sm-3 bRxSi">
</div>
</div>
<div class="form-group">
<label for="regCaptchaCode" class="col-lg-2 col-lg-offset-3 col-md-2 col-md-offset-3 col-sm-2 col-sm-offset-3 fsForm text-right" id="regLblCaptcha">Captcha Code</label>
<div id="regContCaptchaCode" class="col-lg-3 col-md-3 col-sm-3 fcBlack">
<input name="regCaptchaCode" id="regCaptchaCode" type="text" class="form-control-c ll-error-form bRxSi" required>
</div>
</div>
存在错误,$未定义 – rmanalo
$是jQuery对象的表示形式。通常,jQuery通过$引用。如果你的框架没有使用$作为jQuery,请尝试用'jQuery.'替换所有'$ .'实例。如果这不起作用,那么你的框架在jQuery中做了一些奇怪的事情,你需要自己弄清楚。 – Josh
like this part:$ .ajax(“cms/new-captcha.php”)。done( – rmanalo