Ну, информация в $_SESSION
просто хранится в виде сериализованной строки на диске.(Если вы не используете что-то вроде хранилища сессий memcached)
Так что чтение в этом файле, десериализация его содержимого, изменение соответствующих значений и последующая сериализация обратно должны составлять практически все, что вам нужно.
Если вы не хотите иметь дело с этим, вы можете установить session_id()
до session_start()
, затем отредактируйте значения с помощью php и затем вызовите session_write_close()
, чтобы снова сохранить его на диске.
Пример сценария для идентификатора сеанса:
<?php
session_id("838c4dc18f6535cb90a9c2e0ec92bad4");
session_start();
var_dump($_SESSION);
$_SESSION["a"] = "foo";
session_write_close();
Пример сценария для десериализации (функция взята из комментариев на странице unserialze php.net )
<?php
session_save_path("./session");
session_start();
$_SESSION["x"] = 1;
$id = session_id();
var_dump($id);
session_write_close();
$session = file_get_contents("./session/sess_$id");
var_dump($session);
function unserialize_session_data( $serialized_string ) {
$variables = array( );
$a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
for( $i = 0; $i < count( $a ); $i = $i+2 ) {
$variables[$a[$i]] = unserialize( $a[$i+1] );
}
return( $variables );
}
var_dump(unserialize_session_data($session));
Собрать его вместе - не сложный эфир.