Некорректная работа session_set_save_handler() в php 4.3.3 (

Гравицапа

elbirret elcno
Некорректная работа session_set_save_handler() в php 4.3.3 (

Собственно,
заданы функции хранения сессии в БД (мускуль).
PHP:
//................................
  function s_write( $sKey, $sVal )
  {
	$sVal = addslashes( $sVal );
	$users = $_SESSION['users'];
	global $db_type;
	$query = "UPDATE tblSessions SET sdata = '$sVal', lastupdate = " . time();
	if($db_type=='mysql'){    
	   $query .= ", user = '" . $users . "' WHERE id = '$sKey'";
	}else{
	  $query .=  ", \"user\" = '" . $users . "' WHERE id = '$sKey'";
	}
	session_log("s_write: $query");
	db_query($query);
	return True;
  }

session_set_save_handler("s_open", "s_close", "s_read", "s_write", "s_destroy", "s_gc");
//..............
так вот в версии 4.3.3 функция s_write почему-то получает "не всю" сессию(имеется в виду $sVal), то есть часть сессии теряется.

В качестве сессионных данных - многомерные ассоц. массивы.
В версии 4.3.10 всё пучком. Необходмо сделать работоспособным для всех 4.х и выше.
Что посоветуете?
 

kvf77

Red Devil
Гравицапа

гм - ну тут очень интересный вопрос - незачем использовать старые версии - это залог успеха.
 

si

Administrator
[skip]

если это баг в РНР ты особо ничего не сделаешь
 

kvf77

Red Devil
Гравицапа

вы тем самым загоняете себя в ненужную яму. надо поддерживать последние версии - иначе ваш продукт устаревает быстрее, чем сам PHP, становится из-за заплаток неповоротливым
 

si

Administrator
Гравицапа
какой смысл поддерживать версии которые потенциально опасны для клиентов ? в таком контексте получается, больше кастомеров - больше проблем
 

Гравицапа

elbirret elcno
si
возможно вы и правы.
По теме - а если переопределить с помошью
session.serialize_handler новый обратотчик для сериализации ?
По умолчанию там пхпшный
session.serialize_handler defines the name of the handler which is used to serialize/deserialize data. Currently, a PHP internal format (name php) and WDDX is supported (name wddx). WDDRfrjX is only available, if PHP is compiled with WDDX support. Defaults to php.
Кто-нибудь реализовывал подобное?
Какой вид должен быть у этого обработчика?
Или это не поможет?

-~{}~ 07.09.05 09:37:

если кому интересно, то всё получилось просто до безобразия....)
Функция function s_write( $sKey, $sVal ) оказывается видела полную сессию(то есть массив $_SESSION), то есть баг был на этапе сериаллизации и переадчи в переменной $sVal.
В функции s_write заново сериаллизовал сессию и всё заработало как надо!
 
Сверху