thinkphp验证码更改

<?php
//验证码类  
class ValidateCode {  
        private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //随机因子  
          private $code;       		//验证码  
          private $codelen = 4;     //验证码长度  
          private $width = 130;     //宽度  
          private $height = 50;     //高度  
          private $img;        //图形资源句柄  
          private $font;        //指定的字体  
          private $fontsize = 20;    //指定字体大小  
          private $fontcolor;      //指定字体颜色  
    
          //构造方法初始化  
          public function __construct() {  
             $this->font = THINK_PATH."/Common/elephant.ttf";  
          }  
    
        //生成随机码  
          private function createCode() {  
             $_len = strlen($this->charset)-1;  
             for ($i=0;$i<$this->codelen;$i++) {  
                    $this->code .= $this->charset[mt_rand(0,$_len)];  
             }  
          }  
    
          //生成背景  
          private function createBg() {  
             $this->img = imagecreatetruecolor($this->width, $this->height);  
             $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));  
             imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);  
          }  
    
          //生成文字  
          private function createFont() {   
             $_x = $this->width / $this->codelen;  
             for ($i=0;$i<$this->codelen;$i++) {  
                    $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));  
                    imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);  
             }  
          }  
    
          //生成线条、雪花  
          private function createLine() {  
             for ($i=0;$i<6;$i++) {  
                    $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));  
                    imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);  
             }  
             for ($i=0;$i<100;$i++) {  
                    $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));  
                    imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);  
             }  
          }  
    
          //输出  
          private function outPut() {  
             header('Content-type:image/png');  
             imagepng($this->img);  
             imagedestroy($this->img);  
          }  
    
          //对外生成  
          public function doimg() {  
             $this->createBg();  
             $this->createCode();  
             $this->createLine();  
             $this->createFont();
			 $_SESSION['verify'] = md5($this->getCode());//验证码保存到SESSION中 
             $this->outPut();  
          }  
    
          //获取验证码  
          public function getCode() {  
             return strtolower($this->code);  
          }  
    
 }


 

将此类放到ThinkPHP/Extend/Library/ORG/UTIL下

Action类调用:

//验证码
	Public function verify(){
		
		//导入验证码类
		import('ORG.Util.Code');
		
		//实例化验证码类
		$_vc = new ValidateCode();
		
		//输出验证码 
		$_vc->doimg(); 
	}	

html调用写法:
<img id="img_seccode" οnclick="javascript:this.src='__URL__/verify/tm='+Math.random();" src="__URL__/verify">

判断验证码是否正确:
$_SESSION['verify']== MD5($verify)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过使用第三方短信平台的 API 来发送短信验证码。以下是一个使用阿里云短信服务的示例代码: ```php // 引入阿里云 SDK require_once __DIR__ . '/aliyun-php-sdk-core/Config.php'; use Aliyun\Core\Config; use Aliyun\Core\DefaultAcsClient; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; // 配置信息 Config::load(); $accessKeyId = 'your_access_key_id'; $accessKeySecret = 'your_access_key_secret'; $signName = 'your_sign_name'; // 签名名称 $templateCode = 'your_template_code'; // 模板CODE // 发送短信验证码 $mobile = 'your_mobile_number'; $code = rand(100000, 999999); // 生成随机验证码 $paramString = '{"code":"' . $code . '"}'; // 短信模板参数 $profile = DefaultProfile::getProfile('cn-hangzhou', $accessKeyId, $accessKeySecret); $acsClient = new DefaultAcsClient($profile); $request = new SendSmsRequest(); $request->setPhoneNumbers($mobile); $request->setSignName($signName); $request->setTemplateCode($templateCode); $request->setTemplateParam($paramString); $response = $acsClient->getAcsResponse($request); // 处理响应结果 if ($response->Code == 'OK') { // 发送成功,将验证码存储到 session 或缓存中 session('sms_code', $code); echo '验证码已发送,请注意查收'; } else { echo '发送失败:' . $response->Message; } ``` 需要注意的是,上述代码中的 `your_access_key_id`、`your_access_key_secret`、`your_sign_name`、`your_template_code` 和 `your_mobile_number` 都需要根据实际情况进行替换。同时,由于阿里云 SDK 并不包含在 ThinkPHP 中,需要手动下载并添加到项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值