2010-12-12 3 views
6

Codeigniter 위에 웹 사이트 (장바구니 포함)를 개발 중이며 sess_use_database 설정을 사용하여 사용자가 장바구니를 해킹하기가 더 어려워집니다. 세션.Codeigniter - 세션에 대한 데이터베이스 캐싱을 피하는 방법

는 또한 (예 : DB 내용의 대부분은 정기적으로 변경되지 않으므로 '카테고리를 얻을 수')를 일반 DB 요청 속도를 높이기 위해 데이터베이스 캐싱을 사용하려면, 그래서 나는이 설정을 사용할 수 있습니다 :

$db['development']['cache_on'] = TRUE; 
//where 'development' is my environment 

결과, 나는 그 세션의 내용이 요청에 예를 들어, 새로 고칠되지 않습니다 찾는 오전 :

$this->db->cache_off(); 
: 또한

$this->basket_contents = array_values($this->session->userdata('basket_contents')); 

, 나는 이것을 시도

... 세션 요청 전에는 문제가 해결되지 않습니다 (직접 DB 요청이 아니기 때문에 가정합니다).

$config['sess_cookie_name']  = 'str_session'; 
$config['sess_expiration']  = 7200; 
$config['sess_encrypt_cookie'] = FALSE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 

나는 세션 관련 DB 요청의 캐싱을 방지 할 수 다음과 같이

내 세션 setings

은? 또는 특정 테이블이 캐시되지 않도록 하시겠습니까?

또는 내가 생각하지 못한 또 다른 (아마도 명백한) 해결책이 있습니까?

미리 감사드립니다.

답변

3

CodeIgniter 캐싱은 모든 것이 든 아니든 솔루션이므로 개별 테이블에 대해 사용할 수 없습니다.

  • 는 CI의 일반적인 캐싱을 사용하지만, http://philsturgeon.co.uk/code/codeigniter-cache
  • 해킹 db_driver.php 같은 캐시 라이브러리를 사용하지 마십시오

    은 내가 생각할 수있는 두 가지 옵션이 있습니다. 265 행 (CI 1.7.2)에서 캐싱이 사용되는지 여부를 확인합니다. 세션 테이블에서 SELECT 일 때 행을 변경하지 마십시오.

+0

대단히 감사합니다. 첫 번째 옵션부터 시작하겠습니다. – Ade

1

최대 2.2.1 버전에 에서 간단한 해결책이있을 수 있습니다 : "문자열

파일 시스템/라이브러리

/Session.php

찾기 라인 $ 쿼리 = $ this-> CI-> db-> get ($ this-> sess_table_name); " 캐시 로직을 떠나이이 정확한 세션 쿼리에 대한 MySQL의 캐싱을 방지 할 수

// restoring cache_on 
$this->CI->db->cache_on = $cache_on; 

:

// saving cache_on 
$cache_on = $this->CI->db->cache_on; 
$this->CI->db->cache_on = false; 
  • 라인 넣어 후 : 라인 넣어 전에

    1. 그 것처럼.

      이 편집은 프레임 워크 시스템 파일과 관련이 있으므로 CI를 상위 버전으로 업그레이드하면이 해킹이 손실됩니다.

  • 관련 문제