ให้เรตสมาชิก: 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
เจอปัญหา GitLab Error 500 เฉพาะ user
โดย mindphp พฤ 21 พฤษภาคม 2020 1:01 pm บอร์ด Linux - Web Server
0
287
พฤ 21 พฤษภาคม 2020 1:01 pm โดย mindphp
R - Option ตัวเลือก ตำแหน่งที่ตั้ง
โดย thatsawan พฤ 21 พฤษภาคม 2020 1:00 pm บอร์ด Odoojob.com - Manual & Content
0
3
พฤ 21 พฤษภาคม 2020 1:00 pm โดย thatsawan
R - Option ตัวเลือก หมวดหมู่
โดย thatsawan พฤ 21 พฤษภาคม 2020 1:00 pm บอร์ด Odoojob.com - Manual & Content
0
1
พฤ 21 พฤษภาคม 2020 1:00 pm โดย thatsawan
R - Option ตัวเลือก การศึกษา
โดย thatsawan พฤ 21 พฤษภาคม 2020 1:00 pm บอร์ด Odoojob.com - Manual & Content
1
2
ส 06 มิ.ย. 2020 6:50 pm โดย thatsawan
R - Option ตัวเลือก สวัสดิการ
โดย thatsawan พฤ 21 พฤษภาคม 2020 1:00 pm บอร์ด Odoojob.com - Manual & Content
0
2
พฤ 21 พฤษภาคม 2020 1:00 pm โดย thatsawan
R - Option ตัวเลือก ประเภทการจ้าง
โดย thatsawan พฤ 21 พฤษภาคม 2020 12:59 pm บอร์ด Odoojob.com - Manual & Content
1
2
ส 06 มิ.ย. 2020 6:53 pm โดย thatsawan
ERP กับการขอเบิกเครื่องมือมาใช้จากสโตร์
โดย sirirat พฤ 21 พฤษภาคม 2020 12:58 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
46
พฤ 21 พฤษภาคม 2020 12:58 pm โดย sirirat
R - Option ตัวเลือก ประสบการณ์
โดย thatsawan พฤ 21 พฤษภาคม 2020 12:53 pm บอร์ด Odoojob.com - Manual & Content
1
3
ส 06 มิ.ย. 2020 6:50 pm โดย thatsawan
R - Option ตัวเลือก เงินเดือน
โดย thatsawan พฤ 21 พฤษภาคม 2020 12:53 pm บอร์ด Odoojob.com - Manual & Content
0
3
พฤ 21 พฤษภาคม 2020 12:53 pm โดย thatsawan
การจัดการภาษีมูลค่าเพิ่มเพื่อนำส่งในระบบ ERP
โดย sirirat พฤ 21 พฤษภาคม 2020 12:00 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
46
พฤ 21 พฤษภาคม 2020 12:00 pm โดย sirirat
การตั้งหนี้จากรายการซื้อวัสดุอุปกรณ์ในระบบ ERP
โดย sirirat พฤ 21 พฤษภาคม 2020 11:00 am บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
45
พฤ 21 พฤษภาคม 2020 11:00 am โดย sirirat
งานประจำวันที่ 21 พฤษภาคม 2563
โดย sirirat พฤ 21 พฤษภาคม 2020 10:08 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
4
26
พฤ 21 พฤษภาคม 2020 8:45 pm โดย thatsawan
R - รูปแบบชื่อที่ใช้ แสดง และ subject ของ E-mail แต่ละฉนับ
โดย mindphp พฤ 21 พฤษภาคม 2020 1:53 am บอร์ด OdooJob.com - Developer
0
1
พฤ 21 พฤษภาคม 2020 1:53 am โดย mindphp
สรุปการเรียนรู้ประจำวัน 20/05/63
โดย sirirat พ 20 พฤษภาคม 2020 8:47 pm บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
4
พ 20 พฤษภาคม 2020 8:47 pm โดย sirirat
ตัวเลือกในการเรียกดูรายงาน AR BALANCE DETAIL REPORT เพื่อให้ได้รายการที่ต้องการ
โดย sirirat พ 20 พฤษภาคม 2020 7:01 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
51
พ 20 พฤษภาคม 2020 7:01 pm โดย sirirat
Work Request ในระบบ ERP สำหรับการออกเอกสารใบขอจ้างงานผู้รับเหมา
โดย sirirat พ 20 พฤษภาคม 2020 6:40 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
58
พ 20 พฤษภาคม 2020 6:40 pm โดย sirirat
3 วิธีการคุม Budget ในระบบการสั่งจ้างผู้รับเหมา
โดย sirirat พ 20 พฤษภาคม 2020 6:07 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
49
พ 20 พฤษภาคม 2020 6:07 pm โดย sirirat
ความแตกต่างระหว่างเงินสดย่อยกับเงินทดรองจ่าย
โดย sirirat พ 20 พฤษภาคม 2020 5:30 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
47
พ 20 พฤษภาคม 2020 5:30 pm โดย sirirat
ระบบ ERP กับการตั้งเงินมัดจำจ่ายเพื่อให้บัญชีดึงไปตั้งหนี้จ่ายชำระ
โดย sirirat พ 20 พฤษภาคม 2020 3:58 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
53
พ 20 พฤษภาคม 2020 3:58 pm โดย sirirat
ระบบ ERP กับการสั่งซื้อวัสดุและอุปกรณ์เพื่อใช้งานในบริษัท
โดย sirirat พ 20 พฤษภาคม 2020 12:56 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
129
พ 20 พฤษภาคม 2020 12:56 pm โดย sirirat