问答 输入验证 php,PHP 生成问答型验证码

PHP 生成问答型验证码

6cd5e4fd49658da7be73f2e8e3760c00.png

2年前

阅读 5347

评论 0

喜欢 1

###核心代码:

```php

// +----------------------------------------------------------------------

// | 小黄牛MVC框架 - Vendor - Chify - 内置问答验证类

// +----------------------------------------------------------------------

// | $vif = new Chify();

// | $vif->upd($array,60);

// | echo $vif->entry();

// +----------------------------------------------------------------------

// | Copyright (c) 2016 www.junphp.com

// +----------------------------------------------------------------------

// | Author: 冯俊豪 - 小黄牛 <1731223728@qq.com>

// +----------------------------------------------------------------------

header("Content-type:text/html;charset=utf-8");

class Chify {

// 验证码的SESSION下标

public static $seKey = '';

private $Expire = 60; // 验证码过期时间,单位:秒

private $Array;//问答参数

/*

* 初始化参数

*/

public function __construct(){

$this->Array = array(

array(1=>'JunPHP框架作者是?',2=>'冯俊豪',3=>true),

array(1=>'JunPHP框架是开源的吗?',2=>'是',3=>true),

array(1=>'JunPHP官网是?',2=>'www.junphp.com',3=>true),

array(1=>'3+2等于几?',2=>'5'),

);

}

/**

* 输出验证码;

*/

public function entry() {

return $this->Interlocution();

}

/*

* 修改参数

* $Array : 对应的验证码与提示

* $Expire : 验证码过期时间,默认60秒

*/

public function upd($Array,$Expire=60){

$this->Array = array_merge($this->Array,$Array);

$this->Expire = $Expire;

}

/*

* 生成验证码

*/

public function Interlocution() {

$rand = rand(0,count($this->Array)-1); //获得随机问答词条

if(!empty($this->Array[$rand][3])){

$title = $this->Array[$rand][1].' 请回答: '.$this->Array[$rand][2];

}else{

$title = $this->Array[$rand][1];

}

$this->_session($this->Array[$rand][2]); //将答案存入session中

return $title;

}

/**

* 验证码保存

*/

protected function _session($code) {

// 保存验证码

isset($_SESSION) || session_start();

if(is_array($code)){

$_SESSION[self::$seKey]['code'] = join('', $code); // 把校验码保存到session

}else{

$_SESSION[self::$seKey]['code'] = $code;

}

$_SESSION[self::$seKey]['time'] = time(); // 验证码创建时间

}

/**

* 验证验证码是否正确

* $code :用户验证码

* 返回验证码是否正确 TRUE || FALSE

*/

public function check($code) {

isset($_SESSION) || session_start();

// 验证码不能为空

if(empty($code) || empty($_SESSION[self::$seKey])) {

return false;

}

// session 过期

if(time() - $_SESSION[self::$seKey]['time'] > $this->Expire) {

unset($_SESSION[self::$seKey]);

return false;

}

if($code == $_SESSION[self::$seKey]['code']) {

return true;

}

return false;

}

}

```

###调用方法:

```php

//引入验证码文件

include 'Chify.class.PHP';

//实例化验证码类

$vif = new Chify();

//生成验证码

echo $vif->entry();

/*

//array (1=>'问题',2=>'答案',3=>'是否显示答案')

$array = array(

array(1=>'JunPHP框架作者是?',2=>'冯俊豪',3=>true),

array(1=>'3+2等于几?',2=>'5'),

);

//修改参数,第二个参数为验证码过期时间,默认为60秒

$vif->upd($array,100);

//生成验证码

echo $vif->entry();

*/

/*

//验证码效验

if ($vif->check($_POST['NAME名'])) {

}else{

}

*/

```

###案例下载地址:

[PHP 生成问答型验证码 - 20160928092403.zip](https://www.junphp.com/Blog/JunUE/php/dwfile/20160928092403.zip "PHP 生成问答型验证码 - 20160928092403.zip")

© 著作权归作者所有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值