ให้เรตสมาชิก: 1 / 5

ดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 
เขียน Captcha (Image Verify) ป้องกัน bot Auto post
บทความนี้ผม ใช้ Zend Framework 1.5 (เป็นเวอร์ชั่นเก่าที่ยังไม่มี Zend_Captcha)
การใช้งาน สมมุติเรามี Application ที่เขียนบน Zend Framework อยู่แล้ว
การทำ Image Verify  ต้องใช้ Zend_Session_Namespace ด้วย ดังนั้น ตอนที่เราสร้าง Class สำหรับทำ Image Verify เราจำเป็นต้อง Load Class นี้ เข้ามาใช้งานด้วย
ตามโค้ดนี้
Zend_Loader::loadClass('Zend_Session_Namespace');

ส่วนโค้ดทั้งหมด
class ImagegeneratorController extends Zend_Controller_Action
{
    public function init()
    {
        $this->_helper->viewRenderer->setNoRender();
    }
     
    public function generatecaptchaAction()
    {
         Zend_Loader::loadClass('Zend_Session_Namespace');

            $defaultNamespace = new Zend_Session_Namespace('code_verify');
            $md5_hash = md5(rand(0,999));
 
            $security_code = substr($md5_hash, 15, 5);
            $defaultNamespace->security_code = $security_code;

     
    //Set the image width and height
    $width = 100;
    $height = 20;
    
    $image = ImageCreate($width, $height);
    
    $white = ImageColorAllocate($image, 255, 255, 255);
    $black = ImageColorAllocate($image, 0, 0, 0);
    $grey = ImageColorAllocate($image, 204, 204, 204);
    
    ImageFill($image, 0, 0, $black);
    
    ImageString($image, 3, 30, 3, $security_code, $white);
    
    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);
    }
}

-----------------------------------------
และใช้โค้ดนี้วางใน form (ไฟล์.phtml)  เพื่อให้แสดงรูปจาก Class ข้างบน
 < img src="baseUrl; ?>/imagegenerator/generatecaptcha" />


ส่วนวิธีตรวจสอบว่าคนกรอกกรอก Code ถูกหรือไม่ ก็ตรวจสอบตามนี้
$Code = $filter->filter($this->_request->getPost('Code'));
$defaultNamespace = new Zend_Session_Namespace('code_verify');           

if($Code != $defaultNamespace->security_code) {
 // โค้ดไม่ถูก
} else {
// work
}




บอร์ด php : http://www.mindphp.com/forums/index.php

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ติดตั้ง Joomla บน ubuntu ไม่ได้ค่ะ
โดย bolue ส 15 ส.ค. 2020 6:35 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
3
13
ส 15 ส.ค. 2020 7:00 pm โดย bolue
การใส่ เมนู ใน editor ของ mindphp ไม่ขึ็นข้อมูล
โดย bolue ส 15 ส.ค. 2020 10:14 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
0
8
ส 15 ส.ค. 2020 10:14 am โดย bolue
Joomla 4 beta 3 มาแล้ว มีอะไรใหม่ บ้างมาดูกัน
โดย mindphp ศ 14 ส.ค. 2020 2:12 pm บอร์ด MindPHP News & Feedback
0
14
ศ 14 ส.ค. 2020 2:12 pm โดย mindphp
การใช้ try-catch จับ Exception ในภาษา Java
โดย nai_cyp พฤ 13 ส.ค. 2020 2:47 pm บอร์ด Share Knowledge
0
15
พฤ 13 ส.ค. 2020 2:47 pm โดย nai_cyp
การใช้ switch ในภาษา Java
โดย nai_cyp พฤ 13 ส.ค. 2020 2:45 pm บอร์ด Share Knowledge
0
11
พฤ 13 ส.ค. 2020 2:45 pm โดย nai_cyp
การใช้คำสั่ง break และ continue ในภาษา Java
โดย nai_cyp พฤ 13 ส.ค. 2020 2:44 pm บอร์ด Share Knowledge
0
9
พฤ 13 ส.ค. 2020 2:44 pm โดย nai_cyp
การใช้ Do-While loop ในภาษา Java
โดย nai_cyp พฤ 13 ส.ค. 2020 1:37 pm บอร์ด Share Knowledge
0
11
พฤ 13 ส.ค. 2020 1:37 pm โดย nai_cyp
การใช้ For-loop ในภาษา Java
โดย nai_cyp พฤ 13 ส.ค. 2020 1:36 pm บอร์ด Share Knowledge
0
11
พฤ 13 ส.ค. 2020 1:36 pm โดย nai_cyp
การใช้ While-loop ในภาษา Java
โดย nai_cyp พฤ 13 ส.ค. 2020 1:33 pm บอร์ด Share Knowledge
0
12
พฤ 13 ส.ค. 2020 1:33 pm โดย nai_cyp
โปรแกรมตัดต่อ VDO ที่ฟรี บน windows
โดย nai_cyp พฤ 13 ส.ค. 2020 11:35 am บอร์ด Share Knowledge
2
30
พฤ 13 ส.ค. 2020 12:36 pm โดย nai_cyp
สร้าง crontab ใน Directadmin แล้ว Error Error Creating Cron Job
โดย mindphp พ 12 ส.ค. 2020 5:08 am บอร์ด Linux - Web Server
1
64
พ 12 ส.ค. 2020 5:17 am โดย mindphp
Undertaker เปิดตัวด้วยเพลงของ Metalica (ดนตรี)
โดย nai_cyp อ 11 ส.ค. 2020 5:20 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
18
อ 11 ส.ค. 2020 5:20 pm โดย nai_cyp
Green Day ปล่อยเพลงใหม่ช่วง COVID-19 (ดนตรี)
โดย nai_cyp อ 11 ส.ค. 2020 5:16 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
อ 11 ส.ค. 2020 5:16 pm โดย nai_cyp
BLACKPINK โปสเตอร์ทีเซอร์ใหม่? (ดนตรี)
โดย nai_cyp อ 11 ส.ค. 2020 5:11 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
16
อ 11 ส.ค. 2020 5:11 pm โดย nai_cyp
Liam Gallagher ในช่วง COVID-19 ระบาด (ดนตรี)
โดย nai_cyp อ 11 ส.ค. 2020 5:10 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
15
อ 11 ส.ค. 2020 5:10 pm โดย nai_cyp
Khalid ในช่วง COVID-19 ระบาด (ดนตรี)
โดย nai_cyp อ 11 ส.ค. 2020 5:07 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
18
อ 11 ส.ค. 2020 5:07 pm โดย nai_cyp
Green Day ในช่วง COVID-19 ระบาด (ดนตรี)
โดย nai_cyp อ 11 ส.ค. 2020 5:01 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
อ 11 ส.ค. 2020 5:01 pm โดย nai_cyp
การคำนวณเงินหากลูกค้าเป็นสมาชิกโดยใช้ If/else ในภาษา Java
โดย nai_cyp จ 10 ส.ค. 2020 7:10 pm บอร์ด Share Knowledge
0
31
จ 10 ส.ค. 2020 7:10 pm โดย nai_cyp
การหาค่า BMI ในภาษา Java
โดย nai_cyp จ 10 ส.ค. 2020 6:45 pm บอร์ด Share Knowledge
0
20
จ 10 ส.ค. 2020 6:45 pm โดย nai_cyp
ขั้นตอนการใช้ SMS Gateway
โดย natthanit.r2538 พ 08 ก.ค. 2020 11:42 am บอร์ด Programming - PHP
1
23
พ 08 ก.ค. 2020 7:10 pm โดย natthanit.r2538