سلام، بنده کد زیر رو نوشتم :
کد:
<?php
$captcha = rand(100000,999999);
$image=imagecreate(230, 70);
$background = imagecolorallocatealpha($image, 239, 239, 239, 1);
$textColor = imagecolorallocatealpha($image, 0, 0, 0, 1);
$fontSize = mt_rand(15, 35);
imagettftext ($image, $fontSize, 30, 0, 0, $textColor,"SegoeUI.ttf", $captcha);
imagejpeg($image);
imagedestroy($image);
session_start();
$_SESSION['captcha'] = $captcha;
?>
اما خروجی که بهم می ده یک سری اعداد و ارقام عجیب و غریبه، چطور درستش کنم؟
این چیزی که گذاشتی اشتباهات زیادی داره. اگه خواستی از این استفاده کن:
<?php
session_start();
$_SESSION['captcha'] = rand(12345, 99999);
$img = imagecreate(80,30);
imagecolorallocate($img, 244, 244, 254);
$line_color = imagecolorallocate($img, 80, 143, 143);
$text_color = imagecolorallocate($img, 00, 000,00);
for($i=0;$i<10;$i++)
{
imageline($img, rand(20, 5*$i), rand(0, 10*$i), rand(20, 30*$i), rand(30, 30+$i), $line_color);
}
$font = 'Brutality.ttf';
imagefttext($img, 20, rand(0, 5), rand(5, 10), rand(18, 30), $text_color, $font, $_SESSION['captcha']);
header('Content-Type:image/png');
imagepng($img);
imagedestroy($img);
?>
خروجی که شما میگیرین، یک تصویره. پس باید هدرهای تصویر رو هم ست کنید. الان چون از imagejpeg استفاده کردین، باید این هدر رو ست کنید:
header('Content-Type: image/jpeg');
استاد، اون هدر رو که اضافه می کنم، مثل کد آقای راوند ارور می ده :
به جای نمایش عکس نوشته عکس نمی تونه نمایش داده بشه چون حاوی ارور هست ...
هدر رو بردارین ببینین چه خطایی میگیرین. اگه خطایی نبود و فقط محتوای اعداد و ارقام و درواقع محتویات عکس رو دیدین، احتمالاً خطا بخاطر وجود خود هدر پیش میاد و علتش هم ذخیره کردن فایل با فرمت UTF-8 معمولی (بجای UTF-8 without BOM) هست.
ببخشید استاد زیاد سوال می کنم، الان این هد رو برداشتم، اینو نوشته :
‰PNG IHDRPŒiƒ3PLTEôôþPÕÕÞ··¾˜˜ž2YY55==?zz'ü;‰#þÿ„éÿŽŒ¿‘§”~€ïL„ò5)¦8¼‹ %âïeÉ$l}ÿÂÊIŸLœ ³.YÆ1žG× yŸ±Š8Ýá+¯à-qÆî–ªÔÖs,9¼ƒq1%ô1BR]©¯Ì§á ´`"õoÁ”3²gBBÝ|‹TéTÐtHyŒ |;fæÂØ54S¨£é¬ú vÕš'€¯OøWÍ‹Ö‘uk›XÕ/x³Á–UˆŸLt˜¡–šª[Èéê£ø‚SÊÅ[p÷ìHˆ£ª›öqõÉö/ZÕ/8æ°‚Ùnãuµ]¶Ã4ÖsÕgqÏ)îêfòŽó48ÿëdId„ƒSœ¢jNHo±·ªÏ%… •_ÎÚ˜}#œ#ÖZbû³I1òõ!Ù¨•V@€„+ÓýRPBNüåÜY¨‰+wiÄ1âI¸6Òé« °©{í‡'áQ4‰r")C«cRvd’PØÌi†Ú¯çÆs©<òQövÕ„5m|Ÿ<ô*LíÕJÍž#?ùÞ,™{ ¡Ÿm;ÎÇÏjp"£œÒÂóòôpB»_¥ ¢[“‘ݪq[÷ýv%Ú‚’çÀ£õYYÒàÆ8Mn£² -áþmúæKõ2¬çó_ …gm6LIEND®B`‚
وقتی با without BOM ذخیره می کنم فقط همین ها یکم کوچولوتر می شن و وقتی در همین Encoding بهش هدر رو اضافه می کنم، همون ارور رو می ده ...
یرای کپچا از کد زیر استفاده کنید....
session_start();
$code=rand(1000,9999);
$_SESSION["code"]=$code;
$im = imagecreatetruecolor(50, 24);
$bg = imagecolorallocate($im, 22, 86, 165); //background color blue
$fg = imagecolorallocate($im, 255, 255, 255);//text color white
imagefill($im, 0, 0, $bg);
imagestring($im, 5, 5, 5, $code, $fg);
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);