Как CodeIgniter знает, что cookie содержит допустимые данные сессии?

В CodeIgniter данные сессии сохраняются в cookie по умолчанию. Но должен быть также файл на моем сервере (назван как идентификатор сессии), чтобы проверить, что данные (в cookie) допустимы, или являются мной неправильно?

Я ищу местоположение, где сессии сохраняются. Я уже посмотрел в каталоге (/var/lib/php5) "сессии save_path", но в этом каталоге существуют только другие сессии, но не сессии CodeIgniter.

Я не сохраняю сессии в базе данных также, поэтому как CodeIgniter знает, что данные (в cookie) допустимы?

20
задан Rob Kennedy 22 March 2012 в 21:45
поделиться

3 ответа

Концепция блокировки Oracle сильно отличается от концепции других систем.

Когда строка в Oracle блокируется, сама запись обновляется новым значением (если оно есть) и, кроме того, блокировка (которая по существу является указателем на блокировку транзакции, которая находится в сегменте отката) помещается прямо в запись.

Это означает, что блокировка записи в Oracle означает обновление метаданных записи и выдачу логической записи страницы. Например, нельзя выполнить команду SELECT FOR UPDATE в табличной области, доступной только для чтения.

Более того, сами записи не обновляются после фиксации: вместо этого обновляется сегмент отката.

Это означает, что каждая запись содержит некоторую информацию о последней обновленной транзакции, даже если сама транзакция уже давно умерла. Чтобы узнать, активна ли транзакция (и, следовательно, активна ли запись), необходимо посетить сегмент отката.

Oracle не имеет традиционного диспетчера блокировок, и это означает, что получение списка всех блокировок требует сканирования всех записей во всех объектах. Это займет слишком много времени.

Можно получить некоторые специальные блокировки, такие как заблокированные объекты метаданных (с помощью v $ locked _ object ), ожидания блокировки (с помощью v $ session ) и т.д., но не список всех блокировок для всех объектов в базе данных.

-121--2393389-

@ AndyL Для санкеямля добавьте его в javapath, затем импортируйте ('org.yaml.snakeyaml.Yaml'), и он работает как документы; полученный в результате LinkedHashMap более или менее похож на структуру matlab.

-121--3303175-

Это не является прямым ответом на ваш вопрос, но я подумал, что это может быть полезно узнать.

Для просмотра сеанса PHP используйте следующее.

print_r ($_SESSION);

Для просмотра сеанса CI используйте следующее.

print_r ($this->session->userdata);
5
ответ дан 30 November 2019 в 01:02
поделиться

Печенье содержит хеш MD5 данных сеанса и ключ шифрования файла cookie, который подтвержден при загрузке данных, см. Система / библиотеки / Session.php, функция SESS_READ () LINES 140FF :

// Decrypt the cookie data
if ($this->sess_encrypt_cookie == TRUE)
{
   $session = $this->CI->encrypt->decode($session);
}
else
{
   // encryption was not used, so we need to check the md5 hash
   $hash  = substr($session, strlen($session)-32); // get last 32 chars
   $session = substr($session, 0, strlen($session)-32);
   // Does the md5 hash match?  This is to prevent manipulation of session data in userspace
   if ($hash !==  md5($session.$this->encryption_key))
   {
       log_message('error', 'The session cookie data did not match what was expected. This could be a possible hacking attempt.');
       $this->sess_destroy();
       return FALSE;
   }
}
5
ответ дан 30 November 2019 в 01:02
поделиться

Книга Essential LINQ содержит большое резюме преимуществ LINQ:

LINQ делает больше, чем просто добавляет новые функции для языка. Это вводит делкаративный стиль программирование на языке C #. декларативная модель программирования позволяет разработчикам создать код, который лаконично фиксирует их намерение, не заставляя их беспокоиться о порядок, в котором происходят события, или их точное осуществление. Это позволяет разработчикам указывать, что они хотите делать, а не как это будет готово.

-121--1855976-

Можно использовать класс System.Threading.Mutex , который имеет метод OpenExisting для открытия именованного системного мьютекса.

-121--2447916-

Собственная установка кодового воспламенителя переопределяет обычную обработку сеансов PHP и использует собственную систему обработки данных, что является причиной невозможности найти их в обычных местах. (Также я бы упомянул, что я лично нахожу способ его реализации немного небезопасным, так как ВСЕ данные вашего сеанса хранятся непосредственно в файле cookie сеанса браузера пользователей.)

Вы можете сделать так, как предлагает Residuum, и проследить через библиотеку сеансов кодового воспламенителя и найти, где он хранится, или вы можете переопределить обработку сеанса чем-то вроде OB_Session. ( http://bleakview.orgfree.com/obsession/ )

Я бы настоятельно предложил установить либо OB_Session, либо что-то подобное, так как затем он будет использовать встроенную обработку сеанса PHP, и он сохранит ваши куки-файлы либо от A) становится слишком большим и критичным по отношению к байту браузера, либо B) позволяя конфиденциальным пользовательским данным храниться на стороне клиента.

Наконец, в зависимости от того, что вы пытаетесь сделать, я должен следовать инструкциям руководства пользователя CI и сохранять данные сеанса в базе данных. ( http://codeigniter.com/user_guide/libraries/sessions.html ) Это ЗНАЧИТЕЛЬНО облегчит вам работу с данными и даже обновит и расширит то, что хранится в Codeigniter. Имейте в виду, что, даже если вы сохраняете его в базе данных, вы все еще должны изменить на что-то вроде OB_Session, так как ваш cookie по-прежнему содержит все данные даже при изменении в базе данных.

10
ответ дан 30 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: