]> git.p6c8.net - form-email.git/blob - form-email/captcha.php
Unnoetige regulaere Ausdruecke entfernt (String-Funktionen sind schneller)
[form-email.git] / form-email / captcha.php
1 <?php
2
3 #
4 # Form E-Mail 3.5 - captcha.php
5 #
6 # Generieren eines Captcha-Bilds
7 #
8 # Autor: Patrick Canterino <patrick@patshaping.de>
9 # Letzte Aenderung: 7.11.2011
10 #
11 # Copyright (C) 2002-2011 Patrick Canterino
12 #
13 # Diese Datei kann unter den Bedingungen der "Artistic License 2.0"
14 # weitergegeben und / oder veraendert werden.
15 # Siehe:
16 # http://www.opensource.org/licenses/artistic-license-2.0
17 #
18
19 require('config.php');
20 require('functions.php');
21 require('class.Template.php');
22
23 if($captcha_enable) {
24 session_start();
25
26 if($captcha_max && isset($_SESSION['captcha_failed']) && $_SESSION['captcha_failed'] >= $captcha_max) {
27 show_fatal($err_captcha_max);
28 }
29 else {
30 unset($_SESSION['captcha']);
31
32 # Zufaellige Zeichenkette erzeugen
33
34 $captcha_string = '';
35
36 $x = 0;
37 srand();
38
39 while($x<$captcha_length) {
40 $rand = rand(0,strlen($captcha_possible)-1);
41 $captcha_string .= $captcha_possible[$rand];
42
43 $x++;
44 }
45
46 $_SESSION['captcha'] = $captcha_string;
47
48 # Ein Bild mit dem generierten Text erzeugen
49
50 if($captcha_image_bg && file_exists($captcha_image_bg)) {
51 # Es wurde ein Hintergrundbild angegeben
52
53 $captcha_img = imagecreatefrompng($captcha_image_bg);
54
55 $image_size = getimagesize($captcha_image_bg);
56 $captcha_width = $image_size[0];
57 $captcha_height = $image_size[1];
58 }
59 else {
60 # Es wurde kein Hintergrundbild angegeben
61
62 $captcha_img = imagecreate($captcha_width,$captcha_height);
63 }
64
65 $white = imagecolorallocate($captcha_img,$captcha_color_bg[0],$captcha_color_bg[1],$captcha_color_bg[2]);
66 $black = imagecolorallocate($captcha_img,$captcha_color_text[0],$captcha_color_text[1],$captcha_color_text[2]);
67
68 $angle = rand($captcha_angle[0],$captcha_angle[1]);
69 $t_x = rand($captcha_x[0],$captcha_y[1]);
70 $t_y = rand($captcha_y[0],$captcha_y[1]);
71
72 imagettftext($captcha_img,$captcha_font_size,$angle,$t_x,$t_y,$black,$captcha_font,$captcha_string);
73
74 # Zufaellige Linien einfuegen
75
76 $y = 0;
77
78 while($y<$captcha_lines) {
79 $begin_x = rand(0,$captcha_width);
80 $begin_y = rand(0,$captcha_height);
81 $end_x = rand(0,$captcha_width);
82 $end_y = rand(0,$captcha_height);
83
84 imageline($captcha_img,$begin_x,$begin_y,$end_x,$end_y,$black);
85
86 $y++;
87 }
88
89 # Bild ausgeben
90
91 header('Content-type: image/png');
92 imagepng($captcha_img);
93
94 imagedestroy($captcha_img);
95 }
96 }
97 else {
98 show_fatal($err_captcha_disabled);
99 }
100
101 #
102 ### Ende ###
103
104 ?>

patrick-canterino.de