apache集成php7.3.5的详细步骤-自学php网
windows 2008r2+php5.6.28环境搭建详细过程-自学php网
PHP 代码简洁之道(小结)-自学php网
php设计模式之单例模式用法经典示例分析-自学php网
redis+php实现微博(三)微博列表功能详解-自学php网
redis+php实现微博(一)注册与登录功能详解-自学php网
redis+php实现微博(二)发布与关注功能详解-自学php网
php设计模式之工厂模式用法经典实例分析-自学php网
php文件包含的几种方式总结-自学php网
smarty模板的使用方法实例分析-自学php网
PHP MVC框架中类的自动加载机制实例分析-自学php网
php+redis实现消息队列功能示例详解-自学php网
php写入txt乱码的解决方法-自学php网
php写入mysql中文乱码的实例解决方法-自学php网
php校验公钥是否可用的实例方法-自学php网
PHP实现的文件浏览器功能简单示例-自学php网
php创建多级目录与级联删除文件的方法示例-自学php网
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码详解-自学php网
分析PHP7 的垃圾回机制详解-自学php网
PHP实现跨服务器session共享的方法教程-自学php网
ADS

thinkphp整合系列之极验滑动验证码geetest功能-自学php网

来源:      时间: 2019-08-01 11:26:00     阅读数:3276 次     作者:

摘要: php家园网提供大量免费、原创、高清的php视频教程,并定期举行公益php培训!可边学习边在线修改示例代码,查看执行效果!php从入门到精通,一站式php自学平台! ...


300-250
给一个央企做官网,登录模块用的thinkphp验证码类。但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就委托了宁波一个专业检测公司用专业工具检测出,后台验证码能用打码工具暴力破解,发函要求整改。so,就有了下面的极速验证图形http://www.geetest.com/一:注册获取key二:导入sdk三:生成验证样式 网站管理系统后台 后台管理中心 四:验证函数/** * geetest检测验证码 */function geetest_chcek_verify($data){ $geetest_id = "7149e2021d7938157e"; $geetest_key = "62b92039e1e9cf9455"; $geetest=new \Org\Util\Xb\GeetestLib($geetest_id,$geetest_key); $user_id=$_SESSION['geetest']['user_id']; $ip_address=$_SESSION['geetest']['ip_address']; $dataa = array( "user_id" => $user_id, # 网站用户id "client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式 "ip_address" => $ip_address, # 请在此处传输用户请求验证时所携带的IP ); if ($_SESSION['geetest']['gtserver']==1){ $result=$geetest->success_validate($data['geetest_challenge'], $data['geetest_validate'], $data['geetest_seccode'], $dataa); //return $result; if ($result) { //return 11; return true; } else{ //return 22; return false; } }else{ if ($geetest->fail_validate($data['geetest_challenge'],$data['geetest_validate'],$data['geetest_seccode'])) { //return 33; return true; }else{ //return 44; return false; } }}//获取id地址function GetIP() { if (!empty($_SERVER["HTTP_CLIENT_IP"])) { $cip = $_SERVER["HTTP_CLIENT_IP"]; } elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) { $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } elseif (!empty($_SERVER["REMOTE_ADDR"])) { $cip = $_SERVER["REMOTE_ADDR"]; } else { $cip = "无法获取!"; } return $cip;}五:php 生成验证码 并 验证//极速验证 public function verifys(){ //require_once dirname(dirname(dirname(detest_file))) . '/lib/class.geetestlib.php'; //require_once dirname(dirname(detest_file)) . '/config/config.php'; // $GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY); $geetest_id = "7149e2021d7938157e9"; $geetest_key = "62b92039e1e9cf"; $geetest=new \Org\Util\Xb\GeetestLib($geetest_id,$geetest_key); //dump($geetest);die; $user_id = "test"; $data = array( "user_id" => $user_id, # 网站用户id "client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式 "ip_address" => GetIP(), # 请在此处传输用户请求验证时所携带的IP ); $status = $geetest->pre_process($data,1); //dump($status); $_SESSION['geetest']=array( 'gtserver'=>$status, 'user_id'=>$user_id, 'ip_address'=>GetIP(), ); echo $geetest->get_response_str(); } public function cdtsh_log_smfyws() { if ($_SESSION['userid']) { $this->redirect('Admin/Index/Index'); } else { if (IS_POST) { $username = $_POST['username']; $password = $_POST['password']; //$geetest_challenge = $_POST['geetest_challenge']; //$geetest_validate = $_POST['geetest_validate']; //$geetest_seccode = $_POST['geetest_seccode']; $data=I('post.'); if($data['geetest_challenge']=="" || $data['geetest_validate']=="" ||$data['geetest_seccode']=="" ){ $this->error('请进行图形验证'); }else{ //dump(geetest_chcek_verify($data)); if (geetest_chcek_verify($data)){ //echo '验证成功'; if ($this->loginAdmin($username, $password)) { $data = M("User")->where("username='".$username."' and password='".md5($password)."'")->find(); if ($data["status"] != 1) { //判断是否禁用 $this->recordLoginAdmin($_POST['username'], $_POST['password'], 0, "账号禁用"); //记录登录日志 $this->error('该帐号禁用'); } else { $save["lastlogin_time"] = time(); $save["lastlogin_ip"] = get_client_ip(); $save["login_num"] = $data["login_num"] + 1; $status = M("user")->where(array("id" => $data['id']))->save($save); $_SESSION['userid'] = $data['id']; $_SESSION['user'] = $data['username']; $_SESSION['rid'] = $data['a_Id']; $this->recordLoginAdmin($_POST['username'], $_POST['password'], 1); //记录登录日志 $this->redirect('Admin/Index/Index'); //$this->success('登录成功',U('Admin/Index/Index')); } } else { $this->recordLoginAdmin($_POST['username'], $_POST['password'], 0, "账号密码错误"); //记录登录日志 $this->error('登录失败'); } }else{ //echo '图形验证失败'; $this->error('图形验证失败'); } } } else { $this->display(); } } }总结以上所述是小编给大家介绍的thinkphp整合系列之极验滑动验证码geetest功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对自学php网网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

700-90


顶一下
(1)
100%
踩一下
(0)
0%

特别声明:本文为 PHP家园 自媒体平台 作者上传并发布,仅代表该作者观点。PHP家园 仅提供信息发布 平台。
本站全部内容均为 PHP家园 军迷娱乐与生活分享与个人的看法,不涉及任何军事与政治内容,图片与文章均来自网络,如有任何内容您觉得不妥,请立刻联系网站管理员给予删除!

查看原文      
最新评论   点击评论  
您好!没有相关评论,请 点击评论


表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
点击查看更多精彩内容

最新资讯

最新文章

返回顶部