I'm starting by adding recaptcha to the contact_us.php form. I'm
close to getting it to work. Just some problems with the email
validation and recaptcha validation. My recaptcha box shows up, and
my email validation works. I want the following conditions to be met:
Email address must be valid - if not display error message at top of
screen (this works)
If email is valid but recaptcha is not valid, display recaptcha error
at top of screen (this still not working)
When I hit submit, I go to the success page, regardless of an invalid
or blank captcha typed in.
I'm not an expert php programmer so its probably something simple.
Thanks for the help. I'd like to add this to the other checkout forms
too, but thats another project.
Here's what I've done.
1) added recaptchalib.php to includes/classes/
changed line 169 to read as follows:
$recaptcha_response->error = 'Incorrect captcha solution, please try
again.';
2) modified contact_us.php is below, note there are no other
modifications to this page except for my recaptcha editing.
<?php
/*
$Id: contact_us.php,v 1.42 2003/06/12 12:17:07 hpdl Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
Released under the GNU General Public License
*/
require('includes/application_top.php');
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CONTACT_US);
require_once('includes/classes/recaptchalib.php');
$publickey = "pub key here";
$privatekey = "private key here";
$error = false;
if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] ==
'send')) {
$name = tep_db_prepare_input($HTTP_POST_VARS['name']);
$email_address = tep_db_prepare_input($HTTP_POST_VARS['email']);
$enquiry = tep_db_prepare_input($HTTP_POST_VARS['enquiry']);
// the response from reCAPTCHA
$resp = null;
// the error code from reCAPTCHA, if any
$error = null;
# are we submitting the page?
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
} else {
$error = $resp->error;
$messageStack->add('contact', $error);
}
$error = false;
if (!tep_validate_email($email_address)) {
$error = true;
$messageStack->add('contact', ENTRY_EMAIL_ADDRESS_CHECK_ERROR);
} else {
tep_redirect(tep_href_link(FILENAME_CONTACT_US, 'action=success'));
}
}
$breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CONTACT_US));
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo
CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER :
HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0"
leftmargin="0" rightmargin="0">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->
<!-- body //-->
<table border="0" width="100%" cellspacing="3" cellpadding="3">
<tr>
<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table
border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0"
cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
</table></td>
<!-- body_text //-->
<td width="100%" valign="top"><?php echo
tep_draw_form('contact_us', tep_href_link(FILENAME_CONTACT_US,
'action=send')); ?><table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td><table border="0" width="100%" cellspacing="0"
cellpadding="0">
<tr>
<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
<td class="pageHeading" align="right"><?php echo
tep_image(DIR_WS_IMAGES . 'table_background_contact_us.gif',
HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%',
'10'); ?></td>
</tr>
<?php
if ($messageStack->size('contact') > 0) {
?>
<tr>
<td><?php echo $messageStack->output('contact'); ?></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%',
'10'); ?></td>
</tr>
<?php
}
if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] ==
'success')) {
?>
<tr>
<td class="main" align="center"><?php echo
tep_image(DIR_WS_IMAGES . 'table_background_man_on_board.gif',
HEADING_TITLE, '0', '0', 'align="left"') . TEXT_SUCCESS; ?></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%',
'10'); ?></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="1"
cellpadding="2" class="infoBox">
<tr class="infoBoxContents">
<td><table border="0" width="100%" cellspacing="0"
cellpadding="2">
<tr>
<td width="10"><?php echo
tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
<td align="right"><?php echo '<a href="' .
tep_href_link(FILENAME_DEFAULT) . '">' .
tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</
a>'; ?></td>
<td width="10"><?php echo
tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
} else {
?>
<tr>
<td><table border="0" width="100%" cellspacing="1"
cellpadding="2" class="infoBox">
<tr class="infoBoxContents">
<td><table border="0" width="100%" cellspacing="0"
cellpadding="2">
<tr>
<td class="main"><?php echo ENTRY_NAME; ?></td>
</tr>
<tr>
<td class="main"><?php echo
tep_draw_input_field('name'); ?></td>
</tr>
<tr>
<td class="main"><?php echo ENTRY_EMAIL; ?></td>
</tr>
<tr>
<td class="main"><?php echo
tep_draw_input_field('email'); ?></td>
</tr>
<tr>
<td class="main"><?php echo ENTRY_ENQUIRY; ?></td>
</tr>
<tr>
<td><?php echo tep_draw_textarea_field('enquiry',
'soft', 50, 15); ?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%',
'10'); ?></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="1"
cellpadding="2" class="infoBox">
<tr class="infoBoxContents">
<td><table border="0" width="100%" cellspacing="0"
cellpadding="2">
<tr>
<?php echo recaptcha_get_html($publickey, $error); ?>
</tr>
<tr>
<td width="10"><?php echo
tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
<td align="right"><?php echo
tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></
td>
<td width="10"><?php echo
tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
}
?>
</table></form></td>
<!-- body_text_eof //-->
<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table
border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0"
cellpadding="2">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
</table></td>
</tr>
</table>
<!-- body_eof //-->
<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
if (!$resp->is_valid) {
$error = true;
$messageStack->add('contact', ENTRY_SECURITY_CHECK_ERROR .
" (reCAPTCHA said: " . $resp->error . ")");
}
if (!tep_validate_email($email_address)) {
$error = true;
$messageStack->add('contact', ENTRY_EMAIL_ADDRESS_CHECK_ERROR);
}
if (!$error) {
tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, EMAIL_SUBJECT,
$enquiry, $name, $email_address);
tep_redirect(tep_href_link(FILENAME_CONTACT_US, 'action=success'));
}
http://store.webmad.it/contact_us.php
-Pietro.
On 26 Lug, 09:11, danimal2 <d...@promotesource.com> wrote:
> Hi, I'm surprised nobody seems to have posted a solution for this to
> work with osCommerce yet. Maybe I'm the first to use it with osC?
>
> I'm starting by adding recaptcha to the contact_us.php form. I'm
> close to getting it to work. Just some problems with the email
> validation and recaptcha validation. My recaptcha box shows up, and
> my email validation works. I want the following conditions to be met:
>
> Email address must be valid - if not display error message at top of
> screen (this works)
>
> If email is valid but recaptcha is not valid, display recaptcha error
> at top of screen (this still not working)
>
> When I hit submit, I go to the success page, regardless of an invalid
> or blankcaptchatyped in.
>
> I'm not an expert php programmer so its probably something simple.
> Thanks for the help. I'd like to add this to the other checkout forms
> too, but thats another project.
>
> Here's what I've done.
>
> 1) added recaptchalib.php to includes/classes/
>
> changed line 169 to read as follows:
>
> $recaptcha_response->error = 'Incorrectcaptchasolution, please try