dennish Posted October 25, 2013 Posted October 25, 2013 Hello, I've installed a payment module, which displays a drop down menu (on checkout_payment.php), from which the customer should select the name of his/her bank. The HTML code: <td><select name="sisow_bank" enabled>\n<option value="">Select your bank</option>\n<option value="99">Sisow Bank (Test)</option>\n</select></td> The module (1) uses javascript validation, and (2) allows the customer to proceed to checkout_conformation.php despite the fact no bank was selected (after which the customer is redirected again to checkout_payment.php, where an error is displayed). Instead, I would like to (1) use the regular messageStack for error messages, and (2) let the customer stay on checkout_payment.php, until a bank is selected as required. To accomplish this, I've added two pieces of code to checkout_payment.php: 1. First, to produce an error when the customer fails to select a bank, I inserted: if ($payment == 'sisowideal') { if ($sisow_bank == '') { $error = true; $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR); } } before: require(DIR_WS_INCLUDES . 'template_top.php'); ?> 2. Secondly, to display the error message I added: <?php if ($messageStack->size('checkout_payment') > 0) { echo $messageStack->output('checkout_payment'); } ?> after: <?php if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) { ?> <div class="contentText"> <?php echo '<strong>' . tep_output_string_protected($error['title']) . '</strong>'; ?> <p class="messageStackError"><?php echo tep_output_string_protected($error['error']); ?></p> </div> <?php } ?> What do I need to change in addition, to: let the customer stay on checkout_pament.php as long as errors remain (no selection made in drop down menu) let the customer move on to chechout_confirmation.php as soon as errors have cleared (bank was selected) I took a look at both: <?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true); ?> and create_account.php (similar approach) but couldn't figure out how to get it right. Any help is much appreciated. Kind regards, Dennis Quote
Bob Terveuren Posted October 25, 2013 Posted October 25, 2013 Hi An idea would be if you hooked in using jQuery (I'm not able to code right now but here's the gist) jQuery - document ready function stuff remove attr action from form checkout_payment substitute validation stuff (i.e. dropdown selected) if OK then replace the form action and submit with jQuery Quote
dennish Posted October 30, 2013 Author Posted October 30, 2013 @@Bob Thanks for your suggestion. I decided to continue on the "create_account" path and came up with the following code (Look for New code markers. Original checkout_payment.php file was taken from the osC 2.3.3.4 package): <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2010 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); // if the customer is not logged on, redirect them to the login page if (!tep_session_is_registered('customer_id')) { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } // if there is nothing in the customers cart, redirect them to the shopping cart page if ($cart->count_contents() < 1) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } // if no shipping method has been selected, redirect the customer to the shipping method selection page if (!tep_session_is_registered('shipping')) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } // avoid hack attempts during the checkout procedure by checking the internal cartID if (isset($cart->cartID) && tep_session_is_registered('cartID')) { if ($cart->cartID != $cartID) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } } // Stock Check if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) { $products = $cart->get_products(); for ($i=0, $n=sizeof($products); $i<$n; $i++) { if (tep_check_stock($products[$i]['id'], $products[$i]['quantity'])) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); break; } } } // if no billing destination address was selected, use the customers own address as default if (!tep_session_is_registered('billto')) { tep_session_register('billto'); $billto = $customer_default_address_id; } else { // verify the selected billing address if ( (is_array($billto) && empty($billto)) || is_numeric($billto) ) { $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'"); $check_address = tep_db_fetch_array($check_address_query); if ($check_address['total'] != '1') { $billto = $customer_default_address_id; if (tep_session_is_registered('payment')) tep_session_unregister('payment'); } } } // New code - Start $process = false; if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') && isset($HTTP_POST_VARS['formid']) && ($HTTP_POST_VARS['formid'] == $sessiontoken)) { $process = true; $error = false; if ($HTTP_POST_VARS['sisow_bank'] == '') { $error = true; $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR); } // New code - End require(DIR_WS_CLASSES . 'order.php'); $order = new order; if (!tep_session_is_registered('comments')) tep_session_register('comments'); if (isset($HTTP_POST_VARS['comments']) && tep_not_null($HTTP_POST_VARS['comments'])) { $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']); } $total_weight = $cart->show_weight(); $total_count = $cart->count_contents(); // load all enabled payment modules require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment; require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT); // New code - Start if ($error == false) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL')); } } // New code - End $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); require(DIR_WS_INCLUDES . 'template_top.php'); ?> <script type="text/javascript"><!-- var selected; function selectRowEffect(object, buttonselect) { if (!selected) { if (document.getElementById) { selected = document.getElementById('defaultSelected'); } else { selected = document.all['defaultSelected']; } } if (selected) selected.className = 'moduleRow'; object.className = 'moduleRowSelected'; selected = object; // one button is not an array if (document.checkout_payment.payment[0]) { document.checkout_payment.payment[buttonselect].checked=true; } else { document.checkout_payment.payment.checked=true; } } function rowOverEffect(object) { if (object.className == 'moduleRow') object.className = 'moduleRowOver'; } function rowOutEffect(object) { if (object.className == 'moduleRowOver') object.className = 'moduleRow'; } //--></script> <?php echo $payment_modules->javascript_validation(); ?> <h1><?php echo HEADING_TITLE; ?></h1> <!-- New code - Start //--> <?php // echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true); ?> <?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true) . tep_draw_hidden_field('action', 'process'); ?> <!-- New code - End //--> <div class="contentContainer"> <?php if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) { ?> <div class="contentText"> <?php echo '<strong>' . tep_output_string_protected($error['title']) . '</strong>'; ?> <p class="messageStackError"><?php echo tep_output_string_protected($error['error']); ?></p> </div> <?php } ?> <!-- New code - Start //--> <?php if ($messageStack->size('checkout_payment') > 0) { echo $messageStack->output('checkout_payment'); } ?> <!-- New code - End //--> <!-- New code - Start //--> <!-- Only for testing purposes! Outputs $HTTP_POST_VARS / $_POST //--> <?php foreach ($_POST as $key => $value) { echo $key ." => ". $value . '<br>'; } ?> <!-- New code - End //--> <h2><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></h2> <div class="contentText"> <div class="ui-widget infoBoxContainer" style="float: right;"> <div class="ui-widget-header infoBoxHeading"><?php echo TITLE_BILLING_ADDRESS; ?></div> <div class="ui-widget-content infoBoxContents"> <?php echo tep_address_label($customer_id, $billto, true, ' ', '<br />'); ?> </div> </div> <?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br /><br /><?php echo tep_draw_button(IMAGE_BUTTON_CHANGE_ADDRESS, 'home', tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL')); ?> </div> <div style="clear: both;"></div> <h2><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></h2> <?php $selection = $payment_modules->selection(); if (sizeof($selection) > 1) { ?> <div class="contentText"> <div style="float: right;"> <?php echo '<strong>' . TITLE_PLEASE_SELECT . '</strong>'; ?> </div> <?php echo TEXT_SELECT_PAYMENT_METHOD; ?> </div> <?php } elseif ($free_shipping == false) { ?> <div class="contentText"> <?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?> </div> <?php } ?> <div class="contentText"> <?php $radio_buttons = 0; for ($i=0, $n=sizeof($selection); $i<$n; $i++) { ?> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <?php if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) { echo ' <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n"; } else { echo ' <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n"; } ?> <td><strong><?php echo $selection[$i]['module']; ?></strong></td> <td align="right"> <?php if (sizeof($selection) > 1) { echo tep_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['id'] == $payment)); } else { echo tep_draw_hidden_field('payment', $selection[$i]['id']); } ?> </td> </tr> <?php if (isset($selection[$i]['error'])) { ?> <tr> <td colspan="2"><?php echo $selection[$i]['error']; ?></td> </tr> <?php } elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) { ?> <tr> <td colspan="2"><table border="0" cellspacing="0" cellpadding="2"> <?php for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) { ?> <tr> <td><?php echo $selection[$i]['fields'][$j]['title']; ?></td> <td><?php echo $selection[$i]['fields'][$j]['field']; ?></td> </tr> <?php } ?> </table></td> </tr> <?php } ?> </table> <?php $radio_buttons++; } ?> </div> <h2><?php echo TABLE_HEADING_COMMENTS; ?></h2> <div class="contentText"> <?php echo tep_draw_textarea_field('comments', 'soft', '60', '5', $comments); ?> </div> <!-- Must agree to terms - Start //--> <div class="subHeader"> <h2><?php echo TITLE_CONDITION_AGREEMENT; ?></h2> </div> <?php if ($order->content_type == 'virtual' or $order->content_type == 'mixed') { ?> <?php echo TEXT_LICENSE_AGREEMENT; ?> <?php } else { ?> <?php echo TEXT_CONDITION_AGREEMENT; ?> <?php } ?> <?php echo tep_draw_checkbox_field('agree','true'); ?> <!-- Must agree to terms - End //--> <div class="contentText"> <div style="float: left; width: 60%; padding-top: 5px; padding-left: 15%;"> <div id="coProgressBar" style="height: 5px;"></div> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td align="center" width="33%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td> <td align="center" width="33%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td> <td align="center" width="33%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td> </tr> </table> </div> <div style="float: right;"><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', null, 'primary'); ?></div> </div> </div> <script type="text/javascript"> $('#coProgressBar').progressbar({ value: 66 }); </script> </form> <?php require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> This works fine, in line with my requirements (see post #1). However, a new issue emerged related to some (not all) $HTTP_POST_VARS (or $_POST) data. For the Must agree to terms contribution (http://addons.oscommerce.com/info/574) I use in my shop, the customer is required to fill in: <?php echo tep_draw_checkbox_field('agree','true'); ?> At the start of checkout_confirmation.php the value of the field agree (true/false) is needed to perform a check to (dis)allow the customer to continue: // Must agree to terms - Start if ($HTTP_POST_VARS['agree'] != 'true') { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_redirect(tep_href_link(FILENAME_CHECKOUT_FAIL)), 'SSL')); } // Must agree to terms - End However, in checkout_confirmation.php $HTTP_POST_VARS['agree'] (or $_POST['agree']) turns up empty! On the contrary, in checkout_payment.php $HTTP_POST_VARS['agree'] renders true, as expected (see my testing code). The same goes for the new drop down menu rendered by my payment module (field sisow_bank). Any ideas why these (new) fields drop their values when I go from checkout_payment.php to checkout_confirmation.php? Kind regards, Dennis Quote
Bob Terveuren Posted October 30, 2013 Posted October 30, 2013 Hi I can't see any reason why they are turning up empty other than lines 118 and 119 - 119 is submitting the page to itself so your $_POST data is being sent to checkout_payment , they're valid so line 80 redirects to checkout_confirmation but minus the $_POST stuff You'd either need to work out a way of forwarding the $_POST at line 80 (maybe plug it into a $_SESSSION - but then you'd need to unset that all over the place) or else revert to line 118 and put the error checking stuff at the top of checkout_confirmation Something like $error=false; if ($HTTP_POST_VARS['sisow_bank'] == '') { $error = true; $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR); } //same here for the MATC //then if $error == true //redirect here back to checkout_payment Quote
dennish Posted October 31, 2013 Author Posted October 31, 2013 @@Bob I found a solution here: http://coredogs.com/lesson/form-and-php-validation-one-page (with a full explanation of the method used). My code for checkout_payment.php now looks like this: <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2010 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); // if the customer is not logged on, redirect them to the login page if (!tep_session_is_registered('customer_id')) { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } // if there is nothing in the customers cart, redirect them to the shopping cart page if ($cart->count_contents() < 1) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } // if no shipping method has been selected, redirect the customer to the shipping method selection page if (!tep_session_is_registered('shipping')) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } // avoid hack attempts during the checkout procedure by checking the internal cartID if (isset($cart->cartID) && tep_session_is_registered('cartID')) { if ($cart->cartID != $cartID) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } } // Stock Check if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) { $products = $cart->get_products(); for ($i=0, $n=sizeof($products); $i<$n; $i++) { if (tep_check_stock($products[$i]['id'], $products[$i]['quantity'])) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); break; } } } // if no billing destination address was selected, use the customers own address as default if (!tep_session_is_registered('billto')) { tep_session_register('billto'); $billto = $customer_default_address_id; } else { // verify the selected billing address if ( (is_array($billto) && empty($billto)) || is_numeric($billto) ) { $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'"); $check_address = tep_db_fetch_array($check_address_query); if ($check_address['total'] != '1') { $billto = $customer_default_address_id; if (tep_session_is_registered('payment')) tep_session_unregister('payment'); } } } // New code - Start $process = false; if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') && isset($HTTP_POST_VARS['formid']) && ($HTTP_POST_VARS['formid'] == $sessiontoken)) { $process = true; $payment = tep_db_prepare_input($HTTP_POST_VARS['payment']); $sisow_bank = tep_db_prepare_input($HTTP_POST_VARS['sisow_bank']); $agree = tep_db_prepare_input($HTTP_POST_VARS['agree']); $error = false; if ($HTTP_POST_VARS['sisow_bank'] == '') { $error = true; $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR); } // New code - End require(DIR_WS_CLASSES . 'order.php'); $order = new order; if (!tep_session_is_registered('comments')) tep_session_register('comments'); if (isset($HTTP_POST_VARS['comments']) && tep_not_null($HTTP_POST_VARS['comments'])) { $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']); } $total_weight = $cart->show_weight(); $total_count = $cart->count_contents(); // load all enabled payment modules require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment; require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT); // New code - Start if ($error == false) { if ($HTTP_POST_VARS['sisow_bank'] != '') { tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'sisow_bank=' . $sisow_bank . '&agree=' . $agree, 'SSL')); } else { tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'agree=' . $agree, 'SSL')); } } } // New code - End $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); require(DIR_WS_INCLUDES . 'template_top.php'); ?> <script type="text/javascript"><!-- var selected; function selectRowEffect(object, buttonselect) { if (!selected) { if (document.getElementById) { selected = document.getElementById('defaultSelected'); } else { selected = document.all['defaultSelected']; } } if (selected) selected.className = 'moduleRow'; object.className = 'moduleRowSelected'; selected = object; // one button is not an array if (document.checkout_payment.payment[0]) { document.checkout_payment.payment[buttonselect].checked=true; } else { document.checkout_payment.payment.checked=true; } } function rowOverEffect(object) { if (object.className == 'moduleRow') object.className = 'moduleRowOver'; } function rowOutEffect(object) { if (object.className == 'moduleRowOver') object.className = 'moduleRow'; } //--></script> <?php // echo $payment_modules->javascript_validation(); ?> <h1><?php echo HEADING_TITLE; ?></h1> <!-- New code - Start //--> <?php // echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true); ?> <?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true) . tep_draw_hidden_field('action', 'process'); ?> <!-- New code - End //--> <div class="contentContainer"> <?php if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) { ?> <div class="contentText"> <?php echo '<strong>' . tep_output_string_protected($error['title']) . '</strong>'; ?> <p class="messageStackError"><?php echo tep_output_string_protected($error['error']); ?></p> </div> <?php } ?> <!-- New code - Start //--> <?php if ($messageStack->size('checkout_payment') > 0) { echo $messageStack->output('checkout_payment'); } ?> <!-- New code - End //--> <!-- New code - Start //--> <!-- Only for testing purposes! Outputs $HTTP_POST_VARS / $_POST //--> <?php foreach ($_POST as $key => $value) { echo $key ." => ". $value . '<br>'; } ?> <!-- New code - End //--> <h2><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></h2> <div class="contentText"> <div class="ui-widget infoBoxContainer" style="float: right;"> <div class="ui-widget-header infoBoxHeading"><?php echo TITLE_BILLING_ADDRESS; ?></div> <div class="ui-widget-content infoBoxContents"> <?php echo tep_address_label($customer_id, $billto, true, ' ', '<br />'); ?> </div> </div> <?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br /><br /><?php echo tep_draw_button(IMAGE_BUTTON_CHANGE_ADDRESS, 'home', tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL')); ?> </div> <div style="clear: both;"></div> <h2><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></h2> <?php $selection = $payment_modules->selection(); if (sizeof($selection) > 1) { ?> <div class="contentText"> <div style="float: right;"> <?php echo '<strong>' . TITLE_PLEASE_SELECT . '</strong>'; ?> </div> <?php echo TEXT_SELECT_PAYMENT_METHOD; ?> </div> <?php } elseif ($free_shipping == false) { ?> <div class="contentText"> <?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?> </div> <?php } ?> <div class="contentText"> <?php $radio_buttons = 0; for ($i=0, $n=sizeof($selection); $i<$n; $i++) { ?> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <?php if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) { echo ' <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n"; } else { echo ' <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n"; } ?> <td><strong><?php echo $selection[$i]['module']; ?></strong></td> <td align="right"> <?php if (sizeof($selection) > 1) { echo tep_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['id'] == $payment)); } else { echo tep_draw_hidden_field('payment', $selection[$i]['id']); } ?> </td> </tr> <?php if (isset($selection[$i]['error'])) { ?> <tr> <td colspan="2"><?php echo $selection[$i]['error']; ?></td> </tr> <?php } elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) { ?> <tr> <td colspan="2"><table border="0" cellspacing="0" cellpadding="2"> <?php for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) { ?> <tr> <td><?php echo $selection[$i]['fields'][$j]['title']; ?></td> <td><?php echo $selection[$i]['fields'][$j]['field']; ?></td> </tr> <?php } ?> </table></td> </tr> <?php } ?> </table> <?php $radio_buttons++; } ?> </div> <h2><?php echo TABLE_HEADING_COMMENTS; ?></h2> <div class="contentText"> <?php echo tep_draw_textarea_field('comments', 'soft', '60', '5', $comments); ?> </div> <!-- Must agree to terms - Start //--> <div class="subHeader"> <h2><?php echo TITLE_CONDITION_AGREEMENT; ?></h2> </div> <?php if ($order->content_type == 'virtual' or $order->content_type == 'mixed') { ?> <?php echo TEXT_LICENSE_AGREEMENT; ?> <?php } else { ?> <?php echo TEXT_CONDITION_AGREEMENT; ?> <?php } ?> <?php echo tep_draw_checkbox_field('agree','true'); ?> <!-- Must agree to terms - End //--> <div class="contentText"> <div style="float: left; width: 60%; padding-top: 5px; padding-left: 15%;"> <div id="coProgressBar" style="height: 5px;"></div> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td align="center" width="33%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td> <td align="center" width="33%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td> <td align="center" width="33%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td> </tr> </table> </div> <div style="float: right;"><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', null, 'primary'); ?></div> </div> </div> <script type="text/javascript"> $('#coProgressBar').progressbar({ value: 66 }); </script> </form> <?php require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> Notice the adapted redirect with parameters (line 101): // New code - Start if ($error == false) { if ($HTTP_POST_VARS['sisow_bank'] != '') { tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'sisow_bank=' . $sisow_bank . '&agree=' . $agree, 'SSL')); } else { tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'agree=' . $agree, 'SSL')); } } } // New code - End The variables used are defined as (line 71): $payment = tep_db_prepare_input($HTTP_POST_VARS['payment']); $sisow_bank = tep_db_prepare_input($HTTP_POST_VARS['sisow_bank']); $agree = tep_db_prepare_input($HTTP_POST_VARS['agree']); I omitted the first variable $payment in my previous code (see post #3), but this needs to be included for the script to function correctly. Finally, I changed the code for checkout_confirmation.php to: // Must agree to terms - Start // if ($HTTP_POST_VARS['agree'] != 'true') { if ($_GET['agree'] != 'true') { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_redirect(tep_href_link(FILENAME_CHECKOUT_FAIL)), 'SSL')); } // Must agree to terms - End Thanks for putting me on the right track. Kind regards, Dennis Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.