`
dcj3sjt126com
  • 浏览: 1829935 次
  • 性别: 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 3.0 使用总结

    一些cakephp3.0 的使用总结

    cakephp 中文手册

    cakephp 中文手册cakephp 中文手册cakephp 中文手册cakephp 中文手册

    cakephp中acl详解

    cakephp中acl详解

    cakephp 中文文档

    全面的cakephp中文文档

    cakephp中文手册API

    cakephp框架,api中文手册,初学者必看

    cakephp中acl详解.rar

    cakephp中acl详解

    cakephp中文手册

    cakephp中文手册 请注意,此文件不是API!

    CakePHP中文手册

    CakePHP中文手册

    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...

    CakePHP 中文手册.rar

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

    cakephp中文手册.pdf

    cakephp中文手册.pdf

    用cakephp实现的商城系统

    用cakephp实现的简单商城系统,有基本的商城管理功能和会员注册管理功能,代码简洁易懂,直接输入http://域名/install.php一键安装成功,简单快捷。此商城系统是一个比较典型的cakephp案例,比较适合一些有意学习...

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件.zip

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件 CakePHP认证插件 包含AuthComponent类认证的插件,用于使用 JSON网络令牌进行身份验证。 你可以在这里详细阅读关于JSON网络令牌规范的详细说明。要求...

    PHP的框架之CakePHP-CakePHP教程终极教程

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

    cakephp-containable行为behaviour

    2:cakephp中虽然对模型的操作方法中并没有提供像上面提到的连贯方法 但是cake框架提供了一个containable行为类来更好的完善模型关联中遇到的上述问题 "&gt;1:thinkphp中通过框架提供的连贯操作Model &gt;join ‘other ...

    CakePHP 1.2 API 中文文档

    这是CakePHP 1.2 API 中文文档,是中文API。解压后,找到其中index.htm文件,打开浏览就可以了。相信对不喜欢E文人有很大帮助,其它的就不多说了,自己看就知道了。

    CakePHP 1.3中文帮助文档

    CakePHP 1.3中文帮助文档,内容简单易懂并且全面,值得大家下载...

Global site tag (gtag.js) - Google Analytics