Jump to content

[SOLVED] Cannot send session cookie - headers already sent by...


Blackthorneppc

Recommended Posts

Hi, I ran into a problem installing Product Attributes - Option Type Feature for Oscommerce. Im not sure what I did wrong.

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /****/includes/classes/shopping_cart.php:1) in /****/includes/functions/sessions.php on line 97

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /****/includes/classes/shopping_cart.php:1) in /****/includes/functions/sessions.php on line 97

shopping_cart.php

<?php
/*
  $Id: shopping_cart.php,v 1.73 2003/06/09 23:03:56 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_SHOPPING_CART);

  $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART));
?>
<!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="0" cellpadding="0">
  <tr>
  <td valign="top">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
</td>
<!-- body_text //-->
<td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
	<td>

<?php tep_draw_heading_top();?>

<? new contentBoxHeading_ProdNew($info_box_contents);?>

<?php tep_draw_heading_top_1();?>

<?php
  if ($cart->count_contents() > 0) {
?>
<?php
$info_box_contents = array();
$info_box_contents[0][] = array('align' => 'center',
								'params' => 'class="shop_card_txt" style="width:15%"',
								'text' => ''.TABLE_HEADING_REMOVE.'');

$info_box_contents[0][] = array('params' => 'class="shop_card_txt" style="width:50%""',
								'text' => ''.TABLE_HEADING_PRODUCTS.'');

$info_box_contents[0][] = array('align' => 'center',
								'params' => 'class="shop_card_txt" style="width:15%""',
								'text' => ''.TABLE_HEADING_QUANTITY.'');

$info_box_contents[0][] = array('align' => 'center',
								'params' => 'class="shop_card_txt " style="width:20%""',
								'text' => ''.TABLE_HEADING_TOTAL.'');

$any_out_of_stock = 0;
$products = $cart->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
// Push all attributes information in an array
  if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
	while (list($option, $value) = each($products[$i]['attributes'])) {
// OTF contrib begins
//echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);
// OTF contrib ends
	  $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
								  from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
								  where pa.products_id = '" . (int)$products[$i]['id'] . "'
								   and pa.options_id = '" . (int)$option . "'
								   and pa.options_id = popt.products_options_id
								   and pa.options_values_id = '" . (int)$value . "'
								   and pa.options_values_id = poval.products_options_values_id
								   and popt.language_id = '" . (int)$languages_id . "'
								   and poval.language_id = '" . (int)$languages_id . "'");
	  $attributes_values = tep_db_fetch_array($attributes);
				// OTF contrib begins
	  if ($value == PRODUCTS_OPTIONS_VALUE_TEXT_ID) {					   

		$attr_value = $products[$i]['attributes_values'][$option] . 
		  tep_draw_hidden_field('id[' . $products[$i]['id'] . '+++' .
		  $i . '][' . TEXT_PREFIX . $option . ']',  
		  $products[$i]['attributes_values'][$option]);
		$attr_name_sql_raw = 'SELECT po.products_options_name FROM ' .
		  TABLE_PRODUCTS_OPTIONS . ' po, ' .
		  TABLE_PRODUCTS_ATTRIBUTES . ' pa WHERE ' .
		  ' pa.products_id="' . tep_get_prid($products[$i]['id']) . '" AND ' .
		  ' pa.options_id="' . $option . '" AND ' .
		  ' pa.options_id=po.products_options_id AND ' .
		  ' po.language_id="' . $languages_id . '" ';
		$attr_name_sql = tep_db_query($attr_name_sql_raw);
		if ($arr = tep_db_fetch_array($attr_name_sql)) {
		  $attr_name  = $arr['products_options_name'];
		}

	  } else {


		$attr_value = $attributes_values['products_options_values_name'] . 
		  tep_draw_hidden_field('id[' . $products[$i]['id'] . '+++' . 
		  $i. '][' . $option . ']', $value);
		$attr_name  = $attributes_values['products_options_name'];

	  }
	  // OTF contrib ends

	  // OTF contrib begins
	  //$products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
	  $products[$i][$option]['products_options_name'] = $attr_name;
	  // OTF contrib ends
	  $products[$i][$option]['options_values_id'] = $value;

	  // OTF contrib begins
	  //$products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
	  $products[$i][$option]['products_options_values_name'] = $attr_value;
	  // OTF contrib ends
	  $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
	  $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
	}
  }
}

for ($i=0, $n=sizeof($products); $i<$n; $i++) {
  if (($i/2) == floor($i/2)) {
	$info_box_contents[] = array('params' => 'class=""');
  } else {
	$info_box_contents[] = array('params' => 'class=""');
  }

  $cur_row = sizeof($info_box_contents) - 1;

  $info_box_contents[$cur_row][] = array('align' => 'center',
										 'params' => 'class="" valign="top"',
										 'text' => '<br style="line-height:1px;"><br style="line-height:44px;">' .tep_draw_checkbox_field('cart_delete[]', $products[$i]['id']));

  $products_name = '
														<table cellpadding="0" cellspacing="0" border="0" style=" width:290px;">
															<tr>
																<td height="168"><img src="images/spacer.gif" width="7" height="1" alt=""></td>
																<td class="pic"><br style="line-height:11px"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br></td>
																<td><img src="images/spacer.gif" width="7" height="1" alt=""></td>												
																  <td width="100%" ><br style="line-height:13px">
																<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . substr($products[$i]['name'],0,MAX_DESCR_NAME_SHOPPCART) . '</a>';


						  
  if (STOCK_CHECK == 'true') {
	$stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);
	if (tep_not_null($stock_check)) {
	  $any_out_of_stock = 1;

	  $products_name .= $stock_check;
	}
  }

  if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
	reset($products[$i]['attributes']);
	while (list($option, $value) = each($products[$i]['attributes'])) {
	  $products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>';
	}
  }	
	$products_name .= '</td>

															</tr>
														</table>

							';


  
  
  
  


  $info_box_contents[$cur_row][] = array('params' => 'class=""',
										 'text' => '<br style="line-height:1px">'.$products_name);

  $info_box_contents[$cur_row][] = array('align' => 'center',
										 'params' => ' class="form_1" valign="top"',
										 'text' => '<br style="line-height:1px;"><br style="line-height:44px">'.tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4" id="input3"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']));

  $info_box_contents[$cur_row][] = array('align' => 'center',
										 'params' => 'class="" valign="top"',
										 'text' => '<br style="line-height:1px;"><br style="line-height:44px"><span>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</span>');
}

new productListingBox($info_box_contents);
?>

<?php
if ($any_out_of_stock == 1) {
  if (STOCK_ALLOW_CHECKOUT == 'true') {
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
  <tr>
	<td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td>
  </tr>
</table>
<?php
  } else {
?>
  <table cellpadding="0" cellspacing="0" border="0" width="100%">
  <tr>
	<td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td>
  </tr>
  </table>
  <table cellpadding="0" cellspacing="0" border="0" width="100%">
  <tr>
	<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '1'); ?></td>
  </tr>
  </table>

<?php
  }
}
?>
											<table cellspacing="0" cellpadding="0" border="0" class="product">
												<tr><td class="bg16" colspan="2"></td></tr>
												<tr>
													<td width="82%" align="right" height="45" style=" vertical-align:middle;"><?php echo tep_draw_separator('pixel_trans.gif', '97', '1'); ?><br><strong><?php echo SUB_TITLE_SUB_TOTAL; ?></strong>   <br>
												  </td>
													<td width="18%" height="45" align="center" style=" vertical-align:middle;">														
														<span><?php echo $currencies->format($cart->show_total()); ?></span>
													</td>
												</tr>
											</table>
											<table cellspacing="0" cellpadding="0" border="0" >
												<tr>
													<td width="499" height="22">
														<?php echo tep_draw_separator('pixel_trans.gif', '13', '1'); ?><?php echo tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART); ?><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?><?php
$back = sizeof($navigation->path)-2;
if (isset($navigation->path[$back])) {
echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping1.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; 
}
?><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '">' . tep_image_button('button_checkout.gif', IMAGE_BUTTON_CHECKOUT) . '</a>'; ?><br>
													</td>
												</tr>
											</table>
<?php
  } else {
?>
  
<br style="line-height:1px;"><br style="line-height:5px;">


		<table border="0" width="100%" cellspacing="0" cellpadding="2">
		  <tr>
			  <td></td>
			<td align="center" class="main"><br><?php new infoBox_77(array(array('text' => TEXT_CART_EMPTY))); ?></td>
			<td></td>
		  </tr>
		  <tr>
			<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
			<td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?><br><br></td>
			<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
		  </tr>
		  <tr><td colspan="3" height="5"></td></tr>
		</table>



<?php
  }
?>

<?php tep_draw_heading_bottom_1();?>

<?php tep_draw_heading_bottom();?>

</table>



</form></td>

<!-- body_text_eof //-->
<td valign="top">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
</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'); ?>

 

sessions.php

<?php
/*
  $Id: sessions.php,v 1.19 2003/07/02 22:10:34 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

  if (STORE_SESSIONS == 'mysql') {
if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
  $SESS_LIFE = 1440;
}

function _sess_open($save_path, $session_name) {
  return true;
}

function _sess_close() {
  return true;
}

function _sess_read($key) {
  $value_query = tep_db_query("select value from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "' and expiry > '" . time() . "'");
  $value = tep_db_fetch_array($value_query);

  if (isset($value['value'])) {
	return $value['value'];
  }

  return false;
}

function _sess_write($key, $val) {
  global $SESS_LIFE;

  $expiry = time() + $SESS_LIFE;
  $value = $val;

  $check_query = tep_db_query("select count(*) as total from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
  $check = tep_db_fetch_array($check_query);

  if ($check['total'] > 0) {
	return tep_db_query("update " . TABLE_SESSIONS . " set expiry = '" . tep_db_input($expiry) . "', value = '" . tep_db_input($value) . "' where sesskey = '" . tep_db_input($key) . "'");
  } else {
	return tep_db_query("insert into " . TABLE_SESSIONS . " values ('" . tep_db_input($key) . "', '" . tep_db_input($expiry) . "', '" . tep_db_input($value) . "')");
  }
}

function _sess_destroy($key) {
  return tep_db_query("delete from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
}

function _sess_gc($maxlifetime) {
  tep_db_query("delete from " . TABLE_SESSIONS . " where expiry < '" . time() . "'");

  return true;
}

session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  }

  function tep_session_start() {
global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS;

$sane_session_id = true;

if (isset($HTTP_GET_VARS[tep_session_name()])) {
  if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_GET_VARS[tep_session_name()]) == false) {
	unset($HTTP_GET_VARS[tep_session_name()]);

	$sane_session_id = false;
  }
} elseif (isset($HTTP_POST_VARS[tep_session_name()])) {
  if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_POST_VARS[tep_session_name()]) == false) {
	unset($HTTP_POST_VARS[tep_session_name()]);

	$sane_session_id = false;
  }
} elseif (isset($HTTP_COOKIE_VARS[tep_session_name()])) {
  if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_COOKIE_VARS[tep_session_name()]) == false) {
	$session_data = session_get_cookie_params();

	setcookie(tep_session_name(), '', time()-42000, $session_data['path'], $session_data['domain']);

	$sane_session_id = false;
  }
}

if ($sane_session_id == false) {
  tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false));
}

return session_start();
  }

  function tep_session_register($variable) {
global $session_started;

if ($session_started == true) {
  return session_register($variable);
} else {
  return false;
}
  }

  function tep_session_is_registered($variable) {
return session_is_registered($variable);
  }

  function tep_session_unregister($variable) {
return session_unregister($variable);
  }

  function tep_session_id($sessid = '') {
if (!empty($sessid)) {
  return session_id($sessid);
} else {
  return session_id();
}
  }

  function tep_session_name($name = '') {
if (!empty($name)) {
  return session_name($name);
} else {
  return session_name();
}
  }

  function tep_session_close() {
if (PHP_VERSION >= '4.0.4') {
  return session_write_close();
} elseif (function_exists('session_close')) {
  return session_close();
}
  }

  function tep_session_destroy() {
return session_destroy();
  }

  function tep_session_save_path($path = '') {
if (!empty($path)) {
  return session_save_path($path);
} else {
  return session_save_path();
}
  }

  function tep_session_recreate() {
if (PHP_VERSION >= 4.1) {
  $session_backup = $_SESSION;

  unset($_COOKIE[tep_session_name()]);

  tep_session_destroy();

  if (STORE_SESSIONS == 'mysql') {
	session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  }

  tep_session_start();

  $_SESSION = $session_backup;
  unset($session_backup);
}
  }
?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.