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 :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: php run captcha script on localhost [message #181513 is a reply to message #181499] Sun, 19 May 2013 16:23 Go to previous messageGo to previous message
Paul Klacher is currently offline  Paul Klacher
Messages: 5
Registered: May 2013
Karma:
Junior Member
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
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
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 Nov 28 05:01:56 GMT 2024

Total time taken to generate the page: 0.06151 seconds