Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

MySQL error with missing column, but the column is already there.

Posted on 2007-07-23
5
Medium Priority
?
1,014 Views
Last Modified: 2012-05-05
I'm having the following error trying to update oscommerce and protx to work with the new maestro cards. The main problem is a mysql statement that protx_process.php is trying to run, the error that comes up is the following:

1054 - Unknown column 'value' in 'field list'

insert into protx_direct (id, customer_id, order_id, vendortxcode, txtype, value, vpstxid, status, statusdetail, txauthno, securitykey, avscv2, address_result, postcode_result, CV2_result, 3DSecureStatus, CAVV, txtime) values ('', '14', '189', '189-07305597560146812969278769059518', 'PAYMENT', '544.28', '', '', '', '', '', '', '', '', '', '', '', '2007-07-23 16:07:35')

[TEP STOP]

But there IS a column called value in the protx_direct table, below is a copy and paste of the specific table within phpMyAdmin:

         Field         Type        Collation        Attributes        Null        Default        Extra        Action
       id                        int(11)               UNSIGNED       Yes        NULL        auto_increment        
       customer_id        int(11)                       Yes        0                
       vendortxcode        varchar(40)       latin1_swedish_ci               Yes        NULL                
       txtype        varchar(16)       latin1_swedish_ci               Yes        NULL                
       value        decimal(15,4)                       Yes        NULL                
       vpstxid        varchar(50)       latin1_swedish_ci               Yes        NULL                
       status        varchar(10)       latin1_swedish_ci               Yes        NULL                
       statusdetail        varchar(100)       latin1_swedish_ci               Yes        NULL                
       txauthno        varchar(10)       latin1_swedish_ci               Yes        NULL                
       securitykey        varchar(10)       latin1_swedish_ci               Yes        NULL                
       avscv2        varchar(50)       latin1_swedish_ci               Yes        NULL                
       address_result        varchar(20)       latin1_swedish_ci               Yes        NULL                
       postcode_result        varchar(20)       latin1_swedish_ci               Yes        NULL                
       CV2_result        varchar(20)       latin1_swedish_ci               Yes        NULL                
       3DSecureStatus        varchar(12)       latin1_swedish_ci               Yes        NULL                
       CAVV        varchar(32)       latin1_swedish_ci               Yes        NULL                
       txtime        timestamp                       Yes        CURRENT_TIMESTAMP                

Can anyone please help with this as i've been at it all day and the site that was once working is currently broken...
0
Comment
Question by:purplelettuce
  • 2
3 Comments
 

Author Comment

by:purplelettuce
ID: 19548248
Below is the protx_process.php code that is bringing up the error just in case you might want to see it:

<?php
//
// +----------------------------------------------------------------------+
// | osCommerce, Open Source E-Commerce Solutions                         |
// +----------------------------------------------------------------------+
// | Copyright (c) 2007 Tom Hodges-Hoyland                                |
// |                                                                      |
// | Portions Copyright (c) 2003 osCommerce                               |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the GPL license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available through the world-wide-web at the following url:           |
// | http://www.gnu.org/copyleft/gpl.html.                                |
// +----------------------------------------------------------------------+
// | protx_process.php - v4.3                                             |
// | Released under GPL                                                   |
// | Created by Thomas Hodges-Hoyland (perfectpassion):                   |
// |                                             osc@hodges-hoyland.me.uk |
// +----------------------------------------------------------------------+
//

// Extra Configuration Options
$use_iframe = true;  // Set to true to use iframe for 3D-Secure page

$disable_curl_ssl_check = false;    // Set to true (no quotes)
                                    // if you are having problems connecting to the protx servers
                                                      
$use_more_accurate_order_id = true;  // May not work for everyone (depending upon database permission
                                     // Set to false to use less accurate method

$protocol = '2.22';  // Shouldn't need changing

// End of extra configuration options


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(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
    tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
  }

