FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » php run captcha script on localhost
Show: Today's Messages :: Unread Messages :: Show Polls :: Message Navigator
| Subscribe to topic | Bookmark topic 
Switch to threaded view of this topic Create a new topic Submit Reply
php run captcha script on localhost [message #181499] Sun, 19 May 2013 07:17 Go to next message
Paul Klacher is currently offline  Paul Klacher
Messages: 5
Registered: May 2013
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
Hi

I'm trying to implement a php html javascript form with captcha validation. I'm trying to run the script from this page:

http://www.white-hat-web-design.co.uk/articles/php-captcha.php

as a localhost page on my computer. Nothing is showing. The @imagecreate is not showing anything.

My system runs windows 7 and Php, MySql and Apache server installed separately. Is there any configuration to do with for instance php.ini or Apache conf file?

I guess I'm missing a simple step at some point;
Thanks for your help

Paul S K
Re: php run captcha script on localhost [message #181500 is a reply to message #181499] Sun, 19 May 2013 07:33 Go to previous messageGo to next message
Jeff North is currently offline  Jeff North
Messages: 58
Registered: November 2010
Karma: 0
Member
add to buddy list
ignore all messages by this user
On Sun, 19 May 2013 04:17:58 -0700 (PDT), in comp.lang.php Paul
Klacher <pklacher(at)gmail(dot)com>
<efd3cd1e-d61b-4c34-a41a-464e968fec32(at)googlegroups(dot)com> wrote:

> | Hi
> |
> | I'm trying to implement a php html javascript form with captcha validation. I'm trying to run the script from this page:
> |
> | http://www.white-hat-web-design.co.uk/articles/php-captcha.php
> |
> | as a localhost page on my computer. Nothing is showing. The @imagecreate is not showing anything.
> |
> | My system runs windows 7 and Php, MySql and Apache server installed separately. Is there any configuration to do with for instance php.ini or Apache conf file?
> |
> | I guess I'm missing a simple step at some point;
> | Thanks for your help
> |
> | Paul S K

Did you try looking at their help page?
http://www.white-hat-web-design.co.uk/blog/php-captcha-security-images-help /
What were the responses from phpinfo?
Re: php run captcha script on localhost [message #181503 is a reply to message #181499] Sun, 19 May 2013 07:47 Go to previous messageGo to next message
The Natural Philosoph is currently offline  The Natural Philosoph
Messages: 993
Registered: September 2010
Karma: 0
Senior Member
add to buddy list
ignore all messages by this user
On 19/05/13 12:17, Paul Klacher wrote:
> Hi
>
> I'm trying to implement a php html javascript form with captcha validation. I'm trying to run the script from this page:
>
> http://www.white-hat-web-design.co.uk/articles/php-captcha.php
>
> as a localhost page on my computer. Nothing is showing. The @imagecreate is not showing anything.
>
> My system runs windows 7 and Php, MySql and Apache server installed separately. Is there any configuration to do with for instance php.ini or Apache conf file?
>
> I guess I'm missing a simple step at some point;
> Thanks for your help
>
> Paul S K
IIRC the deafult WAMP setup does NOT include the graphics libraries this
code requires.
(gd)

have a look here and check all is as it should be

http://www.php.net/manual/en/image.installation.php

--
Ineptocracy

(in-ep-toc’-ra-cy) – a system of government where the least capable to lead are elected by the least capable of producing, and where the members of society least likely to sustain themselves or succeed, are rewarded with goods and services paid for by the confiscated wealth of a diminishing number of producers.
Re: php run captcha script on localhost [message #181504 is a reply to message #181499] Sun, 19 May 2013 08:03 Go to previous messageGo to next message
Paul Klacher is currently offline  Paul Klacher
Messages: 5
Registered: May 2013
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
Thanks Jeff & Natural Philosopher

So I understand from the link I should tweak the php.ini file

Should I add below switcher anywhere in the file?
Supported image formats
--with-jpeg-dir=DIR
--with-png-dir=DIR
--with-xpm-dir=DIR

Supported font libraries
--with-freetype-dir=DIR
--with-t1lib[=DIR]
--enable-gd-native-ttf


actually there is already something about jpeg in the file, should I uncomment it?
[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; http://php.net/gd.jpeg-ignore-warning
;gd.jpeg_ignore_warning = 0

Is this automatically working on the online remote server (freehosting) I want to run the captcha code?

Thanks
P
Re: php run captcha script on localhost [message #181505 is a reply to message #181504] Sun, 19 May 2013 08:12 Go to previous messageGo to next message
The Natural Philosoph is currently offline  The Natural Philosoph
Messages: 993
Registered: September 2010
Karma: 0
Senior Member
add to buddy list
ignore all messages by this user
On 19/05/13 13:03, Paul Klacher wrote:
> Thanks Jeff & Natural Philosopher
>
> So I understand from the link I should tweak the php.ini file
>
> Should I add below switcher anywhere in the file?
> Supported image formats
> --with-jpeg-dir=DIR
> --with-png-dir=DIR
> --with-xpm-dir=DIR
>
> Supported font libraries
> --with-freetype-dir=DIR
> --with-t1lib[=DIR]
> --enable-gd-native-ttf
>
>
> actually there is already something about jpeg in the file, should I uncomment it?
> [gd]
> ; Tell the jpeg decode to ignore warnings and try to create
> ; a gd image. The warning will then be displayed as notices
> ; disabled by default
> ; http://php.net/gd.jpeg-ignore-warning
> ;gd.jpeg_ignore_warning = 0

sorry. I am not a windows user.

> Is this automatically working on the online remote server (freehosting) I want to run the captcha code?

write a short script that invokes phpinfo() and run it there. That tells
you what the remote configuration is

i.e. there should be a section like this


gd

GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.7
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled


> Thanks
> P


--
Ineptocracy

(in-ep-toc’-ra-cy) – a system of government where the least capable to lead are elected by the least capable of producing, and where the members of society least likely to sustain themselves or succeed, are rewarded with goods and services paid for by the confiscated wealth of a diminishing number of producers.
Re: php run captcha script on localhost [message #181506 is a reply to message #181499] Sun, 19 May 2013 08:18 Go to previous messageGo to next message
Paul Klacher is currently offline  Paul Klacher
Messages: 5
Registered: May 2013
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
i.e. there should be a section like this

True, there is such a section, i'm going to upload captcha scripts and see if it works directly remotly -thanks
Re: php run captcha script on localhost [message #181511 is a reply to message #181499] Sun, 19 May 2013 10:01 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
add to buddy list
ignore all messages by this user
On 5/19/2013 7:17 AM, Paul Klacher wrote:
> Hi
>
> I'm trying to implement a php html javascript form with captcha validation. I'm trying to run the script from this page:
>
> http://www.white-hat-web-design.co.uk/articles/php-captcha.php
>
> as a localhost page on my computer. Nothing is showing. The @imagecreate is not showing anything.
>
> My system runs windows 7 and Php, MySql and Apache server installed separately. Is there any configuration to do with for instance php.ini or Apache conf file?
>
> I guess I'm missing a simple step at some point;
> Thanks for your help
>
> Paul S K
>

A couple of things.

First of all, get rid of the '@' before imagecreate(). All it does is
hide error messages (you should never use it unless you have a VERY good
reason to do so - and even then shy away from using it).

Additionally, the "or die(...)" is bad - it terminates processing of the
script immediately, generating syntactically invalid output.

Next, in your php.ini file, ensure the following are set:

error_reporting = E_ALL
display_errors = on

(These should always be on for a development system while display_errors
should never be on for a production system).

Next, this must be in a separate file called from an img= statement, not
in the code with the rest of your page. What happens when you try
to load the image in your browser directly?

And finally, what does phpinfo() show you?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: php run captcha script on localhost [message #181513 is a reply to message #181499] Sun, 19 May 2013 12:23 Go to previous messageGo to next message
Paul Klacher is currently offline  Paul Klacher
Messages: 5
Registered: May 2013
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
Hi Jerry

Thanks for your help.

I have left for a while testing captcha script on localhost and went straight doing test onto the server

But I can't get the script to work at all

In between I have made some of the changes in my php.ini
like
error_reporting = E_ALL
display_errors = on
I checked and it was on.


>>> (These should always be on for a development system while display_errors
should never be on for a production system).
>>> Next, this must be in a separate file called from an img= statement, not
in the code with the rest of your page. What happens when you try
to load the image in your browser directly?

I'll check this after it works online


Below are some html and php extract form file currently online
Running the script online keeps returning
"The captcha code does not match!"

I have added an echo statement for the captcha value and the server value and it displays the same value but it doesn't write to the .txt file (the form is just writing to a text file, not sending an email as the server doesn't allow me to do that... free hosting)

------------------------------------------------------------
index99_comments.html
(the html for the form)
------------------------------------------------------------

<div id="gate_A_resize3_comments"><p id="blackboard"></p>

<form method="POST" name="contact_form" action="index99_.php">

<p>Your Name (Optional)<input type="text" name="name">
> Email Address <input type="text" name="email">
<br />
<p>Message: </p><CENTER>
<textarea name="comments" maxlength="1000" cols="40" rows="12"></textarea></p>

<p><label><img src="index99_test_captcha.php" id='captchaimg' ></label></p>

<p><label for='message'>Enter the code above</label>
<input id="6_letters_code" name="6_letters_code2" type="text"></p>

<p><input type="submit" value="Submit"></center></p>

</form>
</div>

------------------------------------------------------------
index99_.php
------------------------------------------------------------

<?php

$name = $_POST['name'];
$email_from = $_POST['email'];
$comments = $_POST['comments'];
$errors = '';

//Note: the captcha code is compared case insensitively.
//if you want case sensitive match, update the check above to
// strcmp()
if(empty($_SESSION['6_letters_code'] ) || strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code2']) != 0){
$errors .= "\n The captcha code does not match!\n";

}

if(!empty($errors)){
echo "Message failed to send \n";
echo "<p class='err'>".nl2br($errors)."</p>";
echo $_SESSION['6_letters_code'];
echo "\n";
echo $_POST['6_letters_code2'];
}

function clean_string($string){
$bad = array("content-type", "bcc:", "to:", "cc", "href");
return str_replace($bad, "", $string);
}

//open the file and choose the mode
if(empty($errors)){

$cmess = "Form details below.\n\n";
$cmess .= "Name : " .clean_string($name)."\n";
$cmess .= "email : " .clean_string($email_from)."\n";
$cmess .= "Comments : ".clean_string($comments)."\n";

$fh = fopen("***", "a");
fwrite($fh, $cmess);

//close the file
fclose($fh);

//header("Location: http://localhost/***");
header("Location: http://***");
}

?>


------------------------------------------------------------
index99_captcha_code_file.php
------------------------------------------------------------

<?php
/*
*
* this code is based on captcha code by Simon Jarvis
* http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*/

session_start();
//Settings: You can customize the captcha here
$image_width = 120;
$image_height = 40;
$characters_on_image = 6;
$font = './monofont.ttf';

//The characters that can be used in the CAPTCHA code.
//avoid confusing characters (l 1 and i for example)
$possible_letters = '23456789bcdfghjkmnpqrstvwxyz';
$random_dots = 0;
$random_lines = 20;
$captcha_text_color="0x142864";
$captcha_noice_color = "0x142864";

$code = '';


$i = 0;
while ($i < $characters_on_image) {
$code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
$i++;
}


$font_size = $image_height * 0.75;
$image = imagecreate($image_width, $image_height);


/* setting the background, text and noise colours here */
$background_color = imagecolorallocate($image, 255, 255, 255);

$arr_text_color = hexrgb($captcha_text_color);
$text_color = imagecolorallocate($image, $arr_text_color['red'], $arr_text_color['green'], $arr_text_color['blue']);

$arr_noice_color = hexrgb($captcha_noice_color);
$image_noise_color = imagecolorallocate($image, $arr_noice_color['red'], $arr_noice_color['green'], $arr_noice_color['blue']);


/* generating the dots randomly in background */
for( $i=0; $i<$random_dots; $i++ ) {
imagefilledellipse($image, mt_rand(0,$image_width), mt_rand(0,$image_height), 2, 3, $image_noise_color);
}


/* generating lines randomly in background of image */
for( $i=0; $i<$random_lines; $i++ ) {
imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height), mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
}


/* create a text box and add 6 letters code in it */
$textbox = imagettfbbox($font_size, 0, $font, $code);
$x = ($image_width - $textbox[4])/2;
$y = ($image_height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);


/* Show captcha image in the page html page */
header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow
imagejpeg($image);//showing the image
imagedestroy($image);//destroying the image instance
$_SESSION['6_letters_code'] = $code;

function hexrgb ($hexstr)
{
$int = hexdec($hexstr);
return array("red" => 0xFF & ($int >> 0x10), "green" => 0xFF & ($int >> 0x8), "blue" => 0xFF & $int);
}
?>


Thanks if you debug/help this out

By the way, I am somehow learning php. I am more a vba programmer... so sorry for php improvisation on syntax.

P
Re: php run captcha script on localhost [message #181519 is a reply to message #181499] Sun, 19 May 2013 12:58 Go to previous messageGo to next message
J.O. Aho is currently offline  J.O. Aho
Messages: 194
Registered: September 2010
Karma: 0
Senior Member
add to buddy list
ignore all messages by this user
On 19/05/13 13:17, Paul Klacher wrote:

> I'm trying to implement a php html javascript form with captcha validation. I'm trying to run the script from this page:
> http://www.white-hat-web-design.co.uk/articles/php-captcha.php

Use reCaptcha instead from google
https://developers.google.com/recaptcha/docs/php

As the code you are looking at is unattended for quite many years.


> as a localhost page on my computer. Nothing is showing. The @imagecreate is not showing anything.
> My system runs windows 7 and Php, MySql and Apache server installed separately. Is there any configuration to do with for instance php.ini or Apache conf file?

If you have issues with PHP modules missing, I suggest you look at
www.distrowatch.com and make an upgrade.


--

//Aho
Re: php run captcha script on localhost [message #181520 is a reply to message #181499] Sun, 19 May 2013 13:17 Go to previous messageGo to next message
Paul Klacher is currently offline  Paul Klacher
Messages: 5
Registered: May 2013
Karma: 0
Junior Member
add to buddy list
ignore all messages by this user
nothing serious there
just trying to understand basic php syntax and validation... just want it to work
Re: php run captcha script on localhost [message #181525 is a reply to message #181513] Sun, 19 May 2013 16:16 Go to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
add to buddy list
ignore all messages by this user
On 5/19/2013 12:23 PM, Paul Klacher wrote:
> Hi Jerry
>
> Thanks for your help.
>
> I have left for a while testing captcha script on localhost and went straight doing test onto the server
>
> But I can't get the script to work at all
>
> In between I have made some of the changes in my php.ini
> like
> error_reporting = E_ALL
> display_errors = on
> I checked and it was on.
>

You did use phpinfo() in a web page, right? Once changing something in
php.ini, you need to stop and restart the web server, and the PHP does
not necessarily reflect what the web server is using.

>
>>>> (These should always be on for a development system while display_errors
> should never be on for a production system).
>>>> Next, this must be in a separate file called from an img= statement, not
> in the code with the rest of your page. What happens when you try
> to load the image in your browser directly?
>
> I'll check this after it works online
>
>
> Below are some html and php extract form file currently online
> Running the script online keeps returning
> "The captcha code does not match!"
>

OK, your echo statements indicate you have session_start() at the
beginning of your code, as it should be (or it wouldn't echo the
$_SESSION value properly).

But if the codes don't match, then there's obviously a difference.
White space, maybe? What do you get if you try something like:

echo '"' . $_SESSION['6_letters_code'] . '"';
> echo "<br>\n"; // "\n" will not generate a nl in HTML
> echo '"' . $_POST['6_letters_code2'] . '"';

This will place quote marks around the exact value in each case, showing
if you have any extra white space in either.

> I have added an echo statement for the captcha value and the server value and it displays the same value but it doesn't write to the .txt file (the form is just writing to a text file, not sending an email as the server doesn't allow me to do that... free hosting)
>
> ------------------------------------------------------------
> index99_comments.html
> (the html for the form)
> ------------------------------------------------------------
>
> <div id="gate_A_resize3_comments"><p id="blackboard"></p>
>
> <form method="POST" name="contact_form" action="index99_.php">
>
> <p>Your Name (Optional)<input type="text" name="name">
>> Email Address <input type="text" name="email">
> <br />
> <p>Message: </p><CENTER>
> <textarea name="comments" maxlength="1000" cols="40" rows="12"></textarea></p>
>
> <p><label><img src="index99_test_captcha.php" id='captchaimg' ></label></p>
>
> <p><label for='message'>Enter the code above</label>
> <input id="6_letters_code" name="6_letters_code2" type="text"></p>
>
> <p><input type="submit" value="Submit"></center></p>
>
> </form>
> </div>
>
> ------------------------------------------------------------
> index99_.php
> ------------------------------------------------------------
>
> <?php
>
> $name = $_POST['name'];
> $email_from = $_POST['email'];
> $comments = $_POST['comments'];
> $errors = '';
>
> //Note: the captcha code is compared case insensitively.
> //if you want case sensitive match, update the check above to
> // strcmp()
> if(empty($_SESSION['6_letters_code'] ) || strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code2']) != 0){
> $errors .= "\n The captcha code does not match!\n";
>
> }
>
> if(!empty($errors)){
> echo "Message failed to send \n";
> echo "<p class='err'>".nl2br($errors)."</p>";
> echo $_SESSION['6_letters_code'];
> echo "\n";
> echo $_POST['6_letters_code2'];
> }
>
> function clean_string($string){
> $bad = array("content-type", "bcc:", "to:", "cc", "href");
> return str_replace($bad, "", $string);
> }
>
> //open the file and choose the mode
> if(empty($errors)){
>
> $cmess = "Form details below.\n\n";
> $cmess .= "Name : " .clean_string($name)."\n";
> $cmess .= "email : " .clean_string($email_from)."\n";
> $cmess .= "Comments : ".clean_string($comments)."\n";
>
> $fh = fopen("***", "a");
> fwrite($fh, $cmess);
>
> //close the file
> fclose($fh);
>
> //header("Location: http://localhost/***");
> header("Location: http://***");
> }
>
> ?>
>
>
> ------------------------------------------------------------
> index99_captcha_code_file.php
> ------------------------------------------------------------
>
> <?php
> /*
> *
> * this code is based on captcha code by Simon Jarvis
> * http://www.white-hat-web-design.co.uk/articles/php-captcha.php
> *
> * This program is free software; you can redistribute it and/or
> * modify it under the terms of the GNU General Public License
> * as published by the Free Software Foundation
> *
> * This program is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details:
> * http://www.gnu.org/licenses/gpl.html
> */
>
> session_start();
> //Settings: You can customize the captcha here
> $image_width = 120;
> $image_height = 40;
> $characters_on_image = 6;
> $font = './monofont.ttf';
>
> //The characters that can be used in the CAPTCHA code.
> //avoid confusing characters (l 1 and i for example)
> $possible_letters = '23456789bcdfghjkmnpqrstvwxyz';
> $random_dots = 0;
> $random_lines = 20;
> $captcha_text_color="0x142864";
> $captcha_noice_color = "0x142864";
>
> $code = '';
>
>
> $i = 0;
> while ($i < $characters_on_image) {
> $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
> $i++;
> }
>
>
> $font_size = $image_height * 0.75;
> $image = imagecreate($image_width, $image_height);
>
>
> /* setting the background, text and noise colours here */
> $background_color = imagecolorallocate($image, 255, 255, 255);
>
> $arr_text_color = hexrgb($captcha_text_color);
> $text_color = imagecolorallocate($image, $arr_text_color['red'], $arr_text_color['green'], $arr_text_color['blue']);
>
> $arr_noice_color = hexrgb($captcha_noice_color);
> $image_noise_color = imagecolorallocate($image, $arr_noice_color['red'], $arr_noice_color['green'], $arr_noice_color['blue']);
>
>
> /* generating the dots randomly in background */
> for( $i=0; $i<$random_dots; $i++ ) {
> imagefilledellipse($image, mt_rand(0,$image_width), mt_rand(0,$image_height), 2, 3, $image_noise_color);
> }
>
>
> /* generating lines randomly in background of image */
> for( $i=0; $i<$random_lines; $i++ ) {
> imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height), mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
> }
>
>
> /* create a text box and add 6 letters code in it */
> $textbox = imagettfbbox($font_size, 0, $font, $code);
> $x = ($image_width - $textbox[4])/2;
> $y = ($image_height - $textbox[5])/2;
> imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);
>
>
> /* Show captcha image in the page html page */
> header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow
> imagejpeg($image);//showing the image
> imagedestroy($image);//destroying the image instance
> $_SESSION['6_letters_code'] = $code;
>
> function hexrgb ($hexstr)
> {
> $int = hexdec($hexstr);
> return array("red" => 0xFF & ($int >> 0x10), "green" => 0xFF & ($int >> 0x8), "blue" => 0xFF & $int);
> }
> ?>
>
>
> Thanks if you debug/help this out
>
> By the way, I am somehow learning php. I am more a vba programmer... so sorry for php improvisation on syntax.
>
> P
>



--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Quick Reply
Formatting Tools:   
  Switch to threaded view of this topic Create a new topic
Previous Topic: makes searching and booking applications airfares
Next Topic: Re: Immediate Position:::Business Analyst With BI EXP::::At Houston, TX
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Dec 14 21:17:23 EST 2017

Total time taken to generate the page: 0.00809 seconds