`
dcj3sjt126com
  • 浏览: 1871458 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cakephp中使用Captcha实现更加安全的验证码

    博客分类:
  • PHP
阅读更多

 

Captcha官方

http://www.captcha.ru/en/

Captcha下载

http://www.captcha.ru/en/kcaptcha/

本地下载1.2.6版本

 

首先可以使用如下程序得到验证码图片,注意在程序在生成图片时就调设置了会话变量。

getImage.php

 

<?php 

include('kcaptcha.php');

session_start();

$captcha = new KCAPTCHA();

$_SESSION['captcha_keystring'] = $captcha->getKeyString();

?>

 

接下来通过如下的表单调用验证码图片,并验证用户输入是否与验证码图片值相符。

index.php

 

<?php 

session_start();

$true_key_string = $_SESSION['captcha_keystring'];

echo $true_key_string;

?>

<html>

<body>

<form action="" method="post">

<img src="getImage.php?<?php echo session_name()?>=<?php echo session_id()?>"/><br/>

<input type="text" value="" name="keystring"/>

<input type="submit" value="check" />

</form>

<?php 

if(isset($_SESSION['captcha_keystring']) && $true_key_string == $_POST['keystring'])

{

echo "Correct";

}else

{

echo "Wrong";

}

?>

</body>

</html>

 

那么,如何在Cakephp中使用Captcha呢?

首先把Kcaptcha文件夹拷贝到vendor目录。因为验证码要在很多控制器中使用,因此最好把该项功能用组件进行封装,该组件包括生成图片和验证两项功能。在controllers/components目录下新建captcha.php文件。

 

 

<?php

class CaptchaComponent extends Object {

var $Controller = null;

 

function startup(&$controller)

{

$this->Controller = $controller;

}

 

function render()

{

App::import('vendor', 'kcaptcha/kcaptcha');

$kcaptcha = new KCAPTCHA();

$this->Controller->Session->write('captcha', $kcaptcha->getKeyString());

exit;

}

 

function checkCaptcha($str)

{

if ($this->Controller->Session->check('captcha'))

{

$s_captcha = $this->Controller->Session->read('captcha');

if(!empty($str) && $str == $s_captcha)

return true;

}

}

return false;

}

}

?>

 

 

 

接下来,为了能在视图中调用验证码图片,可以在控制器(比如Users控制器)中加入Captcha组件。或者单独创建一个Captchas控制器来生成验证码图片。

 

<?php

class CaptchasController extends AppController {

 

var $name = 'Captchas';

var $uses = array();

var $components  = array('Captcha');

var $helps = array('Cache');

var $cacheAction = true;

 

function index() {

Configure::write('debug', '0');

$this->autoRender = false;

$this->Captcha->render();

}

}

?>

分享到:
评论

相关推荐

    cakephp-captcha:CakePHP 验证码实现

    CakePHP 2.2+ 的验证码支持 使用随机文本alpha|math生成需要人工验证的图像。 这是为了防止自动垃圾邮件和垃圾邮件机器人。 特征: 多种验证码类型alpha|math 支持文字旋转 可以设置图像的宽度和高度尺寸 字体...

    CakePHP使用ajax传值

    具体实现方法是:在控制器中使用iconv('utf-8', 'gb2312', $data['parameter'])来转换数据。 3. 路径问题的处理:在Ajax请求中,如果网站页面存在嵌套路径,那么在请求时需要注意URL路径的正确性。在CakePHP中,...

    cakephp中文手册API

    CakePHP的路由系统允许开发者定义URL模式和它们对应的控制器动作,使URL更加友好且易于管理。通过配置路由规则,可以控制HTTP请求如何被解析和响应。 3. **模型(Model)**: 模型代表数据和业务逻辑。在CakePHP...

    cakephp中文手册

    本手册是针对CakePHP的中文版指南,对于学习和理解这个框架的中文使用者来说,是一份极其宝贵的资源。 在 CakePHP 中,开发者可以快速地搭建功能丰富的Web应用程序。其主要特点包括: 1. **快速开发**:CakePHP ...

    CakePHP 1.2 API 中文文档

    在 CakePHP 1.2 中,ORM(对象关系映射)称为ActiveRecord,使得数据库操作更加直观。例如,通过 `$this-&gt;Article-&gt;find()` 方法可以轻松获取文章数据。此外,它支持CRUD(创建、读取、更新、删除)操作,简化了...

    cakephp 中文手册

    蛋糕PHP使用自定义的路由规则来解析和构建URL,方便实现RESTful接口。开发者可以定义路由规则,将URL映射到控制器的特定操作上。 ### 三、数据库操作 1. **ActiveRecord**:蛋糕PHP采用ActiveRecord模式,每个模型...

    cakephp中文手册.pdf

    在 CakePHP 中,MVC模式被实现得非常直观和易于使用。例如,控制器类通常放在`app/Controller`目录下,模型类位于`app/Model`,而视图文件则位于`app/View`。 **MVC 模式** 虽然手册建议在阅读前了解MVC的基本概念...

    cakephp 中文文档

    除了这三者之外,CakePHP 还提供了一系列附加类和对象,以实现更加灵活的应用程序开发。 #### 二、控制器扩展——组件(Component) 组件是 CakePHP 中一种特殊的类,主要用于简化控制器逻辑,使某些功能可以在多...

    CakePHP中文手册

    **蛋糕PHP(CakePHP)**...通过深入学习这本**CakePHP中文手册**,开发者可以掌握使用CakePHP进行高效Web开发的技巧和最佳实践,从而提升开发效率和应用质量。无论是初学者还是经验丰富的开发者,都可以从中受益匪浅。

    cakephp 框架书籍 英文版

    - **Vendor Packages**:探讨了如何在CakePHP中使用外部依赖包。 #### 十一、Deployment(部署) - **检查安全性**:提醒开发者注意在部署过程中可能存在的安全漏洞。 - **设置文档根目录**:指导如何正确设置...

    cakePHP 中文手册

    CakePHP有多个特点,这些特点让CakePHP成为了快速开发框架中的佼佼者之一。 1.活跃友好的社区 2.灵活的许可协议(Licensing) 3.兼容PHP4和PHP5 4.数据库交互和简单查询的集成 5.应用程序Scaffolding 6....

    PHP的框架之CakePHP-CakePHP教程

    打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...

    mvc,mvc手册cakephp中文手册

    ** CakePHP 中的MVC实现:** 在CakePHP中,MVC的实现十分直观。例如: - **模型(Model)**:开发者可以创建对应的数据库表类,继承自CakePHP的`AppModel`,用于操作数据库。模型类提供了数据查询和修改的方法,如...

    cakephp-1.2 manual

    在 CakePHP 中,你可以创建数据模型来操作数据库中的表,通过ActiveRecord模式实现数据操作。 4. **视图(View)**:视图用于展示数据,通常与HTML模板结合。手册会教你如何创建和组织视图文件,以及如何使用布局...

    CakePHP 中文手册.rar

    CakePHP是一个开源的PHP on rails的full-stack framework。最开始从Ruby On Rails框架里得到灵感。程序员可使用它来快速创建的Web应用程序。我们的首要目的是使你以一种预置的快速且不失灵活性的方式开展工作。

    cakephp中acl详解

    ACL Tree**:在CakePHP中,ACOs和AROs被组织成一个树形结构,这使得权限控制更加灵活,可以根据需要分配不同的权限层级。 ### ACL工作原理 当用户试图访问某个资源时,CakePHP会检查该用户所属的ARO是否在ACL树中...

    cakephp--使用_CakePHP_的_Session_和_Request_Handler_组件

    ### 使用CakePHP的Session和Request Handler组件 #### Session组件概览 在CakePHP框架中,Session组件被设计用于管理用户的会话数据,确保网站能够识别并处理特定用户的状态。这在用户登录、购物车功能、个性化...

Global site tag (gtag.js) - Google Analytics