далее перечислена библиотека функций, которая эмулирует поведение сессий.
поместим эту библиотеку в файл session.php

                        
<?php 
/*
*Собственный механизм сессий
*/


/*
далее перечислена библиотека функций, которая эмулирует поведение сессий.

поместим эту библиотеку в файл session.php
*/

// Открываем
function open($save_path, $session_name)
{
// Сетевой адрес MySQL-сервера
$dblocation = "localhost";
// Имя базы данных
$dbname = "boo";
// Пользователь
$dbuser = "root";
// Его пароль
$dbpasswd = "";

// Устанавливаем соединение с базой данных
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) exit ("К сожалению, не доступен сервер MySQL : ".mysql_error());
// Выбираем базу данных
if (!@mysql_select_db($dbname,$dbcnx)) exit("К сожалению, не доступна база данных : ".mysql_error());

//создаем таблицу в mysql (если она еще не создана)
mysql_query("CREATE TABLE IF NOT EXISTS session (
id_session int(11) NOT NULL auto_increment,
session tinytext NOT NULL,
putdate datetime NOT NULL default '0000-00-00 00:00:00',
value tinytext NOT NULL,
PRIMARY KEY (id_session)
) TYPE=MyISAM;");

return true;
}

function close()
{
// Закрываем соединение с базой данных
mysql_close();

return true;
}

function read($id)
{
// Читаем данные сессии
$query = "SELECT value FROM session WHERE session = '$id'";
$ses = mysql_query($query);
if(!$ses) exit(mysql_error());
$session = mysql_fetch_array($ses);

// Возвращаем данные, помещённые в сессию
return $session['value'];
}

function write($id, $sess_data)
{
// Проверяем не зарегистрирована ли сессия
// с таким именем
$query = "SELECT COUNT(*) FROM session WHERE session = '$id'";
$ses = mysql_query($query);
if(!$ses) exit(mysql_error());
if(mysql_result($ses,0) > 0)
{
// Такая сессия уже существует, необходимо
// обновить время обращения к сессии
$query = "UPDATE session SET putdate = NOW(),
value = '$sess_data'
WHERE session = '$id'";
if(!mysql_query($query)) exit(mysql_error());
return false;
}
else
{
// Это первое обращение к сессии, необходимо
// её зарегистрировать в базе данных
$query = "INSERT INTO session
VALUES (NULL,'$id', NOW(), '$sess_data')";
$ses = mysql_query($query);
if(!$ses) exit(mysql_error());
return true;
}
}

function destroy($id)
{
// Удаляем сессию с идентификатором $id
$query = "DELETE FROM session WHERE session = '$id'";
if(!mysql_query($query)) exit(mysql_error());
return true;
}

function gc($maxlifetime)
{
// Выполняем "сборку мусора" - удаляем
// старые записи
$query = "DELETE FROM session
WHERE putdate < NOW() - INTERVAL 20 MINUTE";
if(!mysql_query($query)) exit(mysql_error());
return true;
}

//говорим интерпритатору, что мы будем использовать свои функции для обработки сессий
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");

//старт сессии
session_start();

/*
на этом библиотечный файл session.php закончен, теперь просто инклудим его где требуется сессия
*/

/*
пример использования (ничем не отличается от стандартных сессий)
*/

/*
<?php
//include "session.php";
$_SESSION['name'] = "Имя";
$_SESSION['surname'] = "Фамилия";

print_r($_SESSION);
echo '<a href="session.php">go</a>';
?>
*/

?>
4 10 0
0

Нет фото
• 3 май 2013, 16:26


Не из CI библиотека случайно?