source: extensions/EasyCaptcha/tictac/gen_admin.php @ 26025

Last change on this file since 26025 was 24215, checked in by mistic100, 11 years ago

add extension EasyCaptcha

File size: 2.4 KB
Line 
1<?php
2define('PHPWG_ROOT_PATH', '../../../');
3include(PHPWG_ROOT_PATH . 'include/common.inc.php');
4
5is_admin() or die('Hacking attempt!');
6
7defined('EASYCAPTCHA_ID') or die('Hacking attempt!');
8include_once(EASYCAPTCHA_PATH . 'tictac/functions_tictac.inc.php');
9
10$props = array();
11
12// overwrite config from url params
13$conf['EasyCaptcha']['tictac'] = $_GET;
14$props['size'] = $conf['EasyCaptcha']['tictac']['size'];
15
16// compute various sizes
17$props['bd_size'] = max(1, floor($props['size']*0.01));
18$props['box_size'] = floor(($props['size']-4*$props['bd_size'])/3);
19$props['size'] = 3*$props['box_size'] + 4*$props['bd_size'] + 1;
20$props['pad'] = floor($props['box_size']*0.1);
21$props['radius'] = floor($props['box_size']*0.2);
22
23
24// pick a random config
25$configs = get_configs();
26$selection = $configs[ array_rand($configs) ];
27
28
29// create image
30$img = imagecreatetruecolor($props['size'], $props['size']);
31imageantialias($img, true);
32
33// background
34$bg_start = hex2rgb($conf['EasyCaptcha']['tictac']['bg1']);
35$bg_end = hex2rgb($conf['EasyCaptcha']['tictac']['bg2']);
36
37imagegradientrectangle($img, $bg_start , $bg_end);
38// $bg = imagecolorallocatehex($img, $conf['EasyCaptcha']['tictac']['bg1']);
39// imagefilledrectangle($img, 0, 0, $props['size'], $props['size'], $bg);
40
41// borders
42$bd = imagecolorallocatehex($img, $conf['EasyCaptcha']['tictac']['bd']);
43for ($i=0; $i<4; $i++)
44{
45  imagefilledrectangle($img, $i*($props['box_size']+$props['bd_size']), 0, $i*($props['box_size']+$props['bd_size'])+$props['bd_size'], $props['size'], $bd);
46  imagefilledrectangle($img, 0, $i*($props['box_size']+$props['bd_size']), $props['size'], $i*($props['box_size']+$props['bd_size'])+$props['bd_size'], $bd);
47}
48
49// crosses
50foreach ($selection['checked'] as $pos)
51{
52  drawcross($img, $pos, $conf['EasyCaptcha']['tictac']['obj']);
53}
54imagedestroy($img_cross);
55drawcross($img, $selection['answer'], $conf['EasyCaptcha']['tictac']['sel']);
56
57// circles
58$protect = $selection['checked'];
59$protect[] = $selection['answer'];
60$i = rand(2,4);
61$circles = array();
62
63while ($i>0)
64{
65  $pos = array(rand(0, 2), rand(0, 2));
66
67  foreach ($protect as $pro)
68  {
69    if ($pos[0]==$pro[0] && $pos[1]==$pro[1]) continue(2);
70  }
71  if (checkline($pos, $circles)) continue;
72
73  $protect[] = $pos;
74  $circles[$pos[0]][$pos[1]] = true;
75
76  drawcircle($img, $pos, $conf['EasyCaptcha']['tictac']['obj']);
77  $i--;
78}
79
80
81// output
82header('Content-Type: image/png');
83imagepng($img);
Note: See TracBrowser for help on using the repository browser.