ABZiko
Unregistered
تشکرها:
بار تشکر شده در پست
سلام، بنده کد زیر رو نوشتم :
کد:
<?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;
?>
اما خروجی که بهم می ده یک سری اعداد و ارقام عجیب و غریبه، چطور درستش کنم؟
ارسالها: 65
موضوعها: 16
تاریخ عضویت: خرداد 1394
اعتبار:
1
تشکرها: 32
19 بار تشکر شده در 17 پست
این چیزی که گذاشتی اشتباهات زیادی داره. اگه خواستی از این استفاده کن:
<?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);
?>
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
خروجی که شما میگیرین، یک تصویره. پس باید هدرهای تصویر رو هم ست کنید. الان چون از imagejpeg استفاده کردین، باید این هدر رو ست کنید:
header('Content-Type: image/jpeg');
ABZiko
Unregistered
تشکرها:
بار تشکر شده در پست
استاد، اون هدر رو که اضافه می کنم، مثل کد آقای راوند ارور می ده :
به جای نمایش عکس نوشته عکس نمی تونه نمایش داده بشه چون حاوی ارور هست ...
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
هدر رو بردارین ببینین چه خطایی میگیرین. اگه خطایی نبود و فقط محتوای اعداد و ارقام و درواقع محتویات عکس رو دیدین، احتمالاً خطا بخاطر وجود خود هدر پیش میاد و علتش هم ذخیره کردن فایل با فرمت UTF-8 معمولی (بجای UTF-8 without BOM) هست.
ABZiko
Unregistered
تشکرها:
بار تشکر شده در پست
ببخشید استاد زیاد سوال می کنم، الان این هد رو برداشتم، اینو نوشته :
‰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 بهش هدر رو اضافه می کنم، همون ارور رو می ده ...
ABZiko
Unregistered
تشکرها:
بار تشکر شده در پست
ارسالها: 41
موضوعها: 4
تاریخ عضویت: خرداد 1394
اعتبار:
3
تشکرها: 8
43 بار تشکر شده در 21 پست
یرای کپچا از کد زیر استفاده کنید....
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);
|