我在输入中获取了验证码加密值,如:
value=" JFIF >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
C $.' ",#(7),01444'9=82<.342 C2!!22222222222222222222222222222222222222222222222222 ( x"
} !1AQa "q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
w !1AQ aq"2 B #3R br
$4 % &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? Ԓ 61N 7I v n % O;pHU C8Xn " + 8 s c NNGw e ֱx4裴 Ԡ;+ uv i Q ea @@ [ o H. D!K7 6 ) CR nq t3m O R g$ L Ź `:ǘ s6 n| U PC h M 7y F W X R RX8u c \c )] kw$ p _ w > 5 ˩P ̪ 4h? .7n Th +mbn\ , ][Ķ| I$pe "
如何获得正常的加密字符串,如'CDEF01jhdfz'而不是上面的字符串?我认为这是加密问题..这是我的代码:
function str_encrypt( $str ) {
$mystr = index_array( $str, KEY_VALUES );
$mystr = mybase64_encode( rawurlencode( $mystr ) );
return $mystr;
}
function str_decrypt( $str ) {
$mystr = rawurldecode( mybase64_decode( $str ) ) ;
$mystr = index_array( $mystr, KEY_VALUES );
return $mystr;
}
$captcha = new CaptchaCode();
$code = str_encrypt( $captcha->generateCode(6) );
$captcha1 = new CaptchaImages();
$captcha1->GenerateImage( $width, $height, str_decrypt( $code ) );
echo $code;
i m getting $code value through below function on my index.php:
jQuery.get('<?php echo captcha_images.php ?>', function( encoded_code ) {
jQuery('#security_check').val( encoded_code );
}
答案 0 :(得分:0)
您不需要复杂的代码,我通常会通过会话传递代码。
image_captcha.php创建一个代码:19m92d9193jf9。你可以使用md5()来生成它,使用substr()来缩短它。
使用此代码显示图像,然后在会话变量中设置此值。
因此,当前的php文件可以在不费力的情况下获得此值。只需访问图片。
image_captcha.php
$basepath = DIR_VIEWS.'/captcha/';
$code = substr(md5(time()),0,7);
$_SESSION['code_captcha'] = $code;
$imageCaptcha = imagecreatefrompng($basepath."background.png");
$fontCaptcha = imageloadfont($basepath."anonymous.gdf");
$color = imagecolorallocate($imageCaptcha,rand(1,255),0,0);
imagestring($imageCaptcha,$fontCaptcha,15,rand(3,10),$codigoCaptcha{0},$color);
imagestring($imageCaptcha,$fontCaptcha,35,rand(3,10),$codigoCaptcha{1},$color);
imagestring($imageCaptcha,$fontCaptcha,55,rand(3,10),$codigoCaptcha{2},$color);
imagestring($imageCaptcha,$fontCaptcha,75,rand(3,10),$codigoCaptcha{3},$color);
imagestring($imageCaptcha,$fontCaptcha,125,rand(3,10),$codigoCaptcha{4},$color);
imagestring($imageCaptcha,$fontCaptcha,145,rand(3,10),$codigoCaptcha{5},$color);
imagestring($imageCaptcha,$fontCaptcha,165,rand(3,10),$codigoCaptcha{6},$color);
header("Content-type: image/png");
imagepng($imageCaptcha);
imagedestroy($imageCaptcha);
exit();
访问此文件:
<img src="image_captcha.php"/>
此处验证码代码已准备就绪。
答案 1 :(得分:0)
如果我理解了您的代码和注释,那么您有一个名为captcha_images.php
的未公开脚本,可生成并发送原始JPEG图片。然后使用客户端JavaScript将其装入HTWML属性。
jQuery.val()
method需要纯文字:
.val(value)
value Type: String or Array
一个文本字符串或一个字符串数组,对应于要设置为选中/选中的每个匹配元素的值。
...这非常有意义,因为HTML本身根本不是二进制格式:
Content-Type: text/html
^^^^
这意味着之后无法取回原始二进制数据。将其转换为文本的过程将破坏它。
我不知道«普通加密字符串»是什么意思,但您可能应该从准备使用的服务器发送它。