Token, captacha, kodweryfikacyjny PHP
Skrypt tworzy ciekawy token aby działał musicie go katalogu ze skryptem wgrać dowolną czcionkę true type .ttf
Listing
<?php
/* captcha_image.php */
/* Długoć hasła */
$pass_length = 4;
/* Wymiary obrazu */
$width = 200;
$height = 60;
/* cieżka do czcionki TTF */
$font_path = dirname(__FILE__);
session_start();
/* Tworzy hasło. */
$passwd = "";
$i = 0;
while ($i < $pass_length) {
$passwd .= chr(rand(97, 122));
$i++;
}
/* Składuje hasło. */
$_SESSION["tt_pass"] = $passwd;
/* Uzyskuje listę dostępnych czcionek. */
$fonts = array();
if ($handle = opendir($font_path)) {
while (false !== ($file = readdir($handle))) {
/* Poszukuje czcionek TTF. */
if (substr(strtolower($file), -4, 4) == '.ttf') {
$fonts[] = $font_path . '/' . $file;
}
}
}
if (count($fonts) < 1) {
die("Nie znaleziono czcionek!");
}
/* Nagłówek obrazu: */
header("Content-Type: image/jpeg");
/* Nagłówki przeciwdziałajšce składowaniu obrazu w pamięci podręcznej: */
header("Expires: Mon, 01 Jul 1998 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
/* Tworzy obraz. */
$img = imagecreatetruecolor($width, $height);
/* Wypełnia tło losowym odcieniem pastelowym. */
$bg = imagecolorallocate($img, rand(210,255), rand(210,255), rand(210,255));
imagefilledrectangle($img, 0,0, $width, $height, $bg);
/* Komplikuje tło obrazu, uzupełniajšc je o różnokolorowe,
czworokštne figury. */
/* Tworzy linie gruboci od 10 do 30 pikseli rozcišgajšce się na całym obrazie. */
$right = rand(10, 30);
$left = 0;
while ($left < $width) {
$poly_points = array(
$left, 0, /* Lewy, górny narożnik */
$right, 0, /* Prawy, górny narożnik */
rand($right-25, $right+25), $height, /* Prawy, dolny narożnik */
rand($left-15, $left+15), $height); /* Lewy, dolny narożnik */
/* Tworzy wielokšt, wykorzystujšc losowe punkty składowane w tablicy. */
$c = imagecolorallocate($img, rand(210,255), rand(210,255), rand(210,255));
imagefilledpolygon($img, $poly_points, 4, $c);
/* Zbliża się do prawej krawędzi. */
$random_amount = rand(10, 30);
$left += $random_amount;
$right += $random_amount;
}
/* Wybiera podstawowy przedział wartoci kolorów dla pionowych i poziomych linii. */
$c_min = rand(120, 185);
$c_max = rand(195, 280);
/* Rysuje przypadkowe, pionowe linie na całej szerokoci obrazu. */
$left = 0;
while ($left < $width) {
$right = $left + rand(3, 7);
$offset = rand(-3, 3); /* Przesunięcie decydujšce o nachyleniu */
$line_points = array(
$left, 0, /* Lewy, górny narożnik */
$right, 0, /* Prawy, górny narożnik */
$right + $offset, $height, /* Prawy, dolny narożnik */
$left + $offset, $height); /* Lewy, dolny narożnik */
$pc = imagecolorallocate($img, rand($c_min, $c_max),
rand($c_min, $c_max),
rand($c_min, $c_max));
imagefilledpolygon($img, $line_points, 4, $pc);
/* Zbliża się do prawej krawędzi. */
$left += rand(20, 60);
}
/* Rysuje przypadkowe, poziome linie na całej wysokoci obrazu. */
$top = 0;
while ($top < $height) {
$bottom = $top + rand(1, 4);
$offset = rand(-6, 6); /* Przesunięcie decydujšce o nachyleniu */
$line_points = array(
0, $top, /* Lewy, górny narożnik */
0, $bottom, /* Lewy, dolny narożnik */
$width, $bottom + $offset, /* Prawy, dolny narożnik */
$width, $top + $offset); /* Prawy, górny narożnik */
$pc = imagecolorallocate($img, rand($c_min, $c_max),
rand($c_min, $c_max),
rand($c_min, $c_max));
imagefilledpolygon($img, $line_points, 4, $pc);
$top += rand(8, 15);
}
/* Określa odległość dzielącą znaki. */
$spacing = $width / (strlen($passwd)+2);
/* Poczštkowa współrzędna pozioma */
$x = $spacing;
/* Rysuje poszczególne znaki. */
for ($i = 0; $i < strlen($passwd); $i++) {
$letter = $passwd[$i];
$size = rand($height/3, $height/2);
$rotation = rand(-30, 30);
/* Losowa współrzędna pionowa z przestrzeniš na wyższe znaki */
$y = rand($height * .90, $height - $size - 4);
/* Wybiera losowš czcionkš. */
$font = $fonts[array_rand($fonts)];
/* Wybiera kolor dla danej litery. */
$r = rand(100, 255); $g = rand(100, 255); $b = rand(100, 255);
/* Tworzy kolory samej litery i jej cienia. */
$color = imagecolorallocate($img, $r, $g, $b);
$shadow = imagecolorallocate($img, $r/3, $g/3, $b/3);
/* Rysuje kolejno cień litery i samš literę. */
imagettftext($img, $size, $rotation, $x, $y, $shadow, $font, $letter);
imagettftext($img, $size, $rotation, $x-1, $y-3, $color, $font, $letter);
/* Przechodzi do kolejnej pozycji na danej kanwie. */
$x += rand($spacing, $spacing * 1.5);
}
imagejpeg($img); /* Wysyła gotowy obraz. */
imagedestroy($img); /* Zwalnia pamięć obrazu. */
?>
Dodano przez: igor
Ranga: Administrator serwisu Punktów: 0
Ranga: Administrator serwisu Punktów: 0
Komentarze użytkowników
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno