Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

SEO URLS and SID Killer


Recommended Posts

Hi - Installed Ultimate SEO URLs. Works fine. I think installed SID Killer

http://www.oscommerce.com/community/contri...arch,SID+killer

 

When I made changes to the html output functions, indeed it got rid of the osCsid=01b58f984796527bcd92c8d60ce5b698

 

However when I added anything to the cart, it displayed cart is empty.

 

My Original Page

 

<?php

/*

$Id: html_output.php,v 1.1.1.1 2005/01/15 06:43:52 Michael Sasek Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

 

Released under the GNU General Public License

*/

 

function implode_assoc($array, $inner_glue='=', $outer_glue='&') {

$output = array();

foreach( $array as $key => $item )

$output[] = $key . $inner_glue . $item;

 

return implode($outer_glue, $output);

}

 

function short_name($str, $limit=3){

if (defined('SEO_URLS_FILTER_SHORT_WORDS')) $limit = SEO_URLS_FILTER_SHORT_WORDS;

$foo = explode('-', $str);

foreach($foo as $index => $value){

switch (true){

case ( strlen($value) <= $limit ):

continue;

default:

$container[] = $value;

break;

}

} # end foreach

$container = ( sizeof($container) > 1 ? implode('-', $container) : $str );

return $container;

}

 

////

// The HTML href link wrapper function

function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {

global $request_type, $session_started, $SID;

 

$seo = ( defined('SEO_URLS') ? SEO_URLS : false );

$seo_rewrite_type = ( defined('SEO_URLS_TYPE') ? SEO_URLS_TYPE : false );

$seo_pages = array('index.php', 'product_info.php');

if ( !in_array($page, $seo_pages) ) $seo = false;

 

if (!tep_not_null($page)) {

die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>');

}

 

if ($page == '/') $page = '';

 

if ($connection == 'NONSSL') {

$link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

$seo_link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

$seo_rewrite_link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

} elseif ($connection == 'SSL') {

if (ENABLE_SSL == true) {

$link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;

$seo_link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;

$seo_rewrite_link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;

} else {

$link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

$seo_link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

$seo_rewrite_link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

}

} else {

die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL</b><br><br>');

}

 

if (tep_not_null($parameters)) {

$link .= $page . '?' . tep_output_string($parameters);

$separator = '&';

 

# Start exploding the parameters to extract the values

# Also, we could use parse_str($parameters) and would probably be more clean

if ($seo == 'true'){

$p = explode('&', $parameters);

krsort($p);

$params = array();

 

if ( $seo_rewrite_type == 'Rewrite' ){

foreach ($p as $index => $valuepair) {

$p2 = explode('=', $valuepair);

switch ($p2[0]){

case 'products_id':

$rewrite_product = true;

if ( defined('PRODUCT_NAME_'.$p2[1]) ){

$rewrite_page_product = short_name(constant('PRODUCT_NAME_'.$p2[1])) . '-p-' . $p2[1] . '.html';

} else { $seo = false; }

break;

 

case 'cPath':

$rewrite_category = true;

if ( defined('CATEGORY_NAME_'.$p2[1]) ){

$rewrite_page_category = short_name(constant('CATEGORY_NAME_'.$p2[1])) . '-c-' . $p2[1] . '.html';

} else { $seo = false; }

break;

// manufacturer addition by WebPixie

case 'manufacturers_id':

$rewrite_manufacturer = true;

if ( defined('MANUFACTURER_NAME_'.$p2[1]) ){

$rewrite_page_manufacturer = short_name(constant('MANUFACTURER_NAME_'.$p2[1])) . '-m-' . $p2[1] . '.html';

} else { $seo = false; }

break;

// end manufacturer addition by WebPixie

default:

$params[$p2[0]] = $p2[1];

break;

} # switch

} # end foreach

$params_stripped = implode_assoc($params);

switch (true){

case ( $rewrite_product && $rewrite_category ):

case ( $rewrite_product ):

$rewrite_page = $rewrite_page_product;

$rewrite_category = false;

break;

case ( $rewrite_category ):

$rewrite_page = $rewrite_page_category;

break;

// manufacturer addition by WebPixie

case ( $rewrite_manufacturer ):

$rewrite_page = $rewrite_page_manufacturer;

break;

// end manufacturer addition by WebPixie

default:

$seo = false;

break;

} #end switch true

$seo_rewrite_link .= $rewrite_page . ( tep_not_null($params_stripped) ? '?'.tep_output_string($params_stripped) : '' );

$separator = ( tep_not_null($params_stripped) ? '&' : '?' );

} else {

foreach ($p as $index => $valuepair) {

$p2 = explode('=', $valuepair);

switch ($p2[0]){

case 'products_id':

if ( defined('PRODUCT_NAME_'.$p2[1]) ){

$params['pName'] = constant('PRODUCT_NAME_'.$p2[1]);

} else { $seo = false; }

break;

 

case 'cPath':

if ( defined('CATEGORY_NAME_'.$p2[1]) ){

$params['cName'] = constant('CATEGORY_NAME_'.$p2[1]);

} else { $seo = false; }

break;

// manufacturer addition by WebPixie

case 'manufacturers_id':

if ( defined('MANUFACTURER_NAME_'.$p2[1]) ){

$params['mName'] = constant('MANUFACTURER_NAME_'.$p2[1]);

} else { $seo = false; }

break;

// end manufacturer addition by WebPixie

default:

$params[$p2[0]] = $p2[1];

break;

} # switch

} # end foreach

$params_stripped = implode_assoc($params);

$seo_link .= $page . '?'.tep_output_string($params_stripped);

$separator = '&';

} # end if/else

} # end if $seo

} else {

$link .= $page;

$separator = '?';

$seo = false;

} # end if(tep_not_null($parameters)

 

while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

 

// Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined

if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) {

if (tep_not_null($SID)) {

$_sid = $SID;

} elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) {

if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {

$_sid = tep_session_name() . '=' . tep_session_id();

}

}

}

 

if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {

while (strstr($link, '&&')) $link = str_replace('&&', '&', $link);

while (strstr($seo_link, '&&')) $seo_link = str_replace('&&', '&', $seo_link);

 

$link = str_replace('?', '/', $link);

$link = str_replace('&', '/', $link);

$link = str_replace('=', '/', $link);

$seo_link = str_replace('?', '/', $seo_link);

$seo_link = str_replace('&', '/', $seo_link);

$seo_link = str_replace('=', '/', $seo_link);

$seo_rewrite_link = str_replace('?', '/', $seo_rewrite_link);

$seo_rewrite_link = str_replace('&', '/', $seo_rewrite_link);

$seo_rewrite_link = str_replace('=', '/', $seo_rewrite_link);

 

$separator = '?';

}

 

if (isset($_sid)) {

$link .= $separator . $_sid;

$seo_link .= $separator . $_sid;

$seo_rewrite_link .= $separator . $_sid;

}

 

if ($seo == 'true') {

return ($seo_rewrite_type == 'Rewrite' ? $seo_rewrite_link : $seo_link);

} else {

return $link;

}

}

 

////

// The HTML image wrapper function

function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '') {

if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') ) {

return false;

}

 

// if (!file_exists($src)) $src = DIR_WS_IMAGES . 'pixel_trans.gif';

 

// alt is added to the img tag even if it is null to prevent browsers from outputting

// the image filename as default

if (file_exists($src) && !is_dir($src)) {

$image = '<img src="' . tep_output_string($src) . '" border="0" alt="' . tep_output_string($alt) . '"';

}else {

$image = '<img src="images/pixel_trans.gif" border="0" alt="' . tep_output_string($alt) . '"';

}

 

// $image = '<img src="' . tep_output_string($src) . '" border="0" alt="' . tep_output_string($alt) . '"';

 

if (tep_not_null($alt)) {

$image .= ' title=" ' . tep_output_string($alt) . ' "';

}

 

if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') && (empty($width) || empty($height)) ) {

if ($image_size = @getimagesize($src)) {

if (empty($width) && tep_not_null($height)) {

$ratio = $height / $image_size[1];

$width = $image_size[0] * $ratio;

} elseif (tep_not_null($width) && empty($height)) {

$ratio = $width / $image_size[0];

$height = $image_size[1] * $ratio;

} elseif (empty($width) && empty($height)) {

$width = $image_size[0];

$height = $image_size[1];

}

} elseif (IMAGE_REQUIRED == 'false') {

return false;

}

}

if (tep_not_null($width) && tep_not_null($height)) {

$image .= ' width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"';

}

 

if (tep_not_null($parameters)) $image .= ' ' . $parameters;

 

$image .= '>';

 

return $image;

}

 

////

// The HTML form submit button wrapper function

// Outputs a button in the selected language

function tep_image_submit($image, $alt = '', $parameters = '') {

global $language;

 

$image_submit = '<input type="image" src="' . tep_output_string(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image) . '" border="0" alt="' . tep_output_string($alt) . '"';

 

if (tep_not_null($alt)) $image_submit .= ' title=" ' . tep_output_string($alt) . ' "';

 

if (tep_not_null($parameters)) $image_submit .= ' ' . $parameters;

 

$image_submit .= '>';

 

return $image_submit;

}

 

////

// Output a function button in the selected language

function tep_image_button($image, $alt = '', $parameters = '') {

global $language;

 

return tep_image(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image, $alt, '', '', $parameters);

}

 

////

// Output a separator either through whitespace, or with an image

function tep_draw_separator($image = 'pixel_black.gif', $width = '100%', $height = '1') {

return tep_image(DIR_WS_IMAGES . $image, '', $width, $height);

}

 

////

// Output a form

function tep_draw_form($name, $action, $method = 'post', $parameters = '') {

$form = '<form name="' . tep_output_string($name) . '" action="' . tep_output_string($action) . '" method="' . tep_output_string($method) . '"';

 

if (tep_not_null($parameters)) $form .= ' ' . $parameters;

 

$form .= '>';

 

return $form;

}

 

////

// Output a form input field

