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

chery

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

Здравствуйте. На некоторых сайтах при регистрации нужно ввести число, изображённое на картинке. Подскажите как это реализовывается средствами PHP. Не могу найти соответствующие топики нигде.
 

Vital_N

Новичок
куча классов есть готовых на phpclasses.org - скачай - загляни внутрь - разберешься как сделано :))
 

chery

Новичок
Я разобрался с библиотекой GD. Но вот может кто нибудь подскажет поконкретней, как мне быть с генерацией изображения с случайным числом для регистрации. Не имею ни малейшего понятия, как это реализовать средствами PHP. На phpclasses.org какой именно раздел с подобными классами?
Кто знает подскажите конкретней, а не так "GD" и всё. Ну вот разобрался я с GD. А дальше то что?
 

asm

Пофигист
Ну если разобрался то генери :)
Создаешь картинку, даешь ей фон с шумом и выводишь текст с кодом :)
Можно поизвращаться со шрифтом, размером и углом наклона.
 

chery

Новичок
Народ, подкиньте ссылку, где можно прочитать как это делается или может есть откуда скачать. Заморочился я уже с этим генератором чисел. Ещё же надо как то сверять то что введено в форму и то, что выведено было на рисунке. Будет проще, если я увижу исходный код. Буду очень признателен.
 

whirlwind

TDD infected, paranoid
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. не предирайтесь - не мое
 

chery

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


<?

$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>


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

pauk

Новичок
C сессиями непорядок у тебя
И с хидерами

http://phpfaq.ru/sessions
http://phpfaq.ru/headers
 

chery

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