php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】

2025-05-27 0 42

本文实例讲述了php+js实现的拖动滑块验证码验证表单操作。分享给大家供大家参考,具体如下:

现在很多网站,比如淘宝,京东等都改用使用极验拖动验证码实现登录,这种方式比传统的验证码方式有更好的体验,减少用户输入的错误,也同样能起到防盗刷的功能。现在很多极验都是第三方的,也很多都是收费的。今天在这里给大家分享自己用原生php实现的一个极验的代码。用原生php的好处就是以后你要嵌套到什么框架,可以直接用核心代码,改一改就好了。

极验拖动动画图

php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】

代码文件截图

php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】

代码实现

html文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
<!DOCTYPE html>

<html lang="">

<head>

<meta charset="utf-8">

<meta http-equiv="x-ua-compatible" content="ie=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>极验滑块拖动验证码-码农社区-web视频分享网</title>

<script type="text/javascript" src="tn_code.js?v=35"></script>

<link rel="stylesheet" type="text/css" href="style.css?v=27" rel="external nofollow" />

<style type="text/css"></style>

</head>

<body style="text-align:center;">

<div class="tncode" style="text-align: center;margin: 100px auto;"></div>

<script type="text/javascript">

$TN.onsuccess(function(){

//验证通过

});

</script>

php文件:check.php

?

1

2

3

4

5

6

7

8

9

10

11

12
<?php

require_once dirname(__FILE__).'/TnCode.class.php';

$tn = new TnCode();

if($tn->check()){

$_SESSION['tncode_check'] = 'ok';

echo "ok";

}else{

$_SESSION['tncode_check'] = 'error';

echo "error";

}

?>

主要核心文件:TnCode.class.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114
<?php

class TnCode

{

var $im = null;

var $im_fullbg = null;

var $im_bg = null;

var $im_slide = null;

var $bg_width = 240;

var $bg_height = 150;

var $mark_width = 50;

var $mark_height = 50;

var $bg_num = 6;

var $_x = 0;

var $_y = 0;

//容错象素 越大体验越好,越小破解难道越高

var $_fault = 3;

function __construct(){

//ini_set('display_errors','On');

//

error_reporting(0);

if(!isset($_SESSION)){

session_start();

}

}

function make(){

$this->_init();

$this->_createSlide();

$this->_createBg();

$this->_merge();

$this->_imgout();

$this->_destroy();

}

function check($offset=''){

if(!$_SESSION['tncode_r']){

return false;

}

if(!$offset){

$offset = $_REQUEST['tn_r'];

}

$ret = abs($_SESSION['tncode_r']-$offset)<=$this->_fault;

if($ret){

unset($_SESSION['tncode_r']);

}else{

$_SESSION['tncode_err']++;

if($_SESSION['tncode_err']>10){//错误10次必须刷新

unset($_SESSION['tncode_r']);

}

}

return $ret;

}

private function _init(){

$bg = mt_rand(1,$this->bg_num);

$file_bg = dirname(__FILE__).'/bg/'.$bg.'.png';

$this->im_fullbg = imagecreatefrompng($file_bg);

$this->im_bg = imagecreatetruecolor($this->bg_width, $this->bg_height);

imagecopy($this->im_bg,$this->im_fullbg,0,0,0,0,$this->bg_width, $this->bg_height);

$this->im_slide = imagecreatetruecolor($this->mark_width, $this->bg_height);

$_SESSION['tncode_r'] = $this->_x = mt_rand(50,$this->bg_width-$this->mark_width-1);

$_SESSION['tncode_err'] = 0;

$this->_y = mt_rand(0,$this->bg_height-$this->mark_height-1);

}

private function _destroy(){

imagedestroy($this->im);

imagedestroy($this->im_fullbg);

imagedestroy($this->im_bg);

imagedestroy($this->im_slide);

}

private function _imgout(){

if(!$_GET['nowebp']&&function_exists('imagewebp')){//优先webp格式,超高压缩率

$type = 'webp';

$quality = 40;//图片质量 0-100

}else{

$type = 'png';

$quality = 7;//图片质量 0-9

}

header('Content-Type: image/'.$type);

$func = "image".$type;

$func($this->im,null,$quality);

}

private function _merge(){

$this->im = imagecreatetruecolor($this->bg_width, $this->bg_height*3);

imagecopy($this->im, $this->im_bg,0, 0 , 0, 0, $this->bg_width, $this->bg_height);

imagecopy($this->im, $this->im_slide,0, $this->bg_height , 0, 0, $this->mark_width, $this->bg_height);

imagecopy($this->im, $this->im_fullbg,0, $this->bg_height*2 , 0, 0, $this->bg_width, $this->bg_height);

imagecolortransparent($this->im,0);//16777215

}

private function _createBg(){

$file_mark = dirname(__FILE__).'/img/mark.png';

$im = imagecreatefrompng($file_mark);

header('Content-Type: image/png');

//imagealphablending( $im, true);

imagecolortransparent($im,0);//16777215

//imagepng($im);exit;

imagecopy($this->im_bg, $im, $this->_x, $this->_y , 0 , 0 , $this->mark_width, $this->mark_height);

imagedestroy($im);

}

private function _createSlide(){

$file_mark = dirname(__FILE__).'/img/mark2.png';

$img_mark = imagecreatefrompng($file_mark);

imagecopy($this->im_slide, $this->im_fullbg,0, $this->_y , $this->_x, $this->_y, $this->mark_width, $this->mark_height);

imagecopy($this->im_slide, $img_mark,0, $this->_y , 0, 0, $this->mark_width, $this->mark_height);

imagecolortransparent($this->im_slide,0);//16777215

//header('Content-Type: image/png');

//imagepng($this->im_slide);exit;

imagedestroy($img_mark);

}

}

?>

附:完整实例代码点击此处本站下载

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/zxf100/archive/2019/07/16/11192781.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】 https://www.kuaiidc.com/70513.html

相关文章

发表评论
暂无评论