введение сгенерированного числа при регистрации

  • Автор темы Автор темы chery
  • Дата начала Дата начала

chery

Новичок
введение сгенерированного числа при регистрации

Здравствуйте. На некоторых сайтах при регистрации нужно ввести число, изображённое на картинке. Подскажите как это реализовывается средствами PHP. Не могу найти соответствующие топики нигде.
 
куча классов есть готовых на phpclasses.org - скачай - загляни внутрь - разберешься как сделано :))
 
Я разобрался с библиотекой GD. Но вот может кто нибудь подскажет поконкретней, как мне быть с генерацией изображения с случайным числом для регистрации. Не имею ни малейшего понятия, как это реализовать средствами PHP. На phpclasses.org какой именно раздел с подобными классами?
Кто знает подскажите конкретней, а не так "GD" и всё. Ну вот разобрался я с GD. А дальше то что?
 
Ну если разобрался то генери :)
Создаешь картинку, даешь ей фон с шумом и выводишь текст с кодом :)
Можно поизвращаться со шрифтом, размером и углом наклона.
 
Народ, подкиньте ссылку, где можно прочитать как это делается или может есть откуда скачать. Заморочился я уже с этим генератором чисел. Ещё же надо как то сверять то что введено в форму и то, что выведено было на рисунке. Будет проще, если я увижу исходный код. Буду очень признателен.
 
PHP:
for ($i=1;$i < 8 ;  ) {
	$ch = chr(rand(50,90));
	if ($ch != "i" && $ch != "I" && $ch != "0" && $ch != "O" && (preg_match("/[A-Z]/",$ch) || preg_match("/[0-9]/",$ch))) {
		$cnt .= $ch;
		++$i;
	}
}
session_start();

$_SESSION['v_code'] = $cnt;

header("Content-type: image/png");
$slen = strlen($cnt);
$im = imagecreate(140,20);
   $white = imagecolorallocate($im, 255,255,255);
   $orange = imagecolorallocate($im, 255,0, 0);
   $orange_ligth = imagecolorallocate($im, 255,80, 80);

	for($i=5;$i<300;$i=$i+10) {
		imageline($im, $i, 1, $i, 20, $orange_ligth);
	}
	for($i=6;$i<20;$i=$i+10) {
		imageline($im, 1, $i, 300, $i, $orange_ligth);
	}
    imagestring($im,5, 40,1, $cnt, $orange);

    imagepng($im);
    imagedestroy($im);

PS. не предирайтесь - не мое
 
ну вот чтоя намучал.
Это сценарий. который выводит изображение и форму для ввода числа ниже:


<?

$sid = session_id();
if(!$sid){
session_start();
$sid = session_id();
}
require(dirname(__FILE__)."/humancheck_config.php");

//генерируем код
$noautomationcode = "";
for($i=0; $i<$config_max_digits; $i++)
$noautomationcode = $noautomationcode.rand(0,9);
//сохранить всё это в сессии
$HTTP_SESSION_VARS["noautomationcode"] = $noautomationcode;

//показать форму

$html_form =<<< EHTML

<img src='humancheck_showcode.php?sid=$sid'>

<form action='humancheck_check.php' method='post'>
<input type='hidden' name='sid' value='$sid'>

<input type='text' name='code'>
<input type='Submit' name='Submit'>
</form>
EHTML;

echo($html_form);

?>


При выполнении сценария пишет мне ошибки:

Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\Program Files\Apache Group\Apache\htdocs\reg\humancheck_form.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\Apache Group\Apache\htdocs\reg\humancheck_form.php:5) in C:\Program Files\Apache Group\Apache\htdocs\reg\humancheck_form.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\Apache Group\Apache\htdocs\reg\humancheck_form.php:5) in C:\Program Files\Apache Group\Apache\htdocs\reg\humancheck_form.php on line 5

Так, дальше идёт сценарий, который создаёт изображение и генерит число на нём:

<?
error_reporting(85);//ошибка

require(dirname(__FILE__)."/humancheck_config.php");
$sid=trim($HTTP_GET_VARS["sid"]);

session_id($sid);
session_start();
$noautomationcode = $HTTP_SESSION_VARS["noautomationcode"];
//echo($noautomationcode );
//$noautomationcode =123123123;
$img_path = dirname(__FILE__)."/$config_back_image";
$img = ImageCreateFromPng($img_path);
$img_size = getimagesize($img_path );

$fw = imagefontwidth ( $config_font );
$fh = imagefontheight ( $config_font );

$x = ($img_size[0] - strlen($noautomationcode) * $fw )/2;
$y = ($img_size[1] - $fh) / 2; // код по центру изображения

$color = imagecolorallocate($img,
hexdec(substr($config_code_color,1,2)),
hexdec(substr($config_code_color,3,2)),
hexdec(substr($config_code_color,5,2))
);
//echo($color);
imagestring ( $img, $config_font, $x, $y, $noautomationcode, $color);
imagepng($img);

?>


Далее вот файл конфигурации, назову его так:

<?

$config_max_digits = 5; //количество символов на изображении
$config_back_image = "backgroundimage.png"; // само изображение на фоне которого это чётрв код будет вывожится
$config_font = 200; //размер шрифта
$config_code_color = "FF7700"; //ну и собственно цвет этого шрифта
?>

Ну и теперь то, что видит пользователь на экране в случае верно или не верно введённого кода:

<?
error_reporting(85);//ошибка

require(dirname(__FILE__)."/humancheck_config.php");
$sid=trim($HTTP_POST_VARS["sid"]);

session_id($sid);
session_start();
$noautomationcode = $HTTP_SESSION_VARS["noautomationcode"];

$code = trim($HTTP_POST_VARS["code"]);
if($code != $noautomationcode){
//код не верный
die("<br><h1>Код не верный!</h1>");
}
?>


<html>
<body>
<p><strong>Код верный!</strong><br>
</body>
</html>


Фух...
Ну и где ошибка....мля? Я уже за....товарищи.
Прошу помощи.
 
C сессиями непорядок у тебя
И с хидерами

http://phpfaq.ru/sessions
http://phpfaq.ru/headers
 
Ничего у меня в пятницу не заработало. Ушёл домой, отдохнул на эти выхи, сегодня пришёл и решил ещё раз посмотреть, чего там за ошибки выводит. Ну так вот, ничего не вывело. Всё заработало без каких либо траблов. Шо за мистика...
 
Сверху