if ($_GET['action'] == '3Dreturn') {
  if ($_GET['iframe'] == 'Y') {  // Returned from bank's 3D-secure page and need to break out of iframe back to store
    $loc = tep_href_link('protx_process.php', tep_get_all_get_params(Array('iframe' => 'iframe')), 'SSL');
    echo '<html><head><title>3D-Secure Complete</title></head><body onload="document.getElementById(\'theform\').submit();">
          <form id="theform" action="'.$loc.'" target="_top" method="post">
              <input type="hidden" name="MD" value="'.$_POST['MD'].'" />
              <input type="hidden" name="PaRes" value="'.urlencode($_POST['PaRes']).'" />
              <center>Your payment is being processed<p>Please wait a few seconds.</p></center>
              <noscript><center><p><b>3D-Secure Card Authorisation Complete</b></p><p>Please click the button ONCE to complete your order.</p></center>
              <center><input type="submit" value="Complete Order" /></center></noscript></form>
              </body></html>';
    exit();
  }
 
  $data = 'MD=' . $_POST['MD'] . '&PARes='. $_POST['PaRes'];
  $url ='';
        if (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Test') {
          $url = 'https://ukvpstest.protx.com/vpsDirectAuth/Callback3D.asp';
        } elseif (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Server IP Test') {
          $url = 'https://ukvpstest.protx.com/showpost/showpost.asp';
        } elseif (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Simulator') {
            $url = 'https://ukvpstest.protx.com/VSPSimulator/VSPDirectCallback.asp';
        } else {
            $url = 'https://ukvps.protx.com/vpsDirectAuth/Callback3D.asp';
          }

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_POST, $data);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

      if ($disable_curl_ssl_check === true)
        {
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
      }

      $response = curl_exec($ch);

      curl_close ($ch);

  // parse Protx response string
      $responses = Array();
      $response_array = explode("\r\n", $response);
      for ($i=0; $i < sizeof($response_array); $i++) {
        $key = substr($response_array[$i],0, strpos($response_array[$i], '='));
        $responses[$key] = substr(strstr($response_array[$i], '='), 1);
      }

  // Begin Debug Section
      if (MODULE_PAYMENT_PROTX_DIRECT_DEBUG == 'True'){
      echo '<pre>Request URL=' . $url . "\r\n" .
             'Data string sent=' . $data . "\r\n" .
           'Protx response=' . $response . "\r\n" .
             'curl_error= ' . $curl_error . '</pre>';
      exit();
        }
  // End Debug Section
        
  // Save transaction details to DB
      $data = Array('status' => $responses['Status'],
                              'statusdetail' => $responses['StatusDetail'],
                              'vpstxid' => $responses['VPSTxId'],
                              'txauthno' => $responses['TxAuthNo'],
                              'securitykey' => $responses['SecurityKey'],
                              'avscv2' => $responses['AVSCV2'],
                              'address_result' => $responses['AddressResult'],
                              'postcode_result' => $responses['PostCodeResult'],
                              'CV2_result' => $responses['CV2Result'],
                              '3DSecureStatus' => $responses['3DSecureStatus'],
                              'CAVV' => $responses['CAVV'],
                              'txtime' => date('Y-m-d H:i:s'));
        
        tep_db_perform(TABLE_PROTX_DIRECT, $data, 'update', "id = '".tep_db_input($_GET['ProtxID']) . "'");                  
        $protx_id = tep_db_insert_id();
        
  // Check response and proceed appropriately
        switch ($responses['Status']) {
          case "OK":
            case "REGISTERED":
            case "AUTHENTICATED":
              // OK to proceed
          tep_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, 'protx_id='.$protx_id, 'SSL'));
              break;

            case "REJECTED":
            case "NOTAUTHED":
              tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_DECLINED_MESSAGE), 'SSL', true, false));
              break;
             
            case "MALFORMED":
          // This may be due to a Protx fault or may just be simple errors such as invalid card type selected or missing start date.
              tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_DECLINED_MESSAGE), 'SSL', true, false));
              break;      
             
            case "INVALID":
            case "ERROR":
              // There's a fault with module or Protx
          tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_PROTX_ERROR), 'SSL', true, false));
              break;            
             
            default:
              // Just in case we haven't caught any other response, assume failed
          tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_PROTX_ERROR), 'SSL', true, false));
              break;
        }
      
} elseif ($_GET['action'] == 'process') {

global $_POST, $order, $cart, $currency, $currencies;

  require(DIR_WS_CLASSES . 'order.php');
  $order = new order;

// Calculate expected order id to use as order description (note can be inaccurate if a previous order has been deleted)
if ($use_more_accurate_order_id === true) {
  // More Accurate way of getting expected order id but may not work for everyone - if not change setting at top of file
    $last_order_id_query = tep_db_query("SHOW TABLE STATUS from " . DB_DATABASE . " like '" . TABLE_ORDERS . "'");
      $last_order_id = tep_db_fetch_array($last_order_id_query);
      $new_order_id = $last_order_id['Auto_increment'];
} else {
    $last_order_query = "SELECT `orders_id` from `" . TABLE_ORDERS . "` ORDER BY `orders_id` DESC LIMIT 1";
    $last_order = tep_db_fetch_array(tep_db_query($last_order_query));
    $new_order_id = (int)$last_order['orders_id'] + 1;  
}    
        $order_description = 'Order Number: ' . $new_order_id;

// DATA PREPARATION SECTION
        unset($submit_data);  // Cleans out any previous data stored in the variable

        // Populate an array that contains all of the data to be sent to Protx
        $delivery_add = $order->delivery['street_address'];
        if (ACCOUNT_SUBURB == 'true') {
          $delivery_add .= ",\r\n" . $order->delivery['suburb'];
        }
        $delivery_add .= ",\r\n" . $order->delivery['city'];
        if (ACCOUNT_STATE == 'true') {
          $delivery_add .= ",\r\n" . $order->delivery['state'];
        }
        $delivery_add .= ",\r\n" . $order->delivery['country']['title'];
        $billing_add = $order->billing['street_address'];
        if (ACCOUNT_SUBURB == 'true') {
          $billing_add .= ",\r\n" . $order->billing['suburb'];
        }
        $billing_add .= ",\r\n" . $order->billing['city'];
        if (ACCOUNT_STATE == 'true') {
          $billing_add .= ",\r\n" . $order->billing['state'];
        }
        $billing_add .= ",\r\n" . $order->delivery['country']['title'];

// Cart details (adapted from Mike Jackson's code for Protx Form)
        $basketlist='';
          if (MODULE_PAYMENT_PROTX_DIRECT_SHOPCART == 'True') {
              $Shipping = $_POST['shipping_total'];
         $products = $cart->get_products();
             $No_lines = sizeof($products);
             $No_lines = $No_lines + 1;  // Don't forget the shipping as an item!
             $cart_string = $No_lines;
           for ($i=0, $n=sizeof($products); $i<$n; $i++) {
                           $Description = $products[$i]['name'];
                        $Description  = str_replace(":", "", $Description); // Make sure that there are no colons (:) since we are producing a colon delimited list
                        $Qty = $products[$i]['quantity'];
                        $Price = number_format($products[$i]['price'] + $cart->attributes_price($products[$i]['id']), 2, '.', '');
                        $Tax = number_format($products[$i]['price'] / 100 *  tep_get_tax_rate($products[$i]['tax_class_id']), 2, '.', '');
                        $Tax = number_format($Tax, 2, '.', '');
                        $final_price = $Price + $Tax;
                        $final_price = number_format($final_price, 2, '.', '');
                        $Line_Total = $Qty * $final_price;
                        $Line_Total = number_format($Line_Total, 2, '.', '');
                        $cart_string .= ":".$Description.":".$Qty.":".$Price.":".$Tax.":".$final_price.":".$Line_Total;
                }
           $cart_string .= ":Shipping:1:".$Shipping.":----:".$Shipping.":".$Shipping;
        // Remove any newlines and carrige returns - PROTX protocol does not allow these in the shopping basket.
             $cart_string = str_replace("\n", "", $cart_string);
             $cart_string = str_replace("\r", "", $cart_string);
         $cart_string = str_replace ("&", "and", $cart_string);
           $basketlist = substr($cart_string,0,7500); // just in case someone orders a lot!
        }

if (constant('MODULE_PAYMENT_PROTX_DIRECT_USE_'.$_POST['cc_type']) == 'True - with 3D-Secure'){
  $use_3D_Secure = 0;
} else {
  $use_3D_Secure = 2;
}

      // create a random id for the transaction
      $uid = tep_create_random_value(32, 'digits');
      $VendorTxCode = $new_order_id . '-' . $uid;
        $submit_data = array(
          VPSProtocol => $protocol, // Protocol Version (Should be 2.22 for this release)
          TxType => MODULE_PAYMENT_PROTX_DIRECT_AUTHORIZATION_TYPE, // Transaction Type
          Vendor => MODULE_PAYMENT_PROTX_DIRECT_VENDOR_NAME, // Vendor Login ID
          VendorTxCode => $VendorTxCode,  // Unique Transaction ID
        Amount => number_format($_POST['ord_total'] * $currencies->get_value($currency), $currencies->get_decimal_places($currency),'.',''),
          Currency => $currency,
          Description => $order_description,
        CardHolder => substr($_POST['cc_owner'],0,50),
          CardNumber => $_POST['protx_direct_cc_number'],
          StartDate => $_POST['cc_start'],
          ExpiryDate => $_POST['cc_expires'],
          IssueNumber => $_POST['cc_issue'],
          CV2 => $_POST['cc_cvv'],
          CardType => $_POST['cc_type'],
          BillingAddress => substr($billing_add,0,200),
          BillingPostCode => substr($order->billing['postcode'],0,10),
          DeliveryAddress => substr($delivery_add,0,200),
          DeliveryPostCode => substr($order->delivery['postcode'],0,200),
          CustomerName => substr($order->customer['firstname'].' '.$order->customer['lastname'],0,100),
          ContactNumber => substr($order->customer['telephone'],0,20),
          CustomerEMail => substr($order->customer['email_address'],0,255),
          ClientIPAddress => tep_get_ip_address(),
          Basket => $basketlist,
          AccountType => MODULE_PAYMENT_PROTX_DIRECT_MERCHANT_ACCOUNT,
            Apply3DSecure =>$use_3D_Secure);

        // concatenate the submission data and put into variable $data
        while(list($key, $value) = each($submit_data)) {
          $data .= $key . '=' . urlencode($value) . '&';
        }
       
      // Strip final &
      $data = substr($data, 0, -1);

// SEND DATA BY CURL SECTION
        // Post order info data to Protx, make sure you have curl installed
        // Unset $response to make sure nothing left over from previous module calls
          unset($response);
        unset($responses);

        if (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Test') {
          $url = 'https://ukvpstest.protx.com/vpsDirectAuth/PaymentGateway3D.asp';
        } elseif (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Server IP Test') {
          $url = 'https://ukvpstest.protx.com/showpost/showpost.asp';
        } elseif (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Simulator') {
            $url = 'https://ukvpstest.protx.com/VSPSimulator/VSPDirectGateway.asp';
        } else {
            $url = 'https://ukvps.protx.com/vpsDirectAuth/PaymentGateway3D.asp';
        }

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_POST, $data);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

      if ($disable_curl_ssl_check === true) {
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        }

      $response = curl_exec($ch);
        $curl_error = curl_error($ch);

      curl_close ($ch);



      // Begin Debug Section
        if (MODULE_PAYMENT_PROTX_DIRECT_TRANSACTION_MODE == 'Server IP Test'){
        echo $response;
        echo $data;
        exit();
        }
      // End Debug Section

      // parse Protx response string
      $responses = Array();
      $response_array = explode("\r\n", $response);
      for ($i=0; $i < sizeof($response_array); $i++) {
        $key = substr($response_array[$i],0, strpos($response_array[$i], '='));
        $responses[$key] = substr(strstr($response_array[$i], '='), 1);
      }

      // Begin Debug Section
        if (MODULE_PAYMENT_PROTX_DIRECT_DEBUG == 'True'){
      echo '<pre>Request URL=' . $url . "\r\n" .
             'Data string sent=' . $data . "\r\n" .
           'Protx response=' . $response . "\r\n" .
               'Response array='. print_r($responses,true) ."\r\n".
             'curl_error= ' . $curl_error . '</pre>';
        exit();
        }
      // End Debug Section

      $data = Array('id' => '',
                      'customer_id' => (int)$customer_id,
                              'order_id' => $new_order_id,
                              'vendortxcode' => $VendorTxCode,
                              'txtype' => MODULE_PAYMENT_PROTX_DIRECT_AUTHORIZATION_TYPE,
                              'value' => number_format($_POST['ord_total'] * $currencies->get_value($currency), $currencies->get_decimal_places($currency), '.', ''),
                              'vpstxid' => $responses['VPSTxId'],
                              'status' => $responses['Status'],
                              'statusdetail' => $responses['StatusDetail'],
                              'txauthno' => $responses['TxAuthNo'],
                              'securitykey' => $responses['SecurityKey'],
                              'avscv2' => $responses['AVSCV2'],
                              'address_result' => $responses['AddressResult'],
                              'postcode_result' => $responses['PostCodeResult'],
                              'CV2_result' => $responses['CV2Result'],
                              '3DSecureStatus' => $responses['3DSecureStatus'],
                              'CAVV' => $responses['CAVV'],
                              'txtime' => date('Y-m-d H:i:s'));
        
        tep_db_perform(TABLE_PROTX_DIRECT, $data);
      $protx_id = tep_db_insert_id();
             
      // Check response and proceed appropriately
        switch ($responses['Status']) {
          case "3DAUTH":
              // Redirect to card issuing bank for 3D-Secure authorisation
            if ($use_iframe === true) {

              tep_session_register('protx_PAReq');
              $_SESSION['protx_PAReq'] = $responses['PAReq'];
                  
              tep_session_register('protx_MD');
              $_SESSION['protx_MD'] = $responses['MD'];
                  
              tep_session_register('protx_ACSURL');
              $_SESSION['protx_ACSURL'] = $responses['ACSURL'];
              ?>

<!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 //-->
  <center>
  <iframe src="<?php echo tep_href_link('protx_process.php' ,'action=iframe&termurl='.urlencode(tep_href_link('protx_process.php','action=3Dreturn&iframe=Y&ProtxID='.$protx_id, 'SSL', 'true')), 'SSL', 'true'); ?>" width="400px" height="400px" frameborder=1 scrolling="auto"></iframe>
  </center>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

<?php  } else {  // i.e. $use_iframe !== true
              echo '<SCRIPT LANGUAGE="Javascript">
                  function OnLoadEvent() { document.getElementById(\'theform\').submit(); }
                </SCRIPT>
                <html><head><title>3D Secure Verification</title></head>
                <body OnLoad="OnLoadEvent();">
                <FORM id="theform" action="'.$responses['ACSURL'].'" method="POST" />
                  <input type="hidden" name="PaReq" value="'.$responses['PAReq'].'" />
                  <input type="hidden" name="TermUrl" value="'. tep_href_link('protx_process.php','action=3Dreturn&ProtxID='.$protx_id,'SSL','true'),'" />
                  <input type="hidden" name="MD" value="'.$responses['MD'].'" />
                  <NOSCRIPT>
                    <center><p>Please click button below to Authenticate your card</p><p><input type="submit" value="Go" /></p></center>
                  </NOSCRIPT>
                </form></body></html>';
             }
              exit();
              break;
               
          case "OK":
            case "REGISTERED":
            case "AUTHENTICATED":
              // OK to proceed
          tep_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, 'protx_id='.$protx_id, 'SSL'));
              break;
            
            case "MALFORMED":
            case "INVALID":
            case "ERROR":
              // There's a fault with module or Protx
          tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_PROTX_ERROR), 'SSL', true, false));
              break;
            
            case "REJECTED":
            case "NOTAUTHED":
              // Card rejected either by AVS/CVV/3D-Secure rules or by bank
              tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_AVS_CVV_ERROR), 'SSL', true, false));
              break;
            
            default:
              // Just in case we haven't caught any other response, assume failed
          tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=protx_direct&error=' . urlencode(MODULE_PAYMENT_PROTX_DIRECT_TEXT_PROTX_ERROR), 'SSL', true, false));
              break;
        }
} elseif ($_GET['action'] == 'iframe') {
echo '<html>
    <head>
      <title>3D-Secure Validation</title>
      <SCRIPT LANGUAGE="Javascript">
     function OnLoadEvent() { document.getElementById(\'theform\').submit(); }
    </SCRIPT>
      </head>
      <body OnLoad="OnLoadEvent();">
    <form id="theform" action="'.$_SESSION['protx_ACSURL'].'" method="POST" />
    <input type="hidden" name="PaReq" value="'.$_SESSION['protx_PAReq'].'" />
    <input type="hidden" name="TermUrl" value="'.urldecode($_GET['termurl']).'" />
    <input type="hidden" name="MD" value="'.$_SESSION['protx_MD'].'" />
    <NOSCRIPT>
      <center>
          <p>Please click button below to Authenticate your card</p>
            <p><input type="submit" value="Go" /></p>
        </center>
    </NOSCRIPT>
  </form>
  </body>
  </html>';
// unregister protx 3D-secure session variables in case process is repeated due to failure  
tep_session_unregister('protx_ACSURL');
tep_session_unregister('protx_PAReq');
tep_session_unregister('protx_MD');
}
  exit();
?>
0
 
LVL 22

Accepted Solution

by:
NovaDenizen earned 2000 total points
ID: 19550669
I've googled, and it looks like other people have had similar problems when they updated their oscommerce version or MySQL version.

Are you sure that your oscommerce and MySQL versions are compatible?  Have you just upgraded either of these components?
0
 

Author Comment

by:purplelettuce
ID: 19554491
the php version is still on 4.4.3, i can upgrade it to 5.2.0 if necessary. I haven't upgraded anything else other than the specific pages the protx component told me to update.
0

Featured Post

Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Creating and Managing Databases with phpMyAdmin in cPanel.
In this blog post, we’ll look at how ClickHouse performs in a general analytical workload using the star schema benchmark test.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses
Course of the Month21 days, 6 hours left to enroll

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question