Kết thúc cách ly y tế đối với 33 người tại TX. Tân Châu

(Cổng TTĐT AG) - Sáng 21-3, tại Đại đội 6 (Bộ Chỉ huy Quân sự tỉnh An Giang), Ban Chỉ đạo phòng chống dịch bệnh Covid-19 TX. Tân Châu (An Giang) tổ chức công nhận hoàn thành thời gian cách ly y tế tập trung đối với 33 người.

Theo đó, Ban Chỉ đạo đã trực tiếp chỉ đạo các hoạt động cách ly tập trung đối với các trường hợp tiếp xúc với du khách đi trên du thuyền Bassac Pandaw bị nhiễm SARS-Cov-2 (vào ngày 6-3). Các ban ngành, đoàn thể, thành viên Ban Chỉ đạo thị xã, phường, xã đã phối hợp chặt chẽ để hỗ trợ cho hoạt động cách ly đạt yêu cầu. Người được cách ly chấp hành khá tốt nội quy của cơ sở cách ly, trong thời gian 7 ngày (từ ngày 14 đến 21-3).

Hướng dẫn viết hàm tạo Captcha trong Laravel Framework

 captcha

Hôm nay mình xin giới thiệu một hàm PHP tự code dùng để tạo Captcha Image sử dụng trong Laravel Framework.

Trước tiên các bạn cần kiểm tra xem có bật sử dụng Extension GD2 trong php chưa, vì hàm có sử dụng thư viện để tạo Image.

Các bạn tạo một Route đến Controller chứa hàm getCaptcha bên dưới.

public function getCaptcha(Request $request)
{
	$font = public_path('fonts/arial.ttf'); //đường dẫn font chữ trong public
	$name = $request->name?$request->name:'captchacode'; //lấy tên session từ request, mặc định là captchacode
	$lenght = $request->lenght?$request->lenght:'5'; //số ký tự lấy từ request, mặc định là 5
	$width = $request->width?$request->width:'160'; //chiều rộng hình lấy từ request, mặc định là 160
	$height = $request->height?$request->height:'40'; //chiều cao hình lấy từ request, mặc định là 40
	$code = $this->generateCode($lenght); //Hàm lấy ngẫu nhiên theo số ký tự
	$font_size = $height * 0.75;
	$image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
	$background_color = imagecolorallocate($image, 255, 255, 255);
	$text_color = imagecolorallocate($image, 20, 40, 100);
	$noise_color = imagecolorallocate($image, 255, 255, 255);
	for( $i=0; $i<($width*$height)/3; $i++ ) {
		imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
	}
	for( $i=0; $i<($width*$height)/150; $i++ ) {
		imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
	}
	$textbox = imagettfbbox($font_size, 0, $font, $code);
	$x = ($width - $textbox[4])/2;
	$y = ($height - $textbox[5])/2;
	imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);
	ob_start();
	header('Content-Type: image/jpeg');
	imagejpeg($image);
	imagedestroy($image);
	$image_data = ob_get_contents();
	ob_end_clean();
	Session::put($name, $code); //Lưu session mã captcha để kiểm tra khi submit
	return Response::make($image_data, 200, ['Content-Type' => 'image/jpeg']);
}

public function GenerateCode($str)
{
	$possible = 'ABCDEFGHJKLMNPRSTUVWXYZ23456789'; //Danh sách các chữ cái được lấy ngẫu nhiên
	$code = '';
	$i = 0;
	while ($i < $str) { 
		$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
		$i++;
	}
	return $code;
}

Tại view các bạn chỉ cần gắn Route trong src của thẻ img sẽ có hình ảnh captcha.

Khi submit form các bạn chỉ cần kiểm tra giá trị trường nhập mã captcha với Session::get('captchacode') có trùng khớp với nhau hay không.

Về phần lập trình tạo form và kiểm tra mình không mô tả chi tiết lên đây, để các bạn độc giả tự viết theo ý của các bạn.

Chúc các bạn thành công!

Chia sẻ: Ngụy Kim Hưng