Jump to content

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


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);
}
  }
?>

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.