OC 3.0 opencart处理验证码失效

定义了private $captchaArray数组,验证码生成从这里随机一个,验证时候验证码在这里的就是生效
<?php
class ControllerExtensionCaptchaBasic extends Controller {
// 定义一个类属性存储验证码数组
private $captchaArray = [
‘abcd12’, ‘efgh34’, ‘ijkl56’, ‘mnop78’, ‘qrst90’, ‘uvwx12’, ‘yzab34’, ‘cdef56’, ‘ghij78’, ‘klmn90’
];

public function index($error = array()) {

$this->load->language(‘extension/captcha/basic’);

if (isset($error[‘captcha’])) {
$data[‘error_captcha’] = $error[‘captcha’];
} else {
$data[‘error_captcha’] = ”;
}

$data[‘route’] = $this->request->get[‘route’];

return $this->load->view(‘extension/captcha/basic’, $data);
}

public function validate() {
// $this->load->language(‘extension/captcha/basic’);
//
// if (empty($this->session->data[‘captcha’]) || ($this->session->data[‘captcha’] != $this->request->post[‘captcha’])) {
// return $this->language->get(‘error_captcha’);
// }

$this->load->language(‘extension/captcha/basic’);

$userCaptcha = $this->request->post[‘captcha’];

if (!in_array($userCaptcha, $this->captchaArray)) {
return $this->language->get(‘error_captcha’);
}

return ”;
}

public function captcha() {
// $this->session->data[‘captcha’] = substr(sha1(mt_rand()), 17, 6);
//
// $image = imagecreatetruecolor(150, 35);
//
// $width = imagesx($image);
// $height = imagesy($image);
//
// $black = imagecolorallocate($image, 0, 0, 0);
// $white = imagecolorallocate($image, 255, 255, 255);
// $red = imagecolorallocatealpha($image, 255, 0, 0, 75);
// $green = imagecolorallocatealpha($image, 0, 255, 0, 75);
// $blue = imagecolorallocatealpha($image, 0, 0, 255, 75);
//
// imagefilledrectangle($image, 0, 0, $width, $height, $white);
// imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red);
// imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green);
// imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue);
// imagefilledrectangle($image, 0, 0, $width, 0, $black);
// imagefilledrectangle($image, $width – 1, 0, $width – 1, $height – 1, $black);
// imagefilledrectangle($image, 0, 0, 0, $height – 1, $black);
// imagefilledrectangle($image, 0, $height – 1, $width, $height – 1, $black);
//
// imagestring($image, 10, intval(($width – (strlen($this->session->data[‘captcha’]) * 9)) / 2), intval(($height – 15) / 2), $this->session->data[‘captcha’], $black);
//
// header(‘Content-type: image/jpeg’);
//
// imagejpeg($image);
//
// imagedestroy($image);
// exit();


// 从数组中随机选择一个验证码
$captchaCode = $this->captchaArray[array_rand($this->captchaArray)];

$image = imagecreatetruecolor(150, 35);

$width = imagesx($image);
$height = imagesy($image);

$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255, 255, 255);
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);
$green = imagecolorallocatealpha($image, 0, 255, 0, 75);
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);

imagefilledrectangle($image, 0, 0, $width, $height, $white);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green);
imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue);
imagefilledrectangle($image, 0, 0, $width, 0, $black);
imagefilledrectangle($image, $width – 1, 0, $width – 1, $height – 1, $black);
imagefilledrectangle($image, 0, 0, 0, $height – 1, $black);
imagefilledrectangle($image, 0, $height – 1, $width, $height – 1, $black);

imagestring($image, 10, intval(($width – (strlen($captchaCode) * 9)) / 2), intval(($height – 15) / 2), $captchaCode, $black);

header(‘Content-type: image/jpeg’);

imagejpeg($image);

imagedestroy($image);
exit();
}
}

Comments

发表回复

Your email address will not be published. Name and email are required