function tep_draw_input_field($name, $value = '', $parameters = '', $type = 'text', $reinsert_value = true) {

$field = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';

 

if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {

$field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';

} elseif (tep_not_null($value)) {

$field .= ' value="' . tep_output_string($value) . '"';

}

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= '>';

 

return $field;

}

 

////

// Output a form password field

function tep_draw_password_field($name, $value = '', $parameters = 'maxlength="40"') {

return tep_draw_input_field($name, $value, $parameters, 'password', false);

}

 

////

// Output a selection field - alias function for tep_draw_checkbox_field() and tep_draw_radio_field()

function tep_draw_selection_field($name, $type, $value = '', $checked = false, $parameters = '') {

$selection = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';

 

if (tep_not_null($value)) $selection .= ' value="' . tep_output_string($value) . '"';

 

if ( ($checked == true) || ( isset($GLOBALS[$name]) && is_string($GLOBALS[$name]) && ( ($GLOBALS[$name] == 'on') || (isset($value) && (stripslashes($GLOBALS[$name]) == $value)) ) ) ) {

$selection .= ' CHECKED';

}

 

if (tep_not_null($parameters)) $selection .= ' ' . $parameters;

 

$selection .= '>';

 

return $selection;

}

 

////

// Output a form checkbox field

function tep_draw_checkbox_field($name, $value = '', $checked = false, $parameters = '') {

return tep_draw_selection_field($name, 'checkbox', $value, $checked, $parameters);

}

 

////

// Output a form radio field

function tep_draw_radio_field($name, $value = '', $checked = false, $parameters = '') {

return tep_draw_selection_field($name, 'radio', $value, $checked, $parameters);

}

 

////

// Output a form textarea field

function tep_draw_textarea_field($name, $wrap, $width, $height, $text = '', $parameters = '', $reinsert_value = true) {

$field = '<textarea name="' . tep_output_string($name) . '" wrap="' . tep_output_string($wrap) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= '>';

 

if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {

$field .= stripslashes($GLOBALS[$name]);

} elseif (tep_not_null($text)) {

$field .= $text;

}

 

$field .= '</textarea>';

 

return $field;

}

 

////

// Output a form hidden field

function tep_draw_hidden_field($name, $value = '', $parameters = '') {

$field = '<input type="hidden" name="' . tep_output_string($name) . '"';

 

if (tep_not_null($value)) {

$field .= ' value="' . tep_output_string($value) . '"';

} elseif (isset($GLOBALS[$name])) {

$field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';

}

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= '>';

 

return $field;

}

 

////

// Hide form elements

function tep_hide_session_id() {

global $session_started, $SID;

 

if (($session_started == true) && tep_not_null($SID)) {

return tep_draw_hidden_field(tep_session_name(), tep_session_id());

}

}

 

////

// Output a form pull down menu

function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) {

$field = '<select name="' . tep_output_string($name) . '"';

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= '>';

 

if (empty($default) && isset($GLOBALS[$name])) $default = stripslashes($GLOBALS[$name]);

 

for ($i=0, $n=sizeof($values); $i<$n; $i++) {

$field .= '<option value="' . tep_output_string($values[$i]['id']) . '"';

if ($default == $values[$i]['id']) {

$field .= ' SELECTED';

}

 

$field .= '>' . tep_output_string($values[$i]['text'], array('"' => '"', '\'' => ''', '<' => '<', '>' => '>')) . '</option>';

}

$field .= '</select>';

 

if ($required == true) $field .= TEXT_FIELD_REQUIRED;

 

return $field;

}

 

////

// Creates a pull-down list of countries

function tep_get_country_list($name, $selected = '', $parameters = '') {

$countries_array = array(array('id' => '', 'text' => PULL_DOWN_DEFAULT));

$countries = tep_get_countries();

 

for ($i=0, $n=sizeof($countries); $i<$n; $i++) {

$countries_array[] = array('id' => $countries[$i]['countries_id'], 'text' => $countries[$i]['countries_name']);

}

 

return tep_draw_pull_down_menu($name, $countries_array, $selected, $parameters);

}

?>

 

 

The changes I am asked to make with SID Killer

 

Now you need to edit /includes/functions/html_output.php

 

straight after the line

function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {

add

 

global $kill_sid, $HTTP_GET_VARS;

 

then straight after the lines

} else {

die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL</b><br><br>');

}

add

 

if ($HTTP_GET_VARS['language'] && $kill_sid) {

$l = ereg('[&\?/]?language[=/][a-z][a-z]', $parameters, $m);

if ($l) {

$parameters = ereg_replace("[&\?/]?language[=/][a-z][a-z]", "", $parameters);

$HTTP_GET_VARS['language'] = substr($m[0],-2);

}

if (tep_not_null($parameters)) {

$parameters .= "&language=" . $HTTP_GET_VARS['language'];

} else {

$parameters = "language=" . $HTTP_GET_VARS['language'];

}

}

 

 

and finally

 

find the lines

 

if (isset($sid)) {

$link .= $separator . $sid;

}

and change to

 

if (isset($sid) && ( !$kill_sid ) ) {

$link .= $separator . $sid;

}

 

an that's it.

 

 

Can anyone help me?!

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

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