Mibew Messenger Community

General => Support => Topic started by: shwekhaw on November 29, 2014, 09:14:21 PM

Title: Larger Font size for Captcha
Post by: shwekhaw on November 29, 2014, 09:14:21 PM
We have been getting increasing amount of spam bots recently so we have to put up Captcha. But the problem is real visitors are having trouble reading small fonts. I looked at captcha.php in libs folder. ImageString function has font size 5 as largest limit which is not large enough. I tried using imagettftext function and it does not work (don't know why. according to phpinfo, freetype library is enabled). Is there work around this to make the security code string larger (like using a function to enlarge the whole image?)
Title: Re: Larger Font size for Captcha
Post by: faf on November 30, 2014, 11:41:17 PM
What do you mean by "freetype library"? imagettftext (http://php.net/manual/en/function.imagettftext.php) function is a part of GD library. You'd better provide the appropriate parts of your phpinfo() output.

And how did you used imagettftext function? Show us the code.

As for the zooming an image. Personally I think that it's a terrible idea. However, have you tried to search in the PHP documentation? What about this function (http://php.net/manual/en/function.imagecopyresampled.php)?
Title: Re: Larger Font size for Captcha
Post by: shwekhaw on November 30, 2014, 11:59:44 PM
Quote from php.net on imagettftext
Quote
Note:
This function requires both the GD library and the ยป FreeType library.

Here is phpinfo
GD Support   enabled
GD Version   bundled (2.0.34 compatible)
FreeType Support   enabled
FreeType Linkage   with freetype
FreeType Version   2.3.11
T1Lib Support   enabled
GIF Read Support   enabled
GIF Create Support   enabled
JPEG Support   enabled
libJPEG Version   6b
PNG Support   enabled
libPNG Version   1.2.39
WBMP Support   enabled
XPM Support   enabled
XBM Support   enabled

Here is how I modify the code.

Code: [Select]

        $font = 'arial.ttf';
//     ImageString($image, 5, 30, 4, $security_code, $white);
imagettftext($image, 20, 0, 10, 20, $white, $font, $security_code);

I will try imagecopyresampled function.
Title: Re: Larger Font size for Captcha
Post by: shwekhaw on December 01, 2014, 12:41:46 AM
I made it work with imagecopyresampled function. Text looks little rough like zoom in effect. But it is readable.
Title: Re: Larger Font size for Captcha
Post by: faf on December 01, 2014, 07:35:19 AM
Talking about imagettftext function. I don't know what you meant by "does not work", since you haven't provided any messages from error logs and haven't described any symptoms.

But I suspect that your arial.ttf file is either inaccessible (maybe you should have used the full path) or broken. (BTW, don't forget that fonts should be used according to their licenses...)
Title: Re: Larger Font size for Captcha
Post by: shwekhaw on December 01, 2014, 08:30:00 AM
Strangely there is nothing in error log. I run test script mentioned in php.net and browser said the image cannot be displayed because it contains  error. All ttf files are in same folder as captcha.php (libs folder). I got them from under Win 7 as well my raspberry pi running wheezy.
Title: Re: Larger Font size for Captcha
Post by: faf on December 01, 2014, 12:17:11 PM
Strangely there is nothing in error log.

Then your server settings probably prevents PHP warnings from appearing in error logs.

All ttf files are in same folder as captcha.php (libs folder).

And what makes you think that the script from root directory will find the font file without full path?  ::)

Try this:

Code: [Select]
$font = dirname(__FILE__) . '/arial.ttf';
Title: Re: Larger Font size for Captcha
Post by: shwekhaw on December 01, 2014, 04:43:36 PM
Sever is reporting other php errors in log file so I am assuming error is not with php. I am using example 1 at http://php.net/manual/en/function.imagettftext.php. Full path does not work either. I think the problem is with font file. I am not familiar with installing font in linux system. Do I need to install font to the system like in Windows or just copying should work?
Title: Re: Larger Font size for Captcha
Post by: faf on December 02, 2014, 02:09:34 PM
Do I need to install font to the system like in Windows or just copying should work?

A TTF font is just a file. So copying should be enough.

At the same time, I don't think that this problem is somehow related to Mibew Messenger. It looks more like a problem with PHP and/or some of its libraries. Or a problem with the font. Or with the environment (for example, with some system limits and/or insufficient system resources). As a matter of fact, I can only stare into a crystal ball and make abstract guesses.
Title: Re: Larger Font size for Captcha
Post by: shwekhaw on December 03, 2014, 03:39:50 AM
Thanks. For now imagecopyresampled does the